fork download
  1. <?php
  2.  
  3. print_r(generate_bingo_card());
  4. exit(0);
  5.  
  6. final class conf
  7. {
  8. const bingo_number_min = 1;
  9. const bingo_number_max = 100;
  10. const bingo_size = 5;
  11. const bingo_free = true;
  12. }
  13.  
  14. function mt_shuffle(Array &$a)
  15. {
  16. $p = function($p, $q)
  17. { return mt_rand() - (mt_getrandmax() >> 1); };
  18. return usort($a, $p);
  19. }
  20.  
  21. function generate_bingo_card()
  22. {
  23. // generate a cell numbers
  24. $bingo_numbers = range
  25. ( conf::bingo_number_min
  26. , conf::bingo_number_max
  27. );
  28. mt_shuffle($bingo_numbers);
  29. $bingo_size_sq = conf::bingo_size * conf::bingo_size;
  30. $card_numbers = array_slice
  31. ( $bingo_numbers
  32. , 0
  33. , $bingo_size_sq
  34. );
  35.  
  36. // define cell coordinate generators
  37. $fa = function($a){ return $a % conf::bingo_size ; };
  38. $fb = function($b){ return (int)($b / conf::bingo_size); };
  39.  
  40. // generate cells
  41. $card = array_map
  42. ( null
  43. , array_map($fa, range(0, $bingo_size_sq - 1))
  44. , array_map($fb, range(0, $bingo_size_sq - 1))
  45. , $card_numbers
  46. );
  47.  
  48. // set free cell
  49. if(conf::bingo_free)
  50. $card[$bingo_size_sq >> 1][2] = 0;
  51.  
  52. return $card;
  53. }
Success #stdin #stdout 0.01s 20568KB
stdin
Standard input is empty
stdout
Array
(
    [0] => Array
        (
            [0] => 0
            [1] => 0
            [2] => 77
        )

    [1] => Array
        (
            [0] => 1
            [1] => 0
            [2] => 34
        )

    [2] => Array
        (
            [0] => 2
            [1] => 0
            [2] => 3
        )

    [3] => Array
        (
            [0] => 3
            [1] => 0
            [2] => 97
        )

    [4] => Array
        (
            [0] => 4
            [1] => 0
            [2] => 28
        )

    [5] => Array
        (
            [0] => 0
            [1] => 1
            [2] => 96
        )

    [6] => Array
        (
            [0] => 1
            [1] => 1
            [2] => 85
        )

    [7] => Array
        (
            [0] => 2
            [1] => 1
            [2] => 74
        )

    [8] => Array
        (
            [0] => 3
            [1] => 1
            [2] => 53
        )

    [9] => Array
        (
            [0] => 4
            [1] => 1
            [2] => 31
        )

    [10] => Array
        (
            [0] => 0
            [1] => 2
            [2] => 49
        )

    [11] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 10
        )

    [12] => Array
        (
            [0] => 2
            [1] => 2
            [2] => 0
        )

    [13] => Array
        (
            [0] => 3
            [1] => 2
            [2] => 86
        )

    [14] => Array
        (
            [0] => 4
            [1] => 2
            [2] => 26
        )

    [15] => Array
        (
            [0] => 0
            [1] => 3
            [2] => 16
        )

    [16] => Array
        (
            [0] => 1
            [1] => 3
            [2] => 42
        )

    [17] => Array
        (
            [0] => 2
            [1] => 3
            [2] => 54
        )

    [18] => Array
        (
            [0] => 3
            [1] => 3
            [2] => 59
        )

    [19] => Array
        (
            [0] => 4
            [1] => 3
            [2] => 89
        )

    [20] => Array
        (
            [0] => 0
            [1] => 4
            [2] => 9
        )

    [21] => Array
        (
            [0] => 1
            [1] => 4
            [2] => 95
        )

    [22] => Array
        (
            [0] => 2
            [1] => 4
            [2] => 91
        )

    [23] => Array
        (
            [0] => 3
            [1] => 4
            [2] => 72
        )

    [24] => Array
        (
            [0] => 4
            [1] => 4
            [2] => 83
        )

)