To wyzwanie jest na cześć zwycięzców kategorii Rookie of the Year w konkursie Best of PPCG 2015 : muddyfish (bo nie jestem językiem, którego szukasz! ) I quartata (za Implementowanie maszyny prawdy ). Gratulacje!
tło
W najgłębszych okopach oceanu żyje rzadka i nieuchwytna ryba w kształcie kwadratu zwana quartata-fish . Wygląda jak szybowiec z automatu komórkowego Game of Life. Oto dwie ryby quartata o różnych rozmiarach:
-o-
--o
ooo
--oo--
--oo--
----oo
----oo
oooooo
oooooo
Udało ci się zrobić zdjęcie kwarty-ryby, ale ryba jest raczej trudna do zobaczenia, ponieważ jest pokryta błotem. Teraz musisz napisać program do czyszczenia zdjęcia.
Wkład
Twoje dane wejściowe to prostokątna siatka 2D znaków .-o#
, podana jako ciąg oddzielony znakiem nowej linii. Jeśli chcesz, możesz użyć potoków |
zamiast nowych linii jako separatorów i możesz założyć jeden separator końcowy i / lub poprzedni.
Dane wejściowe będą zawierały dokładnie jedną ćwiartkę-rybę o pewnej długości boku 3*n
, gdzie n ≥ 1
jest liczbą całkowitą dodatnią, otoczoną okresami .
reprezentującymi dno oceanu. Ryba zawsze będzie miała orientację przedstawioną powyżej. Na tej siatce zostanie nałożony dokładnie jeden niepusty prostokątny obszar skrótów #
, który reprezentuje kroplę błota. Kropla może częściowo lub całkowicie pokryć quartata-fish. Przykładem może być
............
..--oo--....
..--oo--....
..---#####..
..---#####..
..ooo#####..
..oooooo....
Wydajność
Twój wynik będzie generowany z danych wejściowych poprzez zastąpienie wszystkich .-o
skrótów znakami , tak aby siatka zawierała dokładnie jedną rybę quartata. Zawsze będzie istniał unikalny sposób prawidłowego wykonania tej zamiany; w szczególności kropla błota całkowicie przykryje rybę tylko wtedy, gdy jej rozmiar wynosi 3 × 3. Wyjście powinno używać tego samego separatora co wejście. Dla powyższego wejścia, poprawne wyjście byłoby
............
..--oo--....
..--oo--....
..----oo....
..----oo....
..oooooo....
..oooooo....
Zasady i punktacja
Możesz napisać pełny program lub funkcję. Wygrywa najniższa liczba bajtów, a standardowe luki są niedozwolone. Nie ma żadnych ograniczeń czasowych: jeśli Twoje zgłoszenie ostatecznie zostanie zatrzymane, biorąc pod uwagę nieograniczony czas i zasoby, nic ci nie jest.
Przypadki testowe
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.........
.........................
......|......|......|...###|...###|...###
(w przypadku, gdy rozwiązanie próbuje wszystkich możliwych współrzędne lewego górnego i próbuje dopasować 6x6 nad obszarem)