Diese Challenge ist eine Hommage an die Gewinner der Kategorie Rookie of the Year von Best of PPCG 2015 : Schlammfisch (denn ich bin nicht die Sprache, die Sie suchen! ) Und Quatata (für Implement a Truth-Machine ). Herzliche Glückwünsche!
Hintergrund
In den tiefsten Gräben des Ozeans lebt ein seltener und schwer fassbarer quadratischer Fisch, der als Quartata-Fisch bezeichnet wird . Es sieht aus wie das Segelflugzeug aus dem Game of Life-Zellularautomaten. Hier sind zwei Quartata-Fische unterschiedlicher Größe:
-o-
--o
ooo
--oo--
--oo--
----oo
----oo
oooooo
oooooo
Sie haben es geschafft, ein Foto des Quartata-Fisches zu machen, aber der Fisch ist ziemlich schwer zu sehen, da er mit Schlamm bedeckt ist. Jetzt müssen Sie ein Programm schreiben, um das Foto zu bereinigen.
Eingang
Ihre Eingabe ist ein rechteckiges 2D-Raster der Zeichen .-o#
, das als durch Zeilenumbrüche getrennte Zeichenfolge angegeben wird. Wenn Sie möchten, können Sie Pipes |
anstelle von Zeilenumbrüchen als Trennzeichen verwenden, und Sie können ein nachfolgendes und / oder vorangestelltes Trennzeichen annehmen.
Die Eingabe enthält genau einen Quarterfisch mit einer gewissen Seitenlänge 3*n
, wobei n ≥ 1
es sich um eine positive ganze Zahl handelt, die von Perioden umgeben ist .
, die den Meeresboden darstellen. Der Fisch wird immer in der oben gezeigten Ausrichtung sein. Über dieses Raster wird genau ein nicht leerer rechteckiger Bereich von Hashes gelegt #
, der einen Schlammklumpen darstellt. Der Klecks kann den Quartata-Fisch ganz oder teilweise bedecken. Eine Beispieleingabe wäre
............
..--oo--....
..--oo--....
..---#####..
..---#####..
..ooo#####..
..oooooo....
Ausgabe
Ihre Ausgabe wird aus der Eingabe generiert, indem alle Hashes durch die Zeichen ersetzt werden .-o
, sodass das Raster genau einen Quartatenfisch enthält. Es wird immer eine einzigartige Möglichkeit geben, diesen Austausch ordnungsgemäß durchzuführen. Insbesondere bedeckt der Schlammklumpen den Fisch nur dann vollständig, wenn seine Größe 3 × 3 beträgt. Der Ausgang muss dasselbe Trennzeichen wie der Eingang verwenden. Für die obige Eingabe wäre die richtige Ausgabe
............
..--oo--....
..--oo--....
..----oo....
..----oo....
..oooooo....
..oooooo....
Regeln und Wertung
Sie können ein vollständiges Programm oder eine Funktion schreiben. Die niedrigste Byteanzahl gewinnt, und Standardlücken sind nicht zulässig. Es gibt keine Zeitbeschränkungen: Wenn Ihre Einreichung bei unbegrenzter Zeit und unbegrenzten Ressourcen irgendwann unterbrochen wird, geht es Ihnen gut.
Testfälle
Input:
.......
...-o-.
...--o.
##.ooo.
##.....
Output:
.......
...-o-.
...--o.
...ooo.
.......
Input:
...-o-.
...-#o.
...ooo.
.......
Output:
...-o-.
...--o.
...ooo.
.......
Input:
.........
.###.....
.###.....
.ooo.....
Output:
.........
.-o-.....
.--o.....
.ooo.....
Input:
.....
.###.
.###.
.###.
Output:
.....
.-o-.
.--o.
.ooo.
Input:
......
......
......
...###
...###
...###
Output:
......
......
......
...-o-
...--o
...ooo
Input:
###o--....
###o--....
###-oo....
###-oo....
###ooo....
###ooo....
###.......
Output:
--oo--....
--oo--....
----oo....
----oo....
oooooo....
oooooo....
..........
Input:
............
..--oo--....
..--oo--....
..---#####..
..---#####..
..ooo#####..
..oooooo....
Output:
............
..--oo--....
..--oo--....
..----oo....
..----oo....
..oooooo....
..oooooo....
Input:
...--oo--....
.#########...
.#########...
.#########...
...oooooo....
...oooooo....
.............
.............
Output:
...--oo--....
...--oo--....
...----oo....
...----oo....
...oooooo....
...oooooo....
.............
.............
Input:
..............
..............
.########.....
.########.....
.########-....
.########-....
.########o....
.########o....
.########o....
.########o....
.########.....
..............
Output:
..............
..............
..............
..............
....--oo--....
....--oo--....
....----oo....
....----oo....
....oooooo....
....oooooo....
..............
..............
Input:
.................
.................
..---ooo---......
..--#########....
..--#########....
..--#########....
..--#########....
..--#########....
..oo#########....
..oo#########....
..oo#########....
....#########....
Output:
.................
.................
..---ooo---......
..---ooo---......
..---ooo---......
..------ooo......
..------ooo......
..------ooo......
..ooooooooo......
..ooooooooo......
..ooooooooo......
.................
Input:
.........................
.........................
....----oooo----.........
....----########.........
....----########.........
....----########.........
....----########.........
....----########.........
....----########.........
....----########.........
....oooo########.........
....oooo########.........
....oooooooooooo.........
....oooooooooooo.........
.........................
Output:
.........................
.........................
....----oooo----.........
....----oooo----.........
....----oooo----.........
....----oooo----.........
....--------oooo.........
....--------oooo.........
....--------oooo.........
....--------oooo.........
....oooooooooooo.........
....oooooooooooo.........
....oooooooooooo.........
....oooooooooooo.........
.........................
......|......|......|...###|...###|...###
(Für den Fall, dass eine Lösung alle möglichen Koordinaten von oben nach linksAntworten:
Python 2,
433411 BytesAusgänge mit a
NameError
. Trennt das Eingangsrohr.Ich mische hier Tabulatoren und Leerzeichen. SE rendert Tabs nicht richtig.
(Beachten Sie, dass zusätzliche Leerzeichen am Anfang nur der Schönheit dienen und nicht gedruckt werden.)
quelle
JavaScript (ES6), 291 Byte
Erläuterung
Nimmt das Eingaberaster als durch Zeilenumbrüche getrennte Zeichenfolge. Nicht ganz golfen, werde mehr tun, wenn ich Zeit habe.
Es funktioniert durch:
quelle
Python 2, 325 Bytes
Vorerst eine schlecht golfene Lösung - die
for .. in range(...)
s sind ein totales Zugunglück. Eingabe / Ausgabe von durch Zeilenumbruch getrennten Zeichenfolgen.Die Byteanzahl geht derzeit nur von Leerzeicheneinzügen aus. Wenn ich mit dem Golfen fertig bin, wechsle ich später zu gemischten Tabs / Leerzeichen.
quelle