Вдохновлен этой маленькой игрой .
Вызов
В качестве входных данных задается начальная позиция сетки (всегда 5x5), например:
-ABCD
-A---
---C-
---BD
--E-E
Вам нужно соединить буквы (одинаковые буквы все вместе), удалив все пустые -
места. Буквы будут всегда A,B,C,D and E
.
Каждая пара букв должна быть соединена одной неразветвленной линией, которая может изгибаться под прямым углом (используя ту же букву для изображения линии).
Входные данные гарантированно будут иметь каждую начальную букву ровно 2 раза и всегда будут иметь все начальные буквы AE.
Входные данные могут быть прочитаны из stdin, или из одной единственной строки в виде аргумента некоторой функции, или даже из массива / матрицы / списка символов, наиболее удобного способа для вашего языка программирования.
Поскольку это код-гольф, выигрывает самый короткий код в байтах!
пример
Существует не только одно решение для каждой проблемы, но правила применяются ко всем (без пустого пространства и без разделенных букв). И на входе гарантированно будет хотя бы один правильный выход.
Давайте начнем соединять буквы A:
AABCD
AA---
AA-C-
AA-BD
AAE-E
Теперь соединяем буквы Б:
AABCD
AAB--
AABC-
AABBD
AAE-E
Теперь соединяем буквы С:
AABCD
AABC-
AABC-
AABBD
AAE-E
Теперь соединяем буквы D:
AABCD
AABCD
AABCD
AABBD
AAE-E
И, наконец, буквы E:
AABCD
AABCD
AABCD
AABBD
AAEEE
Другие образцы
input:
E--E-
BB-C-
AD---
---C-
AD---
output:
EEEEE
BBECE
ADECE
ADECE
ADEEE
input:
A----
---B-
-C-C-
-D-D-
BE-EA
output:
AAAAA
BBBBA
BCCCA
BDDDA
BEEEA
A-E
?Ответы:
Perl,
130128127 байтовВключает +4 для
-n0
(программа не работает из командной строки, поэтому-
и место тоже учитывается)Позвонить со входа на STDIN:
Действие с
^D
или^Z
или что-то закрывает STDIN в вашей системеconnectletters.pl
:источник