Un taulell màgic d’ordre és una matriu de lletres de forma que a cada fila i a cada columna hi apareix una paraula del diccionari i que les mateixes paraules es llegeixen horitzontalment i verticalment. Per exemple, a continuació es dónen diversos taulells màgics d’ordre tres a vuit en anglès:
B I T C A R D H E A R T G A R T E R B R A V A D O L A T E R A L S
I C E A R E A E M B E R A V E R S E R E N A M E D A X O N E M A L
T E N R E A R A B U S E R E C I T E A N A L O G Y T O E P L A T E
D A R T R E S I N T R I B A L V A L U E R S E N P L A N E D
T R E N D E S T A T E A M O E B A S R E L A N D E D
R E E L E D D E G R A D E A M A N D I N E
O D Y S S E Y L A T E E N E R
S L E D D E R S
Feu un programa que llegeixi un diccionari i digui si diverses matrius de caràcters són o no taulells màgics.
L’entrada té dues parts:
La primera part és un diccionari de paraules. Primer, es dóna el valor de . A continuació, venen les paraules del diccionari (totes en majúscules) en ordre lexicogràfic.
La segona part són diverses matrius de caràcters. Cada matriu comença amb un enter que en dóna el seu nombre de files i columnes i continua amb caràcters (tots lletres majúscules) disposats en files i columnes. El valor indica el final de l’entrada.
Per a cada matriu de l’entrada, cal escriure “@SI@” si forma un taulell màgic utilitzant algunes de les paraules del diccionari i cal escriure “@NO@” altrament.
En els jocs de proves privats s’utilitza un diccionari derivat de @/usr/share/dict/words@ amb unes quatre centes mil paraules i es proven un miler de matrius.
Input
10 AREA BETTER BIT CARD DART HELLO ICE REAR TEN THE 3 BIT ICE TEN 4 CARD AREA REAR DART 3 THE HIS ESA 3 THE THE THE 0
Output
SI SI NO NO