Это задание посвящено победителям в номинации « Новичок года» в номинации « Лучшее из PPCG 2015» : грязная рыба (потому что я не тот язык, который вы ищете! ) И четверть (для реализации машины правды ). Поздравляем!
Задний план
В самых глубоких окопах океана обитает редкая и неуловимая рыба квадратной формы, называемая рыбой четвертной . Похоже на планер из клеточного автомата Game of Life. Вот две рыбы-четверки разных размеров:
-o-
--o
ooo
--oo--
--oo--
----oo
----oo
oooooo
oooooo
Вам удалось сделать фотографию рыбы-четверти, но ее довольно трудно увидеть, так как она покрыта грязью. Теперь вам нужно написать программу для очистки фотографии.
вход
Ваш ввод - это прямоугольная двумерная сетка символов .-o#
, представленная в виде строки, разделенной новой строкой. Если вы хотите, вы можете использовать каналы |
вместо новых строк в качестве разделителей, и вы можете использовать один конечный и / или предшествующий разделитель.
Входные данные будут содержать ровно одну четвертную рыбу некоторой длины стороны 3*n
, где n ≥ 1
это положительное целое число, окруженное точками, .
которые представляют дно океана. Рыба всегда будет в ориентации, изображенной выше. В этой сетке будет ровно одна непустая прямоугольная область хэшей #
, представляющая собой каплю грязи. Капля может частично или полностью покрывать четвертную рыбу. Пример ввода будет
............
..--oo--....
..--oo--....
..---#####..
..---#####..
..ooo#####..
..oooooo....
Выход
Ваш вывод должен быть сгенерирован из ввода путем замены всех хешей символами .-o
, чтобы сетка содержала ровно одну рыбку-четверть. Всегда будет уникальный способ выполнить эту замену должным образом; в частности, капля грязи полностью покроет рыбу, только если ее размер 3 × 3. Выход должен использовать тот же разделитель, что и вход. Для приведенного выше ввода правильный вывод будет
............
..--oo--....
..--oo--....
..----oo....
..----oo....
..oooooo....
..oooooo....
Правила и оценки
Вы можете написать полную программу или функцию. Побеждает меньшее количество байтов, и стандартные лазейки запрещены. Нет ограничений по времени: если ваша заявка будет в конечном итоге остановлена с учетом неограниченного времени и ресурсов, у вас все в порядке.
Контрольные примеры
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.........
.........................
......|......|......|...###|...###|...###
(в случае, если решение пробует все возможные верхние левые координаты и пытается разместить область размером 6х6)Ответы:
Python 2,
433411 байтВыход с
NameError
. Принимает входную трубу отдельно.Я смешиваю табуляции и пробелы здесь. SE не отображает вкладки должным образом.
(Обратите внимание, что дополнительные пробелы в начале предназначены только для красивости и на самом деле не напечатаны)
источник
JavaScript (ES6), 291 байт
объяснение
Принимает сетку ввода как строку, разделенную новой строкой. Не полностью в гольф, буду делать больше, когда у меня будет время.
Работает:
источник
Python 2, 325 байт
Пока плохо решаемое решение -
for .. in range(...)
это крушение поезда. Входы / выходы строк, разделенных новой строкой.Число байтов в настоящее время предполагает только отступы пробела - я переключусь на смешанные табуляции / пробелы позже, когда закончу игру в гольф, если это необходимо.
источник