Наша классическая змея разработала дисбаланс гормонов роста . Что еще хуже, его хвост замерз на месте! С учетом направленного ввода, как указано в Figure 1
, напишите программу, чтобы определить, где он будет расти.
Рисунок 1. Направленный вход.
Спецификации программы
- Читайте ввод за символом на
STDIN
. - Прочитав символ, выведите змею в
STDOUT
. Пожалуйста, включайте пустую строку между каждым разом, когда вы печатаете змею. - Змея состоит из
<>v^
головы. Голова змеи может быть любой круглый характер вашего выбора, такие какo
,0
,O
или☺
. - Любая комбинация
wasd
действительна для ввода. - Ваша программа не должна предполагать, что ввод находится в пределах определенной длины.
- Змея может навалиться на себя, перезаписывая
<>v^
. Смотрите примеры для механики выращивания змей. - Задний пробел в порядке, но ваша змея должна выглядеть правильно.
счет
Это код-гольф . Ваша оценка - это количество символов в вашей программе. Самый низкий балл побеждает!
Пример змей:
Входные данные: ddddssaassdddddww
Выход:
>>>>v
v
v<< ☺
v ^
>>>>>^
Входные данные: dddsssaaawww
Выход:
☺>>v
^ v
^ v
^<<<
Входные данные: dddsssdddddasddddwww
Выход:
>>>v
v ☺
v ^
>>>>v< ^
>>>>^
Входные данные: dddwwdddssssaaaaaaaaawww
Выход:
>>>v
☺ ^ v
^ >>>^ v
^ v
^<<<<<<<<<
Входные данные: ddddssssaawwddddd
Выход:
>>>>v
v
>>>>>☺
^ v
^<<
Входные данные: dddddssaawwwwddddd
Выход:
>>>>>☺
^
>>>^>v
^ v
^<<
Входные данные:
ddddaaaasssssdddddddddddwwwwwaaaasssssdddddddddddwwwwwwwwwwsssssaaaasssssdddddddwwwwwddddssaaaasssddddaaaassssssssssdddwwwwwwwddddswaaaassssddaasssaaaaaaaaaawwwwddddssssaaaaaaaaaaawwwwddddsssssssssaaaa
Выход:
v
v
v
v
v
v<<<< v<<<< v<<<< >>>>v
v v ^ v ^ ^ v
v v ^ v ^ v<<<<
v v ^ v ^ v
v v ^ v ^ v
>>>>>>>>>>>>>>>>>>>>>v<<<<
v
v
v v<<<<
v v ^
v v
>>>>v >>>>v v v
^ v ^ v v v<<
^ v ^ v v v
^ v ^ v v v
^<<<v<<<<<<<<<<<<<
v
v
v
v
O<<<<
Ответы:
Рубин, 207 символов
Ungolfed:
(лямбда для
a
обратной записи, потому что строка, в которую записывается указанное выше назначение, больше не находится на доске)источник
ECMAScript 6 Javascript (399
401431)Должен запускаться в браузере, поддерживающем ECMAScript 6, из-за функций стрелок.
Вот скрипки, которые были изменены для запуска в любом (обычном) браузере, не используя функции стрелок. Они также печатают
textarea
вместо:Гольф версия
Анимированный GIF:
Один из примеров ОП:
Пример из Stretch Maniac :
Ungolfed
Вот (слегка) ungolfed версия от когда - то прежде , чем я начал действительно играть в гольф вниз:
источник
convert
. Довольно просто :)седькая, 71
Golfscript,
165126Тот же подход, что и в моем предыдущем ответе, но правильное позиционирование курсора до и после. Я очень горжусь подходом к позиционированию курсора - в основном, он сначала запускает змею в обратном порядке, без распечатки символов
источник
echo "dddddssaawwwwddddd" | sed -e 's/w/\^\x1B[D\x1B[A/g' -e 's/a/<\x1B[2D/g' -e 's/s/v\x1B[S\x1B[D/g' -e 's/d/>/g' -e 's/$/@/'
не дает правильный вывод для меня.\n
секунд после того, как@
ваш запрос переместится в другое место.Ява - 646
Может быть и первым!
Бьюсь об заклад, вы все можете победить это.
Un (вроде) гольф
Меньше -
input - dddsssdddwwwwaaaaaaaassssssssssddddddddddddddddd
ввод - dddsssdddddasddddwww
мой личный фаворит - dwdwdwddaasassdddddwdwdwddsdswawaasassdddddddwdwdwddsdswawaasassddddwwwwwwwssssssdsdddwwwwddaassddaassddddsssdddwdwdwddaasasassddddwwwwssssssssasasaaawdwwdwddwwdddddddwdwdwddsdswawaasassddddddddddwwdwwwwaasssassdsdddddddwdwdwwwwasasssssssssssdwwwwwwwddd
источник
C # 607
«Ungolfed» с пробелами (это не будет синхронизировано с версией для гольфа):
источник
Python 3: 259 байт
Я решил хранить змею в диктовке с координатами для ключей. Затем найдите и переберите выходной диапазон, заменив пробелы.
PS. Мой первый гольф :) Дайте мне знать, если мой ответ неуместен
источник
O
вместо☺
экономит 2 байта.☺
красная сельдь☺
фактически не считается 3 байтами.O
, поэтому я не стал бы беспокоиться об этом. Из кода видно, что он по-прежнему будет работать для любого другого символа, но использование☺
позволяет удобно запускать тестовые сценарии из задачи без изменений.#coding=utf-8
. Обратите внимание, что#coding=utf-16
не работает. Следовательно☺
должен быть посчитан как 3.Python 2,7 - 274 байта
Неуправляемая версия
источник
SyntaxError: invalid syntax
.05AB1E ,
35343028 байтИспользует в
0
качестве головы змеи.-4 байта благодаря @Grimy .
Попробуйте онлайн (нет набора тестов для всех тестовых случаев одновременно, потому что нет способа сбросить Canvas, поэтому выходные данные будут перекрываться ..).
Объяснение:
См. Этот мой совет 05AB1E (разделы Как сжимать строки, не являющиеся частью словаря? И Как сжимать большие целые числа? ), Чтобы понять, почему
.•₃º•
есть"adsw"
иŽO^
есть6240
.Что касается краткого объяснения встроенного Canvas
Λ
и его трех аргументов:Первый аргумент: длина (с): размеры линий, которые мы хотим нарисовать. Так как мы должны помнить о перекрытии, мы используем размер 2 для каждого персонажа и дополнительный 1 для головы змеи.
Второй аргумент: строка (и): символы, которые мы хотим отобразить. Которые являются персонажами в этом случае, дополнены главными персонажами змеи.
Третий аргумент: direction (s): направления, в которых должны быть нарисованы эти строки символов заданной длины. В общем, у нас есть направления,
[0,7]
которые отображаются на эти направления:6240
Смотрите этот 05AB1E мой совет для более подробного объяснения встроенного Canvas
Λ
.источник
γ
вообще нужно. Это , кажется, работает просто отлично.Perl - 394
Не самое короткое, но оно лучше, чем Javascript, C # и Java.
Некоторые хитрости:
Вещи, которые причиняют боль:
источник
C - 273 байта - с интерактивным вводом!
Поле печатается каждый раз, когда вводится символ, и увеличивается, если голова змеи приближается к краю. Я не знаю, насколько это портативно - кто-то в Интернете сказал, что getch () не работает на платформах, отличных от Windows. Трудно сказать, будет ли ASCII 1 выглядеть как смайлик.
Гольф-версия довольно раздражает, так как нет возможности изящно выйти из программы. Control-C не работает для меня. С другой стороны, версия без заглушки завершается, если вводится символ, отличный от 'w', 'a', 's' или 'd'.
Так называемый "негольфированный":
источник
05AB1E , 23 байта
Попробуйте онлайн!
Объяснение:
источник