Data update
This commit is contained in:
parent
4d5544505c
commit
4924dd0264
3073 changed files with 55820 additions and 4408 deletions
81
Task/Perfect-shuffle/FutureBasic/perfect-shuffle.basic
Normal file
81
Task/Perfect-shuffle/FutureBasic/perfect-shuffle.basic
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
//
|
||||
// Perfect Shuffle
|
||||
//
|
||||
// FutureBasic 7.0.34, August 2025 R.W
|
||||
// uses MDA arrays
|
||||
|
||||
_deck = 1 //the MDA tag for the deck array
|
||||
_shuffled = 2 //the MDA tag for shuffled deck
|
||||
|
||||
Window 1
|
||||
|
||||
//
|
||||
// fill MDA des array with
|
||||
// number from 1 to n
|
||||
void local fn fillDeck(des as Int, n as Int)
|
||||
Int x
|
||||
mda_clear des
|
||||
for x = 1 to n
|
||||
mda des(x) = x
|
||||
next x
|
||||
end fn
|
||||
|
||||
//
|
||||
// check if deck in MDA tag array
|
||||
// is in order
|
||||
|
||||
local fn inOrder (tag as Int,siz as Int) as boolean
|
||||
boolean isInOrder = _True
|
||||
int x, lo, hi
|
||||
for x = 1 to siz - 1
|
||||
lo = mda tag(x)
|
||||
hi = mda tag(x + 1)
|
||||
if lo > hi then return _False
|
||||
next x
|
||||
end fn = isInOrder
|
||||
|
||||
//
|
||||
// faro out shuffle
|
||||
// the deck is halves then both halves interweaved 1 by 1
|
||||
|
||||
local fn faroShuffle(src as Int, des as Int, n as Int)
|
||||
Int i
|
||||
mda_clear des
|
||||
// uses temporary shuffled deck array
|
||||
for i = 1 to n/2
|
||||
mda des(2 * i - 1) = mda src(i)
|
||||
mda des(2 * i) = mda src( n / 2 + i)
|
||||
next i
|
||||
for i = 1 to n //put it back
|
||||
mda src(i) = mda des(i)
|
||||
next i
|
||||
end fn
|
||||
|
||||
// shuffles needed for a perfect
|
||||
// shuffle given siz
|
||||
|
||||
local fn neededShuffle(siz as Int) as Int
|
||||
Int s
|
||||
s = 0
|
||||
fn fillDeck(_deck, siz)
|
||||
do
|
||||
fn faroShuffle (_deck, _shuffled, siz)
|
||||
s++
|
||||
until fn inOrder(_deck, siz) == _True
|
||||
end fn = s
|
||||
|
||||
window 1,@"Perfect Shuffle"
|
||||
|
||||
Int testData(7) = {0, 8, 24, 52, 100, 1020, 1024, 10000}
|
||||
|
||||
print "CARDS SHUFFLES"
|
||||
print "-------------------"
|
||||
|
||||
Int x, k
|
||||
for x = 1 to 7
|
||||
print using "##### ";testData(x); "needs "; ¬
|
||||
fn neededShuffle(testData(x))
|
||||
next x
|
||||
|
||||
handleEvents
|
||||
//
|
||||
Loading…
Add table
Add a link
Reference in a new issue