Data update
This commit is contained in:
parent
ed705008a8
commit
0df55f9f24
2196 changed files with 32999 additions and 3075 deletions
|
|
@ -0,0 +1,14 @@
|
|||
10 I$ = "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW"
|
||||
20 GOSUB 100ENCODE
|
||||
30 GOSUB 200DECODE
|
||||
40 PRINT "INPUT: ";I$
|
||||
50 PRINT "OUTPUT: ";
|
||||
60 GOSUB 250 PRINT
|
||||
70 END
|
||||
100 O$ = MID$ (I$,1,1):N$ = MID$ ( CHR$ (0),1, LEN (O$)): IF LEN (I$) < 2 THEN RETURN
|
||||
110 FOR I = 2 TO LEN (I$):C$ = MID$ (I$,I,1): IF C$ < > RIGHT$ (O$,1) THEN O$ = O$ + C$:N$ = N$ + CHR$ (0): NEXT I: RETURN
|
||||
120 N$ = MID$ (N$,1, LEN (O$) - 1) + CHR$ ( ASC ( MID$ (N$, LEN (O$))) + 1): NEXT I: RETURN
|
||||
200 I$ = "": IF LEN (O$) THEN FOR I = 1 TO LEN (O$): FOR J = 0 TO ASC ( MID$ (N$,I)):I$ = I$ + MID$ (O$,I,1): NEXT J,I
|
||||
210 RETURN
|
||||
250 IF LEN (O$) THEN FOR I = 1 TO LEN (O$): PRINT ASC ( MID$ (N$,I)) + 1; MID$ (O$,I,1);: NEXT I
|
||||
260 RETURN
|
||||
|
|
@ -10,7 +10,7 @@ singleton compressor
|
|||
auto tb := new TextBuilder();
|
||||
int count := 0;
|
||||
char current := s[0];
|
||||
s.forEach:(ch)
|
||||
s.forEach::(ch)
|
||||
{
|
||||
if (ch == current)
|
||||
{
|
||||
|
|
@ -34,7 +34,7 @@ singleton compressor
|
|||
auto tb := new TextBuilder();
|
||||
char current := $0;
|
||||
var a := new StringWriter();
|
||||
s.forEach:(ch)
|
||||
s.forEach::(ch)
|
||||
{
|
||||
current := ch;
|
||||
if (current.isDigit())
|
||||
|
|
|
|||
|
|
@ -0,0 +1,78 @@
|
|||
local fn encode( string as CFStringRef) as CFStringRef
|
||||
CFStringRef ch, s, t
|
||||
Short i, rl
|
||||
s = @"" // Initalize the output string
|
||||
for i = 0 to len( string ) - 1 // Encode string char by char
|
||||
ch = mid( string, i, 1) // Read character at index
|
||||
rl = 1 // Start run-length counter
|
||||
while fn StringIsEqual( mid( string, i + rl, 1), ch )
|
||||
rl ++ // Same char, so increase counter
|
||||
wend
|
||||
if rl == 1 then t = @"" else t = fn StringWithFormat( @"%d", rl ) // Counter as string, don't encode 1's
|
||||
t = fn StringByAppendingString( t, ch ) // Add character
|
||||
s = fn StringByAppendingString( s, t ) // Add to already encoded string
|
||||
i += rl - 1 // Move index
|
||||
next
|
||||
print s
|
||||
end fn
|
||||
|
||||
|
||||
local fn decode( string as CFStringRef )
|
||||
CFStringRef ch, s, t // character, outputstring, temporary string
|
||||
Short i, rl // index, run length
|
||||
s = @"" // Initalize the output string
|
||||
for i = 0 to len( string ) - 1 // Decode input string char by char
|
||||
ch = mid( string, i, 1 ) // Read character at index
|
||||
if intval( ch ) == 0 // Not a digit
|
||||
rl = 1
|
||||
else
|
||||
rl = intval( mid( string, i ) ) // Read run-length
|
||||
i += fix( log10( rl ) + 1 ) // Move index past digits
|
||||
ch = mid( string, i, 1 ) // Read character after run length
|
||||
end if
|
||||
t = fn StringByPaddingToLength( ch, rl, ch, 0 ) // Assemble temp string
|
||||
s = fn StringByAppendingString( s, t ) // Add to decoded string
|
||||
next
|
||||
print s
|
||||
end fn
|
||||
|
||||
|
||||
local fn decode2D( string as CFStringRef ) // For Conway's Game of Life objects
|
||||
Boolean a(500, 500) // Or larger to hold bigger life forms
|
||||
CFStringRef ch
|
||||
Short i, j, rl, f // Decoded char
|
||||
Short v = 0, w = 0, x = 0, y = 0 // Temp width, max width, array coordinates
|
||||
for i = 0 to len( string ) - 2 // Final char is always !
|
||||
ch = mid( string, i, 1 )
|
||||
if intval( ch ) == 0
|
||||
rl = 1
|
||||
else
|
||||
rl = intval( mid( string, i ) )
|
||||
i += fix( log10( rl ) + 1 )
|
||||
ch = mid( string, i, 1 )
|
||||
end if
|
||||
select ch // Decode character as:
|
||||
case @"$" : f = -1 // - new line
|
||||
case @"b" : f = 0 // - dead
|
||||
case @"o" : f = 1 // - live
|
||||
case else : // Ignore
|
||||
end select
|
||||
for j = 1 to rl // Fill array with run of chars
|
||||
if f = -1
|
||||
x = 0 : y ++ : v = 0 // New line
|
||||
else
|
||||
a(x, y) = f
|
||||
x ++ : v ++ : if v > w then w = v
|
||||
end if
|
||||
next
|
||||
next
|
||||
for j = 0 to y : for i = 0 to w - 1
|
||||
print a(i, j);
|
||||
next : print : next
|
||||
end fn
|
||||
|
||||
fn decode( @"12W1B12W3B24W1B14W" ) // Assignment
|
||||
fn encode( @"WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW" )
|
||||
fn decode2D( @"bo$2bo$3o!" ) // Glider
|
||||
|
||||
handleevents // Join Mac event loop
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
import "/pattern" for Pattern
|
||||
import "./pattern" for Pattern
|
||||
|
||||
var p = Pattern.new("/u") // match any upper case letter
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue