Вступление:
Я думаю, что все знают, что такое Лава Лампа, но на случай, если они этого не сделают:
В основном это стеклянные трубки, которые содержат воск в полупрозрачной жидкости. Нижняя часть нагревается при включении лампы, вызывая изменение плотности, и, таким образом, воск всплывает наверх. Когда он остывает, он снова падает, вызывая эффект, который мы видим выше.
Обычно требуется около 45-60 минут для того, чтобы основание лампы поднялось до достаточно высокой температуры, чтобы сменить твердый воск на жидкий воск (если лампа находится в помещении с комнатной температурой).
Вызов:
Учитывая положительное целое число, n
указывающее количество минут, прошедших с момента включения лампы лавы, выведите случайное состояние лампы лавы на основе целых чисел на пяти уровнях.
Для этого испытания мы скажем, что Лавовая Лампа содержит в общей сложности 1000 единиц воска, и у нас есть пять уровней, на которых может находиться воск.
1) Если значение n
ниже 45, лампа лавы все еще нагревается, поэтому на выходе будут четыре пустые строки с 1000
нижней частью:
1000
2) Если значение n
находится в пределах диапазона, [45, 60)
температура лавовой лампы достаточно высока, чтобы воск мог перемещаться, но пока не очень высокий. Воск может достигать вплоть до третьего уровня.
3) Если n
есть 60
или выше, воск может быть на любом из пяти уровней.
Поэтому, учитывая положительное целое число в n
качестве входных данных, мы выведем случайное состояние с учетом трех приведенных выше правил.
Вот несколько примеров выходных данных:
Возможные выходы для любого n
что есть >= 45
:
523
106
371
913
87
Возможные выходы для любого n
что есть >= 60
:
73
113
312
5
497
284
55
637
24
Постоянный вывод для n
этого есть <= 44
(и возможный вывод для любого n
):
1000
Правила соревнований:
- Могут быть пустые строки, даже если уровень над ним не пустой.
- Просто
0
не допускается ни на одной линии. Должно быть пустым вместо этого. - Вывод несколько гибкий. Вам разрешено выводить список / массив строк / объектов вместо результата, разделенного новой строкой, как описано выше. Причина, по которой я говорю «строки / объекты», связана с приведенным выше правилом. Пустая строка должна быть
""
,null
,[]
и т.д., но не может быть0
или отрицательное целое число ( и не может бытьfalse
) (т.е.["", "", 913, "", 87]
дляn >= 45
). Вы также можете изменить вывод (т. Е.1000\n\n\n\n
Вместо\n\n\n\n1000
или[87, null, 913, null, null]
вместо[null, null, 913, null, 87]
). - Числа должны быть целыми числами. Может быть десятичным
0
числом с десятичным значением, но ни одно из чисел не должно иметь десятичных цифр, а целые числа всегда должны точно совпадать1000
. - Все возможные случайные выходы на основе
n
должны иметь ненулевую вероятность возникновения. - Трейлинг новой строки (так что есть шесть строк вывода) допускается.
Основные правила:
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте придумать как можно более короткий ответ для «любого» языка программирования. - Применяются стандартные правила вашему ответу , поэтому вы можете использовать STDIN / STDOUT, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода.
- Кроме того, добавление объяснения для вашего ответа настоятельно рекомендуется.
0
отрицательного числа или false
.
n < 60
?
n < 45
только 1 уровень заполнен , однако (сверху или снизу в зависимости от того , вы выводите его), что 1000
. С 45 <= n < 60
тремя из пяти и со n >= 60
всеми пятью. Но вывод всегда будет содержать пять «строк».