Data update

This commit is contained in:
Ingy döt Net 2024-10-16 18:07:41 -07:00
parent 81fd053722
commit 52a6ef48dd
10248 changed files with 63654 additions and 6775 deletions

View file

@ -0,0 +1,54 @@
func[] kolakoski arr[] lng .
len s[] lng
i = 1
k = 1
repeat
s[i] = arr[k mod1 len arr[]]
if s[k] > 1
for j to s[k] - 1
i += 1
if i > lng
return s[]
.
s[i] = s[i - 1]
.
.
i += 1
until i > lng
k += 1
.
return s[]
.
func pos_kolakoski arr[] .
prev = arr[1]
cnt = 1
for i = 2 to len arr[]
if arr[i] = prev
cnt += 1
else
rle[] &= cnt
cnt = 1
prev = arr[i]
.
.
for i to len rle[]
if rle[i] <> arr[i]
return 0
.
.
return 1
.
ias[][] = [ [ 1 2 ] [ 2 1 ] [ 1 3 1 2 ] [ 1 3 2 1 ] ]
lngs[] = [ 20 20 30 30 ]
for i to len ias[][]
kol[] = kolakoski ias[i][] lngs[i]
print "First " & lngs[i] & " members of the sequence generated by " & ias[i][] & ":"
print kol[]
write "Possible Kolakoski sequence? "
if pos_kolakoski kol[] = 1
print "Yes"
else
print "No"
.
print ""
.

View file

@ -0,0 +1,103 @@
Sub Kolakoski(c() As Integer, slen As Integer, s() As Integer)
Redim s(slen - 1)
Dim As Integer i, k, j
i = 0: k = 0
Do
s(i) = c(k Mod (Ubound(c) + 1))
If s(k) > 1 Then
For j = 1 To s(k) - 1
i += 1
If i = slen Then Exit Sub
s(i) = s(i - 1)
Next
End If
i += 1
If i = slen Then Exit Sub
k += 1
Loop
End Sub
Function possibleKolakoski(s() As Integer) As Boolean
Dim As Integer i, slen, prev, cnt
Dim As Integer rle()
slen = Ubound(s) + 1
prev = s(0)
cnt = 1
For i = 1 To slen - 1
If s(i) = prev Then
cnt += 1
Else
Redim Preserve rle(Ubound(rle) + 1)
rle(Ubound(rle)) = cnt
cnt = 1
prev = s(i)
End If
Next
For i = 0 To Ubound(rle)
If rle(i) <> s(i) Then Return False
Next
Return True
End Function
Dim As Integer slens(3) = {20, 20, 30, 30}
Dim As Integer j, ia, slen, i = 0
Dim As Integer kol()
Dim As Boolean p
Dim As String poss
Dim As Integer ias1(1, 1) = {{1, 2}, {2, 1}}
For ia = 0 To Ubound(ias1)
slen = slens(i)
Dim As Integer iaArray(Ubound(ias1, 2))
For j = 0 To Ubound(ias1, 2)
iaArray(j) = ias1(ia, j)
Next
Kolakoski(iaArray(), slen, kol())
Print "First "; slen; " members of the sequence generated by [";
For j = 0 To Ubound(iaArray)
Print iaArray(j);
Next
Print " ]:"
Print "[";
For j = 0 To Ubound(kol)
Print kol(j);
Next
Print "]"
p = possibleKolakoski(kol())
poss = Iif(p, "Yes", "No")
Print "Possible Kolakoski sequence? "; poss
Print
i += 1
Next
Dim As Integer ias2(1, 3) = {{1, 3, 1, 2}, {1, 3, 2, 1}}
For ia = 0 To Ubound(ias2)
slen = slens(i)
Dim As Integer iaArray(Ubound(ias2, 2))
For j = 0 To Ubound(ias2, 2)
iaArray(j) = ias2(ia, j)
Next
Kolakoski(iaArray(), slen, kol())
Print "First "; slen; " members of the sequence generated by [";
For j = 0 To Ubound(iaArray)
Print iaArray(j);
Next
Print !" ]:\n[";
For j = 0 To Ubound(kol)
Print kol(j);
Next
Print "]"
p = possibleKolakoski(kol())
poss = Iif(p, "Yes", "No")
Print "Possible Kolakoski sequence? "; poss
Print
i += 1
Next
Sleep