Given input n
, produce a word grid of size n
, in as few bytes as possible.
Details
The number provided will always be odd. The centre square of the grid must always be empty (a space character). The letters that fill the grid must be chosen at random from the English Scrabble letter distribution of letters. That is, each tile must be chosen at random, with uniform probability, from the following 100 characters:
??EEEEEEEEEEEEAAAAAAAAAIIIIIIIIIOOOOOOOONNNNNNRRRRRRTTTTTTLLLLSSSSUUUUDDDDGGGBBCCMMPPFFHHVVWWYYKJXQZ
where ?
denotes blank tiles.
As with a Scrabble board, some tiles in this board will also be bonus tiles for a higher score. These tiles are only visible on a board with a size of 9 or more. and should be visible every 3 rows from the centre square in a pattern emanating outwards, but should never appear on the outermost letters. Bonus squares are denoted using lowercase letters, with blank tiles identified as !
instead of ?
. Please see this visual demonstration or the reference implementation for more examples on how to correctly distribute bonus tiles.
Examples
Input: 5
Output:
VNZNT
IFOSN
UD VD
ZIOO?
KTLED
Input: 9
Output:
UWDESTKPW
ItDBaDEdI
TERMDYSTR
ROANJLEFT
EkCI OOsT
IPAJPGM?Y
MZLORETVI
G!EGgPUeI
MNROYOEER
Rules
This is code-golf so the shortest code in bytes wins.
- Any reasonable format can be used for I/O, assuming it is consistent.
- You should be able to handle grids at least up to 999.
- All standard loopholes are forbidden.