Der kürzeste Code, der alle Möglichkeiten erfüllt, gewinnt
Es wurden viele gitterbasierte Spiele entwickelt, die mit einem eingeschalteten Lichtgitter beginnen. Wenn Sie auf eine der Anzeigen drücken, werden diese Anzeige und die vier daneben liegenden Anzeigen umgeschaltet. Wenn ein Licht umgeschaltet wird, wird es ausgeschaltet oder eingeschaltet, je nachdem, ob es ursprünglich ein- oder ausgeschaltet war. Das Ziel ist es, die Lichter in einer Reihenfolge zu treffen, bei der alle Lichter am Ende ausgeschaltet werden.
"X" steht für eingeschaltete Lichter. "O" steht für Lichter, die ausgeschaltet sind. "P" steht für das Quadrat, das gedrückt wird.
XOO XOO XOX XOX XXX
XOX XOP -> XXO -> OPO -> XOX
OOX OOX POO XXO XOO
Intial Grid Press 1 Press 2 Press 3 Ending Grid
Die Eingabe kann direkt aus einer als Argument übergebenen Datei oder als Standardeingabe erfolgen. Die erste Eingabezeile enthält x (1 <= x <= 20), die Größe des Lichtgitters, dh x mal x . Die zweite Zeile enthält y (0 <= y <= ( x * 3) 2 ), die Anzahl der anfänglich leuchtenden Lichter. Die nächsten y- Zeilen enthalten die Koordinaten der leuchtenden Lichter im Raster im Format "Zeilenspalte". Bereits eingeschaltete (zuvor umgeschaltete) Lichter sollten wieder ausgeschaltet werden. Die nächste Zeile enthält z , die Anzahl der gedrückten Lichter. Das endgültige z Linien enthalten Koordinaten der gedrückten Lichter in der Reihenfolge, in der sie gedrückt wurden, im Format "Zeilenspalte".
Keine Eingabe wird falsch sein. Alle Zahlen liegen innerhalb der angegebenen Grenzen des Rasters.
Die Ausgabe ist das endgültige Raster, nachdem alle Lichter umgeschaltet wurden. Es sollte eine sein , n durch n Gitter. Für jeden Bereich, in dem ein Licht leuchtet, sollte das Großbuchstaben "X" verwendet werden. Für jeden Bereich, in dem das Licht ausgeschaltet ist, sollte das Großbuchstaben "O" verwendet werden.
Betroffene Lichter, die nicht am Netz sind, sollten ignoriert werden. Das Umschalten eines Lichts am Rand eines Gitters sollte nur die Lichter betreffen, die sich auf dem Gitter selbst befinden.
Testfälle
Eingang
4
5
2 3
2 4
3 1
3 4
4 3
7
3 3
4 4
3 4
4 2
4 1
2 2
3 2
Ausgabe
OXOO
XOXO
XOXO
OXOO
Eingang
1
3
1 1
1 1
1 1
2
1 1
1 1
Ausgabe
X
quelle
exec
ist ein Schlüsselwort, keine eingebaute Funktion (in Python 2.x), daher werden diese zusätzlichen Klammern nicht benötigt.Ruby 1.9, 167 Zeichen
Bearbeitungen:
z[u]*=-1
anstelle vonz[u]=-z[u]
, entfernen Sie nicht verwendete Variablenquelle
Perl, 139 Zeichen
Erläuterung:
quelle
APL (71)
quelle