Вступление:
Я думаю, что все знают, что такое Лава Лампа, но на случай, если они этого не сделают:
В основном это стеклянные трубки, которые содержат воск в полупрозрачной жидкости. Нижняя часть нагревается при включении лампы, вызывая изменение плотности, и, таким образом, воск всплывает наверх. Когда он остывает, он снова падает, вызывая эффект, который мы видим выше.
Обычно требуется около 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
всеми пятью. Но вывод всегда будет содержать пять «строк».Ответы:
MathGolf ,
2120 байтПопробуйте онлайн!
Это мой первый ответ на моем новом языке. Я основал свое решение на решении 05AB1E от Emigna, но использовал некоторые удобные функции MathGolf, чтобы сделать его чуть короче.
объяснение
источник
Python 2 ,
117113108107106105 байтПопробуйте онлайн!
Возвращает перевернутый список (сначала внизу)
Версия, вдохновленная ответом stackoverflow в комментариях (крайние случаи более вероятны):
Python 2 , 129 байт
Попробуйте онлайн!
источник
333
или200
для 3 или 5 частей соответственно. Я не вижу никаких всплесков / выбросов в сторону0
или1000
. Или шансы для тех, кто просто астрономически мал (но все же ненулевой) по сравнению с целыми числами рядом333
и200
?0
или0-2
или0-4
) и подсчитывается. Шансы на то, что никто из них не пойдет, есть, но очень малы.JavaScript (ES6), 78 байт
Возвращает обратный массив, в котором пустые уровни заполнены пробелом.
Попробуйте онлайн!
комментарии
источник
R ,
8584 байта-1 байт благодаря @Giuseppe
Попробуйте онлайн!
Объяснение (без присмотра):
источник
NA
разрешено как пустая строка / элемент, вот 77-байтовое решение ( попробуйте онлайн! ) Или 80-байтовое решение ( попробуйте онлайн! ), Если имена элементов являются проблемойC (gcc) ,
131,116,90,89, 87 байтовПопробуйте онлайн!
Обновление : исправлена ошибка в оригинале. Слит с функцией помощника, уменьшая дополнительные 15 байтов.
Обновление 2 : -25 байт благодаря ErikF.
Обновление 3 : -1 байт благодаря потолку.
Degolf
источник
puts()
, объединив печать в одинprintf()
и поместив вычитание в конец цикла. Кроме того, я думаю, что вы можете поместитьsrand()
инициализацию в вызывающую программу. Попробуйте онлайн!05AB1E ,
272625 байтовСохраненный байт благодаря Аднану .
Сохранено еще один байт благодаря Кевину Круйссену .
Попробуйте онлайн!
объяснение
источник
5Å0
иǝ
, иε0Û
в конце. Я пытался придумать что-то более короткое, но я не могу. У меня есть ощущение, что это все еще можно сыграть в гольф, но в настоящее время я этого не вижу (возможно, это невозможно, и это просто случайное чувство).•A–•60в
на 1 байт длиннее, чем44 59‚
вместо короче. Иε0Û
замена0
s на пустые строки также представляется самой короткой из возможных, поскольку0K
просто полностью удаляет 0 и0м
удаляет любую цифру0
во всех числах.44 59‚
, но я не могу найти его (•H|•2ô
это тот же счет). Мое предыдущее решение (также 27 байт) использовалось,45
и60
его было проще генерировать по-разному, но я думаю, что оно было недействительным, поскольку оно выводило 1 , 3 или 5 уровней в зависимости от ввода и не всегда 5 .•H|•2ô
это действительно умный способ, не думал об этом. И это действительно должно вывести 5 строк. Я действительно видел ваш предыдущий ответ и собирался комментировать, вывел только 1 строкуn < 45
, но затем вы удалили его. Рад, что вы нашли другое 27-байтовое решение. :)ŽH|2ô
это то, что вы ищете?JavaScript (Node.js) ,
8786 байтПопробуйте онлайн!
83-байтовое решение (
(n/15-2|0)*s<4
) зарезервировано первым, потому что мне нужно проверить на большееn
.ОБНОВЛЕНИЕ: Да,
(n/15-2|0)*s<4
не работало, потому что для большего,n
потому чтоn
достаточно большой делает сумму не в состоянии достигнуть 1000.источник
PHP, 92 байта
Запустите как трубу с
-R
или попробуйте онлайн .источник
Чисто , 215 байт
Попробуйте онлайн!
Так что я , наконец , нашел более короткий путь , чтобы получить случайное зерно , чем импортировать
System._Unsafe
,System.Time
и используяtoInt(accUnsafe time)
...И мальчик это действительно в духе codegolf - вложению вызова C, игнорируя мировой тип состояния обычно используется для обеспечения оценки порядок таких вещей.
источник
Ява (JDK 10) ,
121117113111 байтовПопробуйте онлайн!
Он склонен к тому, чтобы наносить больше воска вверху, но теоретически возможно появление любого легального воска.
изменить: 4 байта были сохранены @KevinCruijssen
В человекочитаемой Java:
источник
Math.random()*(w+1)
может бытьMath.random()*-~w
для -2 байтов. Здесь соответствующий совет в качестве ссылки, почему. , Хороший ответ! +1 от меня. РЕДАКТИРОВАТЬ: На самом деле, еще 2 байта могут быть сохранены с помощьюj
временного в качестве переменной дляw+1
(так как он все равно будет перезаписан сразу после печати) и использоватьj*=Math.random()
вместо этого, чтобы вам не понадобилось приведение к(int)
( 117 байтов ).&i>2
условие не является необходимымPowershell ,
188162 байтаПопробуйте онлайн!
-2 байта от @Kevin Cruijssen
-4 байта путем удаления необязательного глагола
-20 байтов путем сокращения цикла и удаления пробелов
источник
else{if($t-ne 1e3){Get-Random(1000-$t)}}
чтобыelseif($t-ne 1e3){Get-Random(1000-$t)}
? Я вижу, что вы использовалиelseif
ранее в своем коде, так что это должно сэкономить вам 2 байта. Также, возможно, Советы по игре в гольф в Powershell или Советы по игре в гольф на <все языки> могут вдохновить вас на большее? Приятного пребывания! :)Паскаль (FPC) ,
192190 байтовПопробуйте онлайн!
Использование метода упаковки в контейнеры TFeld . Сначала печатает нижний ряд с последующим переводом строки.
Кажется, с FPC проблем нет
random(0)
, поэтому у меня есть несколько необычных добавлений.Мое оригинальное представление, гольф до 209 байтов:
Попробуйте онлайн!
источник
Уголь , 37 байт
Попробуйте онлайн!Ссылка на подробную версию кода. Объяснение:
Цикл дважды, дважды. В качестве альтернативы я мог бы получить целое число, разделившее индекс цикла на 2 для того же количества байтов.
Если внешний индекс плюс пятнадцатая температура больше трех ...
... затем нажмите случайное целое число до 1000 включительно - сумму пока. К сожалению, Charcoal не может вычислить сумму пустого списка, поэтому мне нужно заменить пустую строку.
Вставьте оставшуюся сумму в список.
Преобразуйте список в строку, но используйте пустую строку вместо нуля.
источник
Желе , 28 байт
Полная программа печати результата (вверх ногами, как было разрешено).
Попробуйте онлайн! - это изменено для использования,n > 59 список 1015 5-кортежи строятся, а затем фильтруются, из чего выбирать)
7
а неȷ
(1000), потому что реализация очень медленная! (...заКак?
источник
1000\n\n\n\n
Вместо\n\n\n\n1000
или[87, null, 913, null, null]
вместо[null, null, 913, null, 87]
). » Так что да, вам разрешено использовать 28-байтовую версию безṚ
.Веточка , 126 байт
Это было действительно забавное испытание!
Этот код создает макрос, который должен быть импортирован.
Чтобы импортировать это, просто сделайте это:
Это должно сделать свое дело.
Вы можете попробовать это на https://twigfiddle.com/t4dfgy.
Примечание : из-за того, что страница удаляла пробелы, я был вынужден добавить
-
в конце строки, чтобы доказать, что она выводит правильное количество строк.При обычной установке вы просто увидите новые строки без проблем.
источник
Perl 6 , 62 байта
Попробуйте онлайн!
Блок анонимного кода, который принимает строку и возвращает список целых чисел с
Nil
пустым списком ([]
) вместо0
s.Объяснение:
источник
PHP ,
113108999793 байтаПопробуйте онлайн!
-11 байт благодаря @titus
-9 байт, потому что все является строкой
источник
J ,
565554484340 байтПопробуйте онлайн!
-3 байта благодаря FrownyFrog
Другой концептуально приятный метод, который немного длиннее, но гарантирует идеально равномерное распределение по всем возможностям, в соответствии с методом здесь :
J , 53 байта
Попробуйте онлайн!
источник
$!.a:
просто{.
?PowerShell ,
11510598 байт-17 байт благодаря маззи
Попробуйте онлайн!
Гольф Эдвина прекрасный ответ . Если вам это нравится, проголосуйте за него.
источник
Рубин ,
6255 байтПопробуйте онлайн!
Испытания ограничены до 0-99 градусов, потому что лавовые лампы могут быть опасны при более высоких температурах:
источник
0
для пустых строк. Пустые строки в массиве может быть что угодно , за исключением0
,false
или отрицательное число. Так что может бытьnull
,""
,[]
и т.д., но не0
. Не уверен, что в Ruby есть объектные массивы / списки, так что вы можете преобразовать0
s во что-то другое, но если нет, вам придется печатать их, а не возвращать массив / список.