Соревнование
Создайте функцию, которая при получении входных данных искусства ASCII (направляя путь, который может в конечном итоге зацикливаться), выводит длину цикла (если он есть) и длину «хвоста», ведущего в цикл в одном из формы ниже.
вход
Ваш вклад должен быть передан в функцию. Ниже приведен пример простого ввода.
# --> # --> #
^ |
| |
| v
# <-- #
Вы можете визуализировать вышеуказанные блоки, как это
«Хвост» - это один элемент, а цикл - четыре.
Более сложный:
# --> # --> #
^ |
| |
| v
# --> # <-- # # --> #
^ ^ |
| | |
| | v
# --> # # <-- # <-- #
Выход
Вы должны выводить через STDOUT или ближайшую альтернативу вашего языка.
Ваши два выходных целых числа должны быть длиной хвоста и длиной цикла. Этот вывод может быть в двух формах.
- строка, разделенная пробелом:
"2 10"
- массив целых чисел:
[2, 10]
правила
Каждый блок, или
#
, будет иметь только один путь от себя.Каждая стрелка - это два отрезка и одна голова.
Начальный блок всегда будет в крайнем левом столбце.
Вход никогда не будет просто петлей.
пример
# --> # --> # --> #
^ ^ |
| | |
| | v
# # <-- # <-- #
Этот имеет длину хвоста 2 и длину петли 6. Ниже хвост и петля разделены.
Хвост
# -->
^
|
|
#
петля
# --> # --> #
^ |
| |
| v
# <-- # <-- #
Правильные выводы есть [2, 6]
и "2 6"
.
Если вход является только хвостом , длина цикла равна нулю.
# --> # --> # --> #
|
|
v
<-- # <-- #
Правильные выходы для вышеуказанного ввода [6, 0]
и"6 0"
источник
Ответы:
JavaScript (ES6), 221
229Функция с вводом в качестве параметра, выводом в виде строки через всплывающее окно (оповещение).
Сканирование повторно вход:
на каждом шаге
Когда хвоста больше не нужно удалять, количество шагов до сих пор соответствует размеру хвоста, а число оставшихся '# - это размер цикла.
Все новые строки внутри обратных кавычек значимы и подсчитаны
Попробуйте запустить приведенный ниже фрагмент с Firefox (не Chrome, так как он не поддерживает
...
)источник
Рубин,
287278 байтПопробуй это здесь .
Это создает хэш (словарь) узлов. Для каждого узла сохраняется количество входящих соединений и (возможно, ноль) следующий узел.
В заключение:
Читаемая версия кода доступна здесь .
источник
Руби, 276
источник