Ce défi est en l'honneur des lauréats de la catégorie Recrue de l'année du Meilleur de PPCG 2015 : muddyfish (car je ne suis pas la langue que vous recherchez! ) Et quartata (pour Implémenter une machine à vérité ). Toutes nos félicitations!
Contexte
Dans les tranchées les plus profondes de l'océan, vit un poisson de forme carrée rare et insaisissable appelé poisson quartata . Il ressemble au planeur de l'automate cellulaire Game of Life. Voici deux poissons quartata de tailles différentes:
-o-
--o
ooo
--oo--
--oo--
----oo
----oo
oooooo
oooooo
Vous avez réussi à prendre une photo du poisson quartata, mais le poisson est assez difficile à voir car il est couvert de boue. Vous devrez maintenant écrire un programme pour nettoyer la photo.
Contribution
Votre entrée est une grille 2D rectangulaire des caractères .-o#
, donnée sous forme de chaîne séparée par des sauts de ligne. Si vous le souhaitez, vous pouvez utiliser des tuyaux |
au lieu de retours à la ligne comme séparateurs et vous pouvez supposer un séparateur de fin et / ou précédent.
L'entrée contiendra exactement un quartata-poisson d'une certaine longueur latérale 3*n
, où n ≥ 1
est un entier positif, entouré de périodes .
qui représentent le fond de l'océan. Le poisson sera toujours dans l'orientation décrite ci-dessus. Superposé sur cette grille, il y aura exactement une région rectangulaire de hachage non vide #
, qui représente une goutte de boue. La goutte peut couvrir partiellement ou entièrement le poisson quartata. Un exemple d'entrée serait
............
..--oo--....
..--oo--....
..---#####..
..---#####..
..ooo#####..
..oooooo....
Sortie
Votre sortie doit être générée à partir de l'entrée en remplaçant tous les hachages par les caractères .-o
, afin que la grille contienne exactement un quartata-fish. Il y aura toujours un moyen unique d'effectuer correctement ce remplacement; en particulier, la goutte de boue ne couvrira entièrement le poisson que si sa taille est de 3 × 3. La sortie doit utiliser le même séparateur que l'entrée. Pour l'entrée ci-dessus, la sortie correcte serait
............
..--oo--....
..--oo--....
..----oo....
..----oo....
..oooooo....
..oooooo....
Règles et notation
Vous pouvez écrire un programme complet ou une fonction. Le nombre d'octets le plus bas l'emporte et les failles standard sont interdites. Il n'y a pas de limite de temps: si votre soumission finissait par s'arrêter avec un temps et des ressources illimités, tout va bien.
Cas de test
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.........
.........................
......|......|......|...###|...###|...###
(dans le cas où une solution essaie toutes les coordonnées possibles en haut à gauche et essaie d'ajuster un 6x6 sur la zone)Réponses:
Python 2,
433411 octetsQuitte avec a
NameError
. Prend le tuyau d'entrée séparé.Je mélange des tabulations et des espaces ici. SE ne rend pas les onglets correctement.
(Notez que les espaces supplémentaires au début sont réservés à la beauté et ne sont pas réellement imprimés)
la source
JavaScript (ES6), 291 octets
Explication
Prend la grille d'entrée comme une chaîne séparée par des sauts de ligne. Pas complètement golfé, fera plus quand j'aurai le temps.
Il fonctionne par:
la source
Python 2, 325 octets
Une solution mal golfée pour l'instant - les
for .. in range(...)
s sont une épave de train totale. Entrées / sorties de chaînes séparées par une nouvelle ligne.Le nombre d'octets suppose actuellement des retraits d'espace uniquement - je passerai plus tard à des onglets / espaces mixtes lorsque j'aurai fini de jouer au golf, si nécessaire.
la source