1234567891011121314151617181920212223242526272829303132 |
- #!/usr/bin/ruby
- #
- ## https://rosettacode.org/wiki/Perfect_shuffle
- #
- func perfect_shuffle(deck) {
- var mid = deck.len/2;
- [deck.part(mid)].zip.flatten
- }
- [8, 24, 52, 100].each { |size|
- var deck = size.of { _ };
- var shuffled = deck;
- var n = 0;
- loop {
- ++n;
- shuffled = perfect_shuffle(shuffled);
- shuffled.each_index { |i|
- shuffled[i] == deck[i] || goto :NEXT;
- }
- break;
- @:NEXT;
- }
- printf("%5d cards: %4d\n", size, n);
- }
|