Deal_cards_for_FreeCell.md 1.2 KB

Deal cards for FreeCell

sub dealgame ($game-number = 1) {
    sub ms-lcg-method($seed = $game-number) { ( 214013 * $seed + 2531011 )ย % 2**31 }

    # lazy list of the random sequence
    my @ms-lcg = |(&ms-lcg-method ... *).map: * +> 16;

    constant CardBlock = '๐Ÿ‚ '.ord;
    my @deck = gather for flat(1..11,13,14) X+ (48,32...0) -> $off {
        take chr CardBlock + $off;
    }

    my @game = gather while @deck {
        @deck[@ms-lcg.shiftย % @deck, @deck-1] .= reverse;
        take @deck.pop;
    }

    say "Game #$game-number";
    say @game.splice(0, 8 min +@game) while @game;
}

dealgame;
dealgame 617;

Output:

Game #1
๐Ÿƒ‹ ๐Ÿƒ‚ ๐Ÿ‚น ๐Ÿƒ› ๐Ÿƒ… ๐Ÿ‚ท ๐Ÿƒ— ๐Ÿ‚ต
๐ŸƒŽ ๐Ÿƒž ๐Ÿ‚ฉ ๐Ÿ‚ฅ ๐Ÿƒ ๐Ÿƒ ๐Ÿ‚พ ๐Ÿ‚ณ
๐Ÿ‚ข ๐Ÿ‚ฎ ๐Ÿƒ‰ ๐Ÿƒ ๐Ÿ‚ซ ๐Ÿ‚ก ๐Ÿ‚ฑ ๐Ÿƒ“
๐Ÿƒ” ๐Ÿƒ• ๐Ÿ‚ช ๐Ÿ‚ฝ ๐Ÿ‚ด ๐Ÿƒ‘ ๐Ÿƒ„ ๐Ÿ‚ง
๐Ÿ‚ฃ ๐ŸƒŠ ๐Ÿ‚ค ๐Ÿ‚บ ๐Ÿ‚ธ ๐Ÿƒ’ ๐Ÿ‚ป ๐Ÿƒ‡
๐Ÿƒ† ๐Ÿ‚จ ๐Ÿƒˆ ๐Ÿ‚ญ ๐Ÿƒ– ๐Ÿƒƒ ๐Ÿƒ˜ ๐Ÿƒš
๐Ÿ‚ฆ ๐Ÿƒ™ ๐Ÿ‚ฒ ๐Ÿ‚ถ
Game #617
๐Ÿƒ‡ ๐Ÿƒ ๐Ÿƒ• ๐Ÿ‚ฃ ๐Ÿ‚ฅ ๐Ÿƒ˜ ๐Ÿƒ‚ ๐Ÿ‚ฑ
๐ŸƒŠ ๐Ÿ‚ง ๐Ÿƒ ๐Ÿƒ‘ ๐Ÿƒ† ๐Ÿ‚ธ ๐Ÿ‚ก ๐Ÿ‚พ
๐Ÿ‚บ ๐Ÿƒ ๐Ÿ‚ณ ๐Ÿƒ‰ ๐Ÿ‚ฆ ๐Ÿƒˆ ๐Ÿƒƒ ๐Ÿƒš
๐ŸƒŽ ๐Ÿ‚ต ๐Ÿ‚ฉ ๐Ÿƒ“ ๐Ÿ‚จ ๐Ÿ‚ท ๐Ÿƒ„ ๐Ÿ‚ซ
๐Ÿƒ” ๐Ÿ‚ญ ๐Ÿƒ™ ๐Ÿ‚น ๐Ÿƒ— ๐Ÿ‚ถ ๐Ÿƒ’ ๐Ÿ‚ข
๐Ÿ‚ค ๐Ÿ‚ช ๐Ÿ‚ฒ ๐Ÿƒ… ๐Ÿƒ› ๐Ÿƒ– ๐Ÿ‚ป ๐Ÿ‚ฝ
๐Ÿƒ‹ ๐Ÿ‚ฎ ๐Ÿƒž ๐Ÿ‚ด