make tests\benchmarks programs compile again
This commit is contained in:
parent
fe855d8ba4
commit
c804b606f9
2 changed files with 34 additions and 34 deletions
|
|
@ -1,31 +1,31 @@
|
||||||
import os
|
import os
|
||||||
import strutils
|
import strutils
|
||||||
|
|
||||||
proc fannkuch (n: int): int =
|
proc fannkuch(n: int): int =
|
||||||
var
|
var
|
||||||
count: seq[int]
|
count: seq[int]
|
||||||
maxFlips = 0
|
maxFlips = 0
|
||||||
m = n-1
|
m = n-1
|
||||||
r = n
|
r = n
|
||||||
check = 0
|
check = 0
|
||||||
perm1: seq[int]
|
perm1: seq[int]
|
||||||
perm: seq[int]
|
perm: seq[int]
|
||||||
|
|
||||||
newSeq (count, n+1)
|
newSeq(count, n+1)
|
||||||
newSeq (perm1, n)
|
newSeq(perm1, n)
|
||||||
newSeq (perm, n)
|
newSeq(perm, n)
|
||||||
for i in 0 .. n-1:
|
for i in 0 .. n-1:
|
||||||
count[i] = i+1
|
count[i] = i+1
|
||||||
perm1[i] = i
|
perm1[i] = i
|
||||||
perm[i] = i
|
perm[i] = i
|
||||||
count[n] = n+1
|
count[n] = n+1
|
||||||
|
|
||||||
while True:
|
while true:
|
||||||
if check < 30:
|
if check < 30:
|
||||||
for i in items (perm1):
|
for i in items(perm1):
|
||||||
write (stdout, $(i+1))
|
write(stdout, $(i+1))
|
||||||
echo ("")
|
echo("")
|
||||||
inc (check)
|
inc(check)
|
||||||
|
|
||||||
while r != 1:
|
while r != 1:
|
||||||
count[r-1] = r
|
count[r-1] = r
|
||||||
|
|
@ -40,8 +40,8 @@ proc fannkuch (n: int): int =
|
||||||
var k = perm[0]
|
var k = perm[0]
|
||||||
while k != 0:
|
while k != 0:
|
||||||
for i in 0 .. (k div 2):
|
for i in 0 .. (k div 2):
|
||||||
swap (perm[i], perm[k-i])
|
swap(perm[i], perm[k-i])
|
||||||
inc (flipsCount)
|
inc(flipsCount)
|
||||||
k = perm[0]
|
k = perm[0]
|
||||||
|
|
||||||
if flipsCount > maxFlips:
|
if flipsCount > maxFlips:
|
||||||
|
|
@ -59,11 +59,11 @@ proc fannkuch (n: int): int =
|
||||||
perm1[i] = perm1[i+1]
|
perm1[i] = perm1[i+1]
|
||||||
perm1[r] = tmp
|
perm1[r] = tmp
|
||||||
|
|
||||||
dec (count[r])
|
dec(count[r])
|
||||||
if count[r] > 0:
|
if count[r] > 0:
|
||||||
break makePerm
|
break makePerm
|
||||||
inc (r)
|
inc(r)
|
||||||
return maxFlips
|
return maxFlips
|
||||||
|
|
||||||
var n = 10
|
var n = 10
|
||||||
echo ("Pfannkuchen(" & $n & ") = " & $fannkuch (n))
|
echo("Pfannkuchen(" & $n & ") = " & $fannkuch(n))
|
||||||
|
|
|
||||||
|
|
@ -21,34 +21,34 @@ proc random(): int32 =
|
||||||
var n = 9999999
|
var n = 9999999
|
||||||
|
|
||||||
var data: seq[int32]
|
var data: seq[int32]
|
||||||
newSeq (data, n)
|
newSeq(data, n)
|
||||||
for i in 0 .. data.high():
|
for i in 0 .. data.high():
|
||||||
data[i] = random()
|
data[i] = random()
|
||||||
|
|
||||||
|
|
||||||
proc `$` (d: seq[int32]): string =
|
proc `$`(d: seq[int32]): string =
|
||||||
result = "[ "
|
result = "[ "
|
||||||
for i in items (d):
|
for i in items(d):
|
||||||
result.addSep (", ", 2)
|
result.addSep(", ", 2)
|
||||||
result.add ($(i and 0xFFFF_FFFF'i64))
|
result.add($(i and 0xFFFF_FFFF'i64))
|
||||||
result.add (" ]")
|
result.add(" ]")
|
||||||
|
|
||||||
# Sort the data
|
# Sort the data
|
||||||
proc sort (start, stop: int) =
|
proc sort(start, stop: int) =
|
||||||
if stop <= start+1:
|
if stop <= start+1:
|
||||||
return
|
return
|
||||||
|
|
||||||
var j = start
|
var j = start
|
||||||
for i in start..stop-2:
|
for i in start..stop-2:
|
||||||
if data[i] <% data[stop-1]:
|
if data[i] <% data[stop-1]:
|
||||||
swap (data[i], data[j])
|
swap(data[i], data[j])
|
||||||
inc (j)
|
inc(j)
|
||||||
swap (data[j], data[stop-1])
|
swap(data[j], data[stop-1])
|
||||||
|
|
||||||
sort (start, j)
|
sort(start, j)
|
||||||
sort (j+1, stop)
|
sort(j+1, stop)
|
||||||
|
|
||||||
sort (0, data.len)
|
sort(0, data.len)
|
||||||
echo (data[n div 2 - 1] and 0xFFFF_FFFF'i64, ", ",
|
echo(data[n div 2 - 1] and 0xFFFF_FFFF'i64, ", ",
|
||||||
data[n div 2] and 0xFFFF_FFFF'i64, ", ",
|
data[n div 2] and 0xFFFF_FFFF'i64, ", ",
|
||||||
data[n div 2 + 1] and 0xFFFF_FFFF'i64)
|
data[n div 2 + 1] and 0xFFFF_FFFF'i64)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue