Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
23
Task/Fusc-sequence/Nim/fusc-sequence-1.nim
Normal file
23
Task/Fusc-sequence/Nim/fusc-sequence-1.nim
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
import strformat
|
||||
|
||||
func fusc(n: int): int =
|
||||
if n == 0 or n == 1:
|
||||
n
|
||||
elif n mod 2 == 0:
|
||||
fusc(n div 2)
|
||||
else:
|
||||
fusc((n - 1) div 2) + fusc((n + 1) div 2)
|
||||
|
||||
echo "The first 61 Fusc numbers:"
|
||||
for i in 0..61:
|
||||
write(stdout, fmt"{fusc(i)} ")
|
||||
echo "\n\nThe Fusc numbers whose lengths are greater than those of previous Fusc numbers:"
|
||||
echo fmt" n fusc(n)"
|
||||
echo "--------- ---------"
|
||||
var maxLength = 0
|
||||
for i in 0..700_000:
|
||||
var f = fusc(i)
|
||||
var length = len($f)
|
||||
if length > maxLength:
|
||||
maxLength = length
|
||||
echo fmt"{i:9} {f:9}"
|
||||
51
Task/Fusc-sequence/Nim/fusc-sequence-2.nim
Normal file
51
Task/Fusc-sequence/Nim/fusc-sequence-2.nim
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
import deques, strformat
|
||||
|
||||
|
||||
iterator fusc(): int =
|
||||
var q = [1].toDeque()
|
||||
yield 0
|
||||
yield 1
|
||||
|
||||
while true:
|
||||
var val = q.popFirst()
|
||||
q.addLast(val)
|
||||
yield val
|
||||
|
||||
val += q[0]
|
||||
q.addLast(val)
|
||||
yield val
|
||||
|
||||
|
||||
iterator longestFusc(): tuple[idx, val: int] =
|
||||
var sofar = 0
|
||||
var i = -1
|
||||
for f in fusc():
|
||||
inc i
|
||||
if f >= sofar:
|
||||
yield (i, f)
|
||||
sofar = if sofar == 0: 10 else: 10 * sofar
|
||||
|
||||
|
||||
#———————————————————————————————————————————————————————————————————————————————————————————————————
|
||||
|
||||
const
|
||||
MaxFusc = 61
|
||||
LongestCount = 7
|
||||
|
||||
echo &"First {MaxFusc}:"
|
||||
var i = -1
|
||||
for f in fusc():
|
||||
inc i
|
||||
stdout.write f
|
||||
if i == MaxFusc:
|
||||
echo ""
|
||||
break
|
||||
stdout.write ' '
|
||||
|
||||
echo "\nLength records:"
|
||||
var count = 0
|
||||
for (i, f) in longestFusc():
|
||||
inc count
|
||||
echo &"fusc({i}) = {f}"
|
||||
if count == LongestCount:
|
||||
break
|
||||
Loading…
Add table
Add a link
Reference in a new issue