Я устал, но не могу заснуть. Помоги мне считать овец.
Учитывая ввод N (положительное целое число), заставьте N овец перепрыгнуть через забор ascii, как в примере ниже. Только один кадр должен отображаться одновременно:
o |-|
──|-|── 0
o|-|
──|-|── 0
o
|-|
──|-|── 0
|-|o
──|-|── 0
|-| o
──|-|── 0
o |-|
──|-|── 1
o|-|
──|-|── 1
o
|-|
──|-|── 1
Счет следует хранить в нижней правой части «основания». Трейлинг и пробелы и переводы строки разрешены. Если выбранный вами язык затрудняет очистку экрана для каждого кадра, вы можете добавить достаточное количество новых строк, чтобы очистить экран - укажите, сколько строк вы добавили для этого в своем ответе. Программа должна завершиться, когда N-я овца окажется на пятом этаже.
Завтра мне нужно рано вставать, поэтому выигрывает самый короткий код в байтах. Пожалуйста, отправьте функцию или завершите программу. Применяются стандартные лазейки.
N=3
последнего кадра будет содержаться овца на правом конце и счетчик все равно скажет2
. Это верно?Ответы:
MATL ,
605653 байтаАнимация с приведенным выше кодом работает очень быстро. Следующая версия включает паузу, чтобы сделать анимацию более медленной и, следовательно, более легкой для просмотра (не требуется для задачи), за счет еще 4 байтов:
Попробуйте это в MATL Online! Интерпретатор является бета-версией; обновите страницу, если она не работает.
Или посмотрите запись из автономного компилятора:
объяснение
источник
JavaScript (ES6),
120124 байтаПоследний вычисленный кадр показывает первым. Благодаря этому номер прыжка
n-1
В
alert
, у персонажей разная ширина, поэтому похоже, что он сломан.Показать фрагмент кода
Предыдущий ответ:
120 байтов, номер перехода неверен, потому что он начинается с 1 вместо 0
источник
alert
. У меня тот же результат, что и у Chrome с краем, и хуже с Firefox.JavaScript (ES6),
144142 байтаОчищает вывод и ждет 300 мс между каждым кадром:
Вы можете проверить это здесь (обязательно откройте консоль).
источник
4
до5
) после того, как последняя овца прыгнула через забор ...Рубин, 83 байта
Печать на стандартный вывод. Вывод разделен переводом строки. Уменьшение высоты экрана до 3 позволяет одновременно видеть только одно изображение.
источник
C #, 234 байта
источник
string[] args
и наfor (int
.Int32.Parse
может бытьint.Parse
.Program
простоP
или что-тоstring
может бытьvar
. Целое число в цикле for может быть инициализировано одновременно с анализомargs[0]
целого числа.Action<string[]>
и вы можете удалить скобки вокруг внешнего цикла for, поэтому я считаю, что я получаю 200 байтов:using C=System.Console;a=>{for(int n=0;n-1+""!=a[0];++n)foreach(int p in new[]{5,6,3,10,11}){C.Clear();C.Write(" \n |-| \n──|-|── ".Remove(p,1).Insert(p,"o")+n);for(var w=3e7;w>0;--w);}};
PHP + JavaScript, 168 байт
Сохраните в файл
s.php
, позвоните в браузере с помощьюs.php?n=<n>
.Вызывает себя с новыми параметрами для каждого кадра, без задержки.
Я мог бы сэкономить еще 5 с
index.php
; но я не хочу заходить так далеко.источник
C AB|─|DE ──|─|── $c",EABCD,$s),($c+=!$f)<$n?"
.short_open_tag
отключили. Включить его (по умолчанию) или добавитьphp
+ пробел после<?
.Tcl, 168 байт
Версия с использованием экрана высотой 10 строк. (Замените
7
ниже высоту экрана в столбцах минус четыре.)Это работает очень быстро, поэтому вы можете добавить паузу во второй строке:
Tcl, 177 байт
Это работает путем повторного использования строки в верхней части для двух разных вещей:
Сам шаблон представляет собой строковое изображение для отображения. Сначала мы отображаем (строка заменяет) цифру текущей позиции овцы (внутренний цикл) на 'o'. Затем мы сопоставляем оставшиеся цифры с пробелами. Затем мы печатаем полученную строку.
(Сама строка начинается после последней {в третьей строке и заканчивается самой левой} в последней строке.)
источник
QBasic, 110 байт
Зацикливается на
5*n
клещей. При каждом тике очищает экран, печатает счетчик чисел и овец, а затем используетLOCATE
для печатиo
в соответствующем месте. Сx
кодом положения от 0 до 4:(x=2)+2
x=2
это правда,-1+2
=1
x=2
ложно,0+2
=2
1+x-(x>1)+x\3
x
это0
или1
,x>1
ложь иx\3
является0
:1+x-0+0
=1
или2
x
есть2
,x>1
верно иx\3
есть0
:1+x-(-1)+0
=4
x
есть3
или4
,x>1
верно иx\3
есть1
:1+x-(-1)+1
=6
или7
Наконец,
SLEEP
на 1 секунду и цикл. Если вы не возражаете, нажимая ввод в каждом кадре, я могу сбрить два байта, удалив аргумент toSLEEP
.источник
PHP,
132131 байтРедактирует после комментариев (спасибо!):
Который негольфирован
Оригинальный пост
Проверено на Ubuntu (не знаю,
system("clear")
работает ли на Windows)Ungolfed:
источник
clear
кавычки не нужны.cls
в DOS.$i=0;
, предупреждения, как правило, не отображаются в коде гольфа (-5 байт). По той же причине вам не нужны кавычкиclear
иo
(-4 байта). Замените\n
s реальными символами новой строки (-2 байта). Поскольку у вас есть только выражения, а не операторы, вы можете поместить вfor
цикл все, кроме последнего , что позволяет убрать скобки (for(;;system(clear),$c=…)sleep(1);
) (-2 байта). И, наконец, вы забыли добавить условие$i<$argv[0]
(+ 11 байт).node.js + sleep , 169 байт
Оригинальное решение
node.js,
146142185 байтПротестировано только с терминалом Ubuntu (и теперь с n овцами):
Ну, это кадр каждые 9 мс. Более спокойная версия (кадр каждые 1 с):
И безглым
источник
05AB1E ,
666059 байтИспользует кодировку CP-1252 .
Explanantion
Итерация относится к внутренней итерации (0 -> 4) пути овец.
Основные петли
Создать верхний ряд
Генерация среднего ряда
Создать нижний ряд
источник
Желе ,
55 5453 байтаTryItOnline
Печатает кадры, разделенные переводом строки.
Как?
источник
Python 2,
171159144 байта,163151136 символовРешение с использованием рекурсивной функции. Звоните как F (Int)
РЕДАКТИРОВАТЬ
-12 после перечитывания комментариев и наблюдения, что счет не должен увеличиваться, когда овца достигает конца поля
-15 путем итерации по списку индексов напрямую и потери переменной
Заметки
Предполагает кодировку UTF-8
Использование - вместо ─ (как в ответе @Luis MATL) уменьшит счетчик байтов на 8, чтобы соответствовать количеству символов, и потеряет зависимость UTF-8
Добавлено 50 новых строк - вывод находится в нижней части консоли (дешевле, чем импорт и использование os.system («очистить») и работает в Windows и Linux)
Версия с задержкой в 1 секунду между выходами (170 байт, 162 символа)
источник
Bash + стандартные утилиты Linux (339 байт)
источник