Here's an example board: http://pastebin.com/raw.php?i=1PGPRQ2G
- The board array (aka "bingoList"), containing all the level arrays.
- 25 level arrays, each representing the length of the goal on a scale of 1-25 (so goals in bingoList are the shortest and those in bingoList are the longest).
- Some number of goal objects containing a "name" string and "types" array. Each level can contain any number of goals.
On Types: An array of arbitrary strings. They can be anything you set, as they are only used for calculating row synergy with other goals. Goals that have matching types are much less likely to appear in the same row. The more types in common the less chance of them appearing together.
On Levels: Each goal is assigned a level between 1 and 25. The idea is that these loosely correlate to length/difficulty, and the algorithm tries to average out the levels of each row to minimize cases of some rows being obviously way better than others.
On Short/Normal/Long Bingo: Basically, short bingo simply refocuses the algorithm to return goals in lower levels (same with long bingo and high level goals). If you do not have enough goals to distribute these well, it may be wise to request to have the short/long buttons removed.
On Number of Goals: Obviously a board requires a minimum of 25 goals to function. However, with only 25 every board would have the same goals. 50 is an acceptable starting point, but 100 is recommended. Note that the most popular bingo's often have upwards of 200. **Coming up with good goals and assigning types and levels properly is a long and difficult process, and should be done with as many runners as possible.**