Это дополнительная задача для создания головоломки Loopy . Возможно, вы захотите решить эту задачу, прежде чем пытаться выполнить более сложную задачу из предыдущей ссылки.
Цель этой задачи - проверить правильность решения загадочной головоломки. Пожалуйста, возьмите всю документацию о загадочной загадке из предыдущей ссылки. Решенная зацикленная головоломка отформатирована очень похожим образом на вывод правильного представления для задачи «генерировать зацикленные головоломки» и может выглядеть следующим образом:
+-+-+ +-+ +-+ +
| | | |2|3|
+-+ + + + + +-+
2| | | |2| 3|
+ + +-+ + + +-+
2| 2 1|3| |
+-+ +-+ +-+ +-+
|2 | | 1 2|
+ +-+ +-+ +-+ +
| |2 1 2|3|3| |
+ + +-+ +-+ +-+
| | |3|2 1
+ +-+ +-+-+-+-+
| 2 2 |
+-+-+-+-+-+-+-+
Путь , который составляет решение помечается |
и -
символы между +
символами.
Входная спецификация
Ваша программа должна получить зацикленную головоломку с решением, отформатированным, как в примере выше, в качестве входных данных. Ваша программа должна определить размер головоломки по входным данным. Вы можете сделать следующие предположения относительно ввода:
- Головоломка имеет не менее 2 и не более 99 клеток в любом направлении
- Таким образом, каждая строка имеет максимальную длину 199 символов, не включая символы новой строки
- Таким образом, вход содержит максимум 99 строк
- каждая строка может заканчиваться после последнего печатного символа или может быть дополнена пробельными символами, поэтому она имеет длину до 2 · y + 1 символов, где y - количество ячеек в горизонтальном направлении
- каждая позиция с координатами x и y даже содержит
+
символ - позиции, расположенные горизонтально или вертикально рядом с позициями, содержащими
+
символы, содержат либо символ пробела, находятся за концом строки или содержат-
символ, если он расположен горизонтально, или|
символ, если он расположен вертикально - все остальные позиции либо за концом строки или содержать один из символов
,
0
,1
,2
, или3
- все строки заканчиваются символами новой строки по умолчанию вашей платформы
- есть ровно один завершающий перевод строки
Входные данные должны быть получены одним из следующих способов:
- Со стандартного ввода
- Как значение параметра, указанного
p
в запросе HTTP POST - Как содержание формы HTML
- Как содержимое файла с именем
p
в каталоге, определяемом реализацией - В реализации, определенной способом во время выполнения, если первые четыре не доступны
- Жестко запрограммирован, если ваш язык не дает возможности получить ввод
Спецификация выхода
Ваша программа должна завершиться для всех входных данных, соответствующих входной спецификации, и должна вычислить, является ли решение головоломки правильным. Ваша программа должна вывести результат вычисления в виде логического значения одним из следующих способов:
- В качестве состояния выхода либо ноль (решение является действительным), либо ненулевое (решение является недействительным)
- В качестве символа
y
(решение допустимо) илиn
(решение недействительно) следует ноль или более произвольных символов, выводимых способом, определяемым реализацией
Поведение вашей программы не определено при обнаружении ввода, не отформатированного в соответствии со спецификацией ввода.
счет
Оценка вашей программы - это количество символов в ее источнике, за исключением пропускаемых пробельных символов и пропускаемых комментариев. Вам предлагается сделать отступ в своем представлении, чтобы его легче было прочитать другим и прокомментировать свое решение, чтобы было легче следовать.
Материалы, которые не соответствуют спецификации ввода или вывода или не дают неверных результатов, являются недействительными.
0
также есть действительные числа для клетки.Ответы:
GolfScript, 133 символа
Ожидает ввод от STDIN и печатает
y
для правильного решения иn
для недопустимого. Выполняет задачу, используя в основном замену строк в сетке или с повернутыми версиями сетки.Аннотированный код:
источник
C #
803579 байтовПолная программа, считываемая из STDIN, должна соответствовать любой распространенной схеме новой строки, если она имеет перевод строки. Спасибо HackerCow за указание на то, что мне не нужно добавлять новую строку в другом вопросе, предлагая мне удалить ее здесь и сохранить 4 байта
Гольф-код:
Код выполняет 3 проверки, сначала проверяя количество строк вокруг каждого числа, и что каждое соединение имеет 0 или 2 строки, идущие от него, затем все линии объединяются.
Форматированный код:
источник
Кобра - 514
Проверяет, имеет ли каждое число правильное количество строк рядом с ним, а затем обходит путь вокруг строк и проверяет, пропустило ли оно какие-либо.
источник