Ваша птица жаждет каких-то упражнений и ей надоело все время застревать в статичных положениях. Напишите программу, которая будет показывать беспорядочно танцующую птицу аськи, обновляя каждые 100 мс * n или 200 мс * n в зависимости от движения танца. Птица всегда начинается с танцевального движения <(")>
.
Программа должна принять один вход, который является числом, чтобы умножить интервал ожидания на ( n >= 0 && n <= 50
).
100 мс
^(")v
v(")^
^(")^
v(")v
200 мс
(>")>
<(")>
<("<)
Дополнительные детали
- Случайность не обязательно должна быть одинаковой, но у каждого танцевального движения должна быть разумная вероятность (по крайней мере, 1 из 60 кажется справедливым, это нормально, если одно и то же движение происходит два раза подряд)
- Должна быть показана только одна птица за раз, а не несколько птиц
- Конечный пробел разрешен (но другие конечные символы - нет)
- Птица должна быть показана перед сном
Пример в Python 3
import random, time, sys
birds = """(>")>
<(")>
<("<)
^(")v
v(")^
^(")^
v(")v"""
birds = birds.split()
interval = int(input("Sleep for 100ms*"))
selection = -1
while True:
if selection == -1:
selection = 1
else:
selection = random.randint(0, len(birds)-1)
sys.stdout.write('\r'+birds[selection])
if selection > 2:
time.sleep(0.1*interval)
else:
time.sleep(0.2*interval)
выигрыш
- Это код-гольф, поэтому выигрывает как минимум байт!
\r
побег Lua, похоже, действует как a\n
. Также я не могу использоватьos.execute("cls")
там. @redstarcoderОтветы:
MATL , 53 байта
Ходы равномерно случайны.
Ниже приведен пример с
n = 2
. Или попробуйте в MATL Online! (Интерпретатор является экспериментальным. Если он не запускается изначально, попробуйте снова нажать «Выполнить» или обновить страницу).объяснение
источник
Матлаб,
125117 байтК сожалению, это не может быть отображено в TIO, так как нет «потокового» вывода. Вот GIF для ввода
1
вместо:Спасибо @LuisMendo за -8 байт!
источник
*> <> ,
103101 байтПопробуй это здесь! (напишите в
n
начальном стеке, или вы получите ошибку)Я решил сделать удар по моему вызову, так как не было ответов в 100 байтов. Положите
n
в стек и понеслось! Это повторно использует(")
символы, чтобы сохранить несколько байтов.объяснение
Инициализация
<vD[3'(")'
Здесь мы храним
(")
для дальнейшего использования.Выбор танца
Это часто выполняется, чтобы выбрать, какой тип танца мы будем генерировать.
Справа от него тоже есть
v
надx
и<
. Это делаетx
повторное выполнение, если оно пытается переместить IP в неправильном направлении.Создать танец 100 мс
Здесь мы генерируем и выводим один из танцевальных движений в 100 мс.
43C - Создать «^» или «v»
Это простая функция, которая генерирует «^» или «v», а затем возвращает. Он работает аналогично выбору танца, где есть инструкции
x
чтобы IP-адрес двигался только влево или вправо.Создать 200 мс танца
Это еще один, который начинается с
x
. Он будет разделен на два раздела:<(")>
и другой(>")> and <("<)
, потому что это два отдельных раздела, иx
это единственное, что они разделяют.<(")>
Это в основном делает начало
generate 100ms dance
рутины, но заполняет руки птицы><
вместо случайной^v
комбинации. Это умножаетсяn
на два в этот раз. Это все настраивает на использованиеgenerate 100ms dance
процедуры для вывода всей птицы и ожидания вместо этого 200 мс.(>")>
а также<("<)
Это небольшое объяснение о
(>")>
и<("<)
генерации, хотяx
может послать IP вне его (описано ниже).источник
JavaScript (ES6) + HTML5:
118116 + 8 = 124 байтаJavascript: 119 байт
Я использую миллисекунды с эпохи, чтобы генерировать случайное число. Теоретически, это всегда будет генерировать одно и то же число (набор), но тест на моем ПК дал мне довольно случайный результат (большинство чисел выглядели более или менее одинаково). Также используя тот факт, что HTML-элементы с идентификатором добавляются в объект глобального окна в JavaScript, так
document.getElementById()
не требуется.HTML: 8 байт
Я опускаю цитаты здесь и не закрываю
b
тег. Это недействительный HTML, но все браузеры автоматически закрывают тег в любом случае. Я выделил его жирным шрифтом, потому чтоb
это односимвольный элемент HTML, и потому что танец моей птицы заслуживает того, чтобы его заметили.источник
PowerShell ,
124117 байт(Спасибо, ТиммиД )
Попробуйте онлайн! (Не то чтобы это будет работать в TIO ...)
источник
$b
и использовать псевдо-троичный, чтобы снизить до 117 -for(){(-split'^(")v v(")^ ^(")^ v(")v (>")> <(")> <("<)')[($i=0..6|random)];sleep -m((100,200)[$i-gt3]*$args[0]);cls}
... Я думаю, что короче возможно; Я все еще тыкаю в это.Noodel , неконкурентный 67 байт
Эта задача была очень трудной для Noodel, потому что у нее нет умных арифметических или сравнительных операторов. Но после выполнения этой задачи, я думаю, Noodel готова к своему первому выпуску.
Попытайся:)
Как это работает
64 байта
Вот версия, которая работает как фрагмент кода.
источник
Python, 157 байт
Я также пытался сделать это без куриного искусства, но это было намного дольше.
источник
Рубин, 97 + 1 = 98 байт
+1 байт от
-n
флага.источник
Clojure,
185178 байт+18 байт, потому что это не началось с
<(")>
.-7 байтов путем встраивания
birds
и избавления отlet
.Просто разбивает птиц на пробелы, выбирает случайный индекс от 0 до 6, отображает выбранную птицу, затем, если выбранный индекс больше 2, он ждет 100 мс, иначе 200 мс.
Clojure действительно нуждается в строковом
split
методе в ядре.Ungolfed:
источник