El Nonograma és un puzzle de lògica en que les cel·les d’una graella s’han d’omplir o deixar en blanc tenint compte els nombres que hi ha al costat de la figura per tal de mostrar un dibuix amagat.
Tens un tauler de nonograma de
files i
columnes. Cada fila i cada columna té unes pistes (una
seqüència de nombres) que indiquen les longituds dels blocs consecutius
de cel·les plenes (X) que hi han d’aparèixer, en el mateix
ordre i separats, com a mínim, per una cel·la buida
(.).
Has de fer un programa que simuli una partida amb una interfície textual:
Inicialment, totes les cel·les del tauler estan buides
(.).
Després de llegir les pistes, s’ha de mostrar el tauler inicial.
A continuació es llegeixen ordres (una per línia) fins que:
l’usuari escriu Z (acaba la partida), o
el tauler compleix totes les pistes (victòria).
Les ordres possibles són:
A f cMarca la cel·la
com a plena (X). Si ja era X, no canvia
res.
B f1 c1 f2 c2Marca com a X totes les cel·les del rectangle delimitat
per
(cantonada superior esquerra) i
(cantonada inferior dreta).
E f cDeixa la cel·la
buida (.). Si ja era ., no canvia res.
F f1 c1 f2 c2Deixa buides (.) totes les cel·les del rectangle
delimitat per
i
.
RReinicia el tauler a l’estat inicial (tot .) i posa el
comptador de moviments a
.
SMostra el tauler en el format especificat a la secció de sortida.
ZFinalitza la partida.
Només compten com a moviments les ordres A,
B, E i F. L’ordre R
reinicia el comptador a
.
Les ordres S i Z no compten.
El tauler és correcte si, per a cada fila i cada
columna, la seqüència de longituds dels blocs consecutius de
X coincideix exactament amb la seva pista. Si una pista té
blocs, vol dir que aquella fila/columna no pot contenir cap
X.
Quan s’assoleix la victòria després d’una ordre A,
B, E o F, s’ha de mostrar el
tauler (encara que no s’hagi demanat amb S), escriure el
missatge de victòria i el nombre de moviments, i acabar.
L’entrada té el format següent:
Primera línia: dos enters i ().
Tot seguit, línies amb les pistes de les files. Cada línia comença amb un enter (nombre de blocs) i continua amb enters ( pot ser ).
Tot seguit, línies amb les pistes de les columnes. Cada línia comença amb un enter i continua amb enters ( pot ser ).
Finalment, una seqüència d’ordres, una per línia, fins que
apareix Z o fins a la victòria.
Nota: Pots suposar que totes les ordres són correctes i que els índexs de files i columnes que apareixen a les ordres són vàlids (les files i columnes es numeren des de ).
Primer s’ha d’escriure el tauler inicial i, després, cada vegada que
es rebi una ordre S, s’ha de tornar a escriure el
tauler.
El tauler s’imprimeix així:
Capçalera amb els números de columna ( a ) en camps d’amplada (alineats a la dreta) precedits per espais.
Una línia separadora amb
espais i després
guionets (-).
Per a cada fila :
el número de fila en un camp d’amplada (alineat a la dreta),
espai, ,
les
cel·les separades per dos espais (cada cel·la és .
o X),
espai, ,
espai i la pista de la fila (els nombres separats per un espai). Si la pista té blocs, no s’escriu cap nombre.
Una altra línia separadora igual.
A sota, les pistes de les columnes impreses en línies, on és el màxim nombre de blocs entre totes les columnes. Les pistes s’imprimeixen alineades a dalt: a la línia (), per a cada columna s’escriu el seu -è bloc si existeix, en un camp d’amplada ; en cas contrari, s’escriuen espais. Cada línia comença amb espais.
Quan el joc acaba:
Si acaba per victòria, després d’imprimir el tauler final s’escriu:
Enhorabona! Has resolt el nonograma.
Nombre de moviments: X
Si acaba per l’ordre Z, s’escriu:
Has sortit del joc. Fins aviat!
Nombre de moviments: X
on X és el nombre total de moviments comptats segons les
regles anteriors.
Autoria: Bernardino Casas
Generació: 2026-01-25T13:03:30.768Z
© Jutge.org, 2006–2026.
https://jutge.org