Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
30
Task/Recamans-sequence/11l/recamans-sequence.11l
Normal file
30
Task/Recamans-sequence/11l/recamans-sequence.11l
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
F recamanSucc(seen, n, r)
|
||||
‘The successor for a given Recaman term,
|
||||
given the set of Recaman terms seen so far.’
|
||||
V back = r - n
|
||||
R I 0 > back | (back C seen) {n + r} E back
|
||||
|
||||
F recamanUntil(p)
|
||||
‘All terms of the Recaman series before the
|
||||
first term for which the predicate p holds.’
|
||||
V n = 1
|
||||
V r = 0
|
||||
V rs = [r]
|
||||
V seen = Set(rs)
|
||||
V blnNew = 1B
|
||||
L !p(seen, n, r, blnNew)
|
||||
r = recamanSucc(seen, n, r)
|
||||
blnNew = r !C seen
|
||||
seen.add(r)
|
||||
rs.append(r)
|
||||
n = 1 + n
|
||||
R rs
|
||||
|
||||
F enumFromTo(m)
|
||||
‘Integer enumeration from m to n.’
|
||||
R n -> @m .< 1 + n
|
||||
|
||||
print("First 15 Recaman:\n "recamanUntil((seen, n, r, _) -> n == 15))
|
||||
print("First duplicated Recaman:\n "recamanUntil((seen, n, r, blnNew) -> !blnNew).last)
|
||||
V setK = Set(enumFromTo(0)(1000))
|
||||
print("Number of Recaman terms needed to generate all integers from [0..1000]:\n "(recamanUntil((seen, n, r, blnNew) -> (blnNew & r < 1001 & :setK.is_subset(seen))).len - 1))
|
||||
Loading…
Add table
Add a link
Reference in a new issue