Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
44
Task/Perfect-shuffle/FreeBASIC/perfect-shuffle.basic
Normal file
44
Task/Perfect-shuffle/FreeBASIC/perfect-shuffle.basic
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
function is_in_order( d() as uinteger ) as boolean
|
||||
'tests if a deck is in order
|
||||
for i as uinteger = lbound(d) to ubound(d)-1
|
||||
if d(i) > d(i+1) then return false
|
||||
next i
|
||||
return true
|
||||
end function
|
||||
|
||||
sub init_deck( d() as uinteger )
|
||||
for i as uinteger = 1 to ubound(d)
|
||||
d(i) = i
|
||||
next i
|
||||
return
|
||||
end sub
|
||||
|
||||
sub shuffle( d() as uinteger )
|
||||
'does a faro shuffle of the deck
|
||||
dim as integer n = ubound(d), i
|
||||
dim as integer b( 1 to n )
|
||||
for i = 1 to n/2
|
||||
b(2*i-1) = d(i)
|
||||
b(2*i) = d(n/2+i)
|
||||
next i
|
||||
for i = 1 to n
|
||||
d(i) = b(i)
|
||||
next i
|
||||
return
|
||||
end sub
|
||||
|
||||
function shufs_needed( size as integer ) as uinteger
|
||||
dim as uinteger d(1 to size), s = 0
|
||||
init_deck(d())
|
||||
do
|
||||
shuffle(d())
|
||||
s+=1
|
||||
if is_in_order(d()) then exit do
|
||||
loop
|
||||
return s
|
||||
end function
|
||||
|
||||
dim as uinteger tests(1 to 7) = {8, 24, 52, 100, 1020, 1024, 10000}, i
|
||||
for i = 1 to 7
|
||||
print tests(i);" cards require "; shufs_needed(tests(i)); " shuffles."
|
||||
next i
|
||||
Loading…
Add table
Add a link
Reference in a new issue