Раффаэль Чекко программист , который произвел некоторые из лучших видеоигр для ZX Spectrum компьютера в конце восьмидесятых годов. Среди прочего он разработал широко известный киберноид и экзолон .
Рафаэле исполняется 50 лет 10 мая 2017 года . Этот вызов - небольшая дань ему за счастливые часы, которые многие из нас потратили, играя в эти потрясающие игры, и за мотивацию, которую они принесли.
Соревнование
Цель состоит в том, чтобы создать прямоугольный шатер, вдохновленный тем, что можно увидеть на экране главного меню Cybernoid , но в стиле ASCII.
В частности, строка "Happy birthday Raffaele Cecco "
(обратите внимание на последний пробел) будет показана вращающейся по краям прямоугольника 12 × 5 с постоянным временем паузы между снимками.
Например, предполагая, что текст отображается по часовой стрелке и вращается против часовой стрелки (см. Параметры ниже), здесь представлены три последовательных снимка прямоугольной области:
Happy birthd
a
o y
c
ceC eleaffaR
тогда
appy birthda
H y
o R
cceC eleaffa
тогда
ppy birthday
a
H R
a
occeC eleaff
и так далее.
правила
Вход не будет принят. Вывод будет через STDOUT или эквивалентный, или в графическом окне.
Вывод должен фактически отображать вращающийся текст; то есть каждый новый снимок должен перезаписывать предыдущий, чтобы создать впечатление движения. Это можно сделать любым способом, например, написав соответствующее количество новых строк, чтобы эффективно очистить экран. Это допустимо, если это действительно только для данного размера экрана; просто укажите это в ответе.
Возможны следующие варианты:
- Текст может отображаться по часовой стрелке или против часовой стрелки, а также вращаться по часовой стрелке или против часовой стрелки (приведенные выше снимки экрана предполагают отображение по часовой стрелке и вращение против часовой стрелки).
- Вращение должно продолжаться циклически в бесконечном цикле (до остановки программы) и может начинаться на любом этапе.
- Время паузы между снимками должно быть приблизительно постоянным, но его можно свободно выбирать между 0,1 и 1 с. Первоначальная пауза перед отображением первого снимка является приемлемой.
- Буквы могут быть прописными, строчными или смешанными (как в примере выше).
- Ведущий или конечный пробел допускается.
Программы или функции разрешены на любом языке программирования . Стандартные лазейки запрещены.
Если возможно, предоставьте gif-файл с выводом или ссылку для тестирования программы.
Самый короткий код в байтах побеждает.
Ответы:
Желе ,
7465 байтВерсия для Windows, работающая на 6-строчной консоли cp-65001.
Между итерациями есть пауза в полсекунды (плюс оценка):
Как?
источник
HTML + ES6, 200 байт
источник
ZX Spectrum BASIC, 187 байт
Раздражает, что Филипп избил меня этим на пару минут :-) Числа, как, например,
\{15}
являются непечатными контрольными кодами - скомпилируйте с zmakebas, если хотите повозиться. Обратите внимание, что полный прямоугольник распечатывается не сразу, а после нескольких первых кадров.Попробуйте это здесь (онлайн-версия с эмуляцией JS, нажмите Enter, чтобы начать) ... http://jsspeccy.zxdemo.org/cecco/
Вы также можете сохранить четыре байта, очистив экран между кадрами вместо того, чтобы выполнять PRINT AT, но это слишком быстро, чтобы того стоить ...
источник
V
757170 байт4 байта сохранены благодаря @DJMcMayhem
Вот ссылка TIO, но обратите внимание, что это не будет работать на TIO, потому что программа зацикливается бесконечно. Попробуйте онлайн!
Поскольку этот код содержит непечатаемые, здесь есть hexdump.
Время сна составляет 500 миллисекунд.
источник
H|
->{
.<C-v>êx
->dê
и5L
->}
±± a
,o° y
иc±±<space>
5L
=>}
.ZX Spectrum BASIC, 274 байта
Ну, кто-то должен был это сделать. Педанты могут захотеть дисквалифицировать это за то, что они слишком медленные и не имеют паузы между анимациями, но я требую особого случая здесь :-)
Не очень гольф тоже. 274 байта - это количество байтов, сохраненных Spectrum на ленту при сохранении этой программы.
источник
SGN PI
для1
(сохраняет 5 байтов), но вы забылиNOT PI
для0
иVAL
для других констант ...NOT PI
Я просто пропустил. Умышленно не сделал,VAL
поскольку это было достаточно медленно, как это было, иVAL
ужасно медленно.SVG (HTML5), 267 байт
Ну, это является прямоугольным, и это является бегущей строкой, и это является ASCII текст ...
источник
PHP, 184 байта
печатает 39 новых строк, чтобы очистить экран; беги с
-nr
.Фактическая пауза составляет 1 секунду; но я ускорил гифку.
ungolfed
источник
Python 2,
230184 байтаПопробуйте это на repl.it
источник
Python 3 , 160 байт
Попробуйте онлайн! (Без анимации)
источник
Python 2,
218200190181176 байт-18 байт, удалив
str
форматирование-10 байт, благодаря предложениям @Uriel и @ElPedro
-9 байт за счет удаления отрицательной индексации
-5 байт, сохраняя обратное
f
какv
иwhile
условиеrepl.it
источник
while 1:
иprint
и заменить следующий;
(реальным) переводом строки. Такжеf='H..
. Иf[:1]
актуальноf[0]
.time.sleep(1)
взять его меньше 200?Ruby + GNU Core Utils, 136 байт
источник
Python 2,
182179173160 байтПопробуйте это на repl.it
Не работает на TIO, поэтому моя первая попытка использования repl.it
Редактирование Использование цикла «потеря времени» для подсчета до 1000000 дает постоянную задержку от 0,1 до 1 с на моей машине и на repl.it и экономит импорт
time
. Я предполагаю, что если вы запустили его на старом компьютере 286 с 64 МБ ОЗУ, он может пройти более 1 секунды, но я уверен, что этого не произойдет. Если это так, просто уменьшите 1000000 и сэкономьте мне пару байтов :-)Отредактируйте 2-6, чтобы помнить, что списочные выражения в Python 2 пропускают последнее значение,
s
так что я могу использовать его позже, а также помните, что все, что угодно, кроме 0 и "", является правдой. Ошибки или особенности? Не волнует Это спасло меня 6 байтов :-)Отредактируйте еще 3 , изменив вращение и используя понимание списка для средних рядов внутри объединения и изменив
3000000
на40**4
. Спасибо @FelixDombek за последний. Пришлось потерять мой трюк с пониманием списка.источник
999999
вместо1000000
байта: VМашинный код ZX81 Z80,
158130 байтовИтак, у него много байтов, пока он не собран, но затем он падает до 130 байтов. Не уверен, что это нарушает какие-либо правила? Это мой первый пост и только в качестве гостя.
Программа использует «грубую силу» для отображения сообщения, а не умного использования функции, как видно из того, как она имеет отдельные фрагменты кода для верхней строки, вертикальной правой части, нижней строки и вертикальной левой части. Анимация достигается путем вращения содержимого сообщения и последующего его отображения после небольшой задержки, которая должна составлять примерно 0,2 секунды, поскольку она ожидает 10 кадров со скоростью 50 (в любом случае, для спецификации Zeddys для Великобритании).
Я должен отдать должное kmurta за идею поворота сообщения для получения анимации - это сэкономило 28 байт !!!
Извините, я не могу опубликовать ссылку на него, работающую, так как это скомпилированная программа в формате .P для EightyOne (или других эмуляторов) или реального Zeddy, если у вас есть ZXPand или аналогичный для его загрузки.
.P можно загрузить по адресу http://www.sinclairzxworld.com/viewtopic.php?f=11&t=2376&p=24988#p24988.
источник