Jump to content

Perfect shuffle: Difference between revisions

(Added Delphi example)
Line 1,508:
ReadChar
END PerfectShuffle.</lang>
{{out}}
<pre>8: 3
24: 11
52: 8
100: 30
1020: 1018
1024: 10
10000: 300</pre>
 
=={{header|Nim}}==
<lang Nim>import sequtils
 
proc newValList(size: Positive): seq[int] =
if (size and 1) != 0:
raise newException(ValueError, "size must be even.")
result = toSeq(1..size)
 
 
func shuffled(list: seq[int]): seq[int] =
result.setLen(list.len)
let half = list.len div 2
for i in 0..<half:
result[2 * i] = list[i]
result[2 * i + 1] = list[half + i]
 
 
for size in [8, 24, 52, 100, 1020, 1024, 10000]:
let initList = newValList(size)
var valList = initList
var count = 0
while true:
inc count
valList = shuffled(valList)
if valList == initList:
break
echo size, ": ", count</lang>
 
{{out}}
<pre>8: 3
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.