Это мой первый турнир по гольфу.
Что тебе необходимо сделать
Создайте мне, как можно меньше байтов, мою систему дистанционного управления AC. В моей комнате сейчас слишком холодно, и я скучаю по своему пульту.
Теперь, я не хочу, чтобы вы буквально строили это или что-то еще, просто игра в гольф:
Медленный прирост температуры, начиная с 40 градусов и заканчивая ровно 72. Время приращения всегда должно составлять 500 миллисекунд на приращение. Это может подождать еще 500 мс в конце. Я предпочел бы это остановить однако. Сам прирост должен увеличиваться на два каждый раз, как мой пульт.
Вы не должны очищать экран. Вы должны иметь переводы строк.
Что должно произойти
Пример вывода (все в скобках выводить не следует).
40
(wait 500 millis)
42
(wait 500 millis)
44
(..repeat until 72..)
72
(stop or wait 500ms)
Имейте в виду, это мой первый гольф, поэтому я прошу прощения, если это слишком сложно для гольфа. :(
Удачи, гольфисты!
Ответы:
Утилиты Bash + Linux, 19
seq
генерирует числовой вывод.pv
ограничивает скорость до 2 строк / секисточник
-q
подавляются на STDERR, поэтому я не думаю, что вам это нужно.Minecraft 1.9.0+,
204162 байта +5836282420 блоков =262240232186182 байтЭто решение отлажено, и его нельзя увидеть целиком в одном или даже в двух скриншотах. Использует два глюка и злоупотребляет еще двумя особенностями игры
Это решение использует те же принципы, что и ниже, только в 4 блоках более компактный дизайн.
Злоупотребляет тем фактом, что цепочки командных блоков (зеленые блоки) не могут быть приведены в действие красным камнем, а только синглом из импульсного командного блока (оранжевым).
Злоупотребление тем фактом, что поршни полностью расширяются за 0,30 секунды, а Redstone требуется всего 0,10 секунды, чтобы зарегистрировать сигнал.
Также использует двойной глюк, чтобы отключить таймер (TNT): красный камень рядом с таймером (TNT) не только получает питание, но и думает, что TNT является еще одним красным камнем и приводит его в действие.
Вдобавок ко всем этим злоупотреблениям, укорочение сигнала (вещь под TNT) является одноразовым, после того, как оно получает питание, оно меняет форму, позволяя передавать сигнал через него на «инкрементатор» (самый верхний оранжевый блок)
Небольшое объяснение функциональности его различных частей можно увидеть в более старых решениях (но лучше всего в приведенном ниже). Вы также можете попробовать это в автономном режиме! (упрощенное решение, увеличивающееся на 4, работает только в 1.11+) , выполнив эту команду в командном блоке .
Старое решение, Minecraft 1.9.0+, 186 байт:
Поскольку TNT обычно взрывается через 3 с в Minecraft, этот должен быть помещен командой (
/setblock
) с указанным предохранителем. Также используется более компактная конструкция для удаления избыточного блока команд (содержащего 42 байта) и редстоуна по сравнению со старыми версиями. Я уверен, что это не может быть ниже ...Более старое решение, Minecraft 1.9.0+, 232 байт:
К сожалению, я обнаружил увеличение этих старых решений на 4 ...
Для сохранения блоков используется функция цепочки блоков команд 1.9 (зеленый блок). Также использует более компактный укороченный сигнал, чем в старых решениях
Еще более старое решение, Minecraft 1.7.0+, 240 байт:
Использует более компактный таймер (TNT), чем первое решение (ниже).
Самое старое решение, Minecraft 1.7.0+, 262 байт:
Это так долго из-за того, как Minecraft обрабатывает переменные:
Чтобы определить переменную (int):
scoreboard objectives add <variable> dummy
Чтобы установить значение для переменной (каждый объект, включая игроков, имеет свое собственное значение переменной):
scoreboard players set <entity> <variable> <value>
*
может использоваться как<entity>
для выбора всех объектов и сохранения байтов.можно использовать только определенные переменные
значение переменной должно быть установлено на число, а не на переменную
Чтобы увеличить var1 на var2:
scoreboard players operation <entity> var1 += <entity> var2
<entity>
должен быть единым целым, например.@p
не*
Скриншоты мои, с двойной лицензией под WTFPL, и какую лицензию SE решит использовать сегодня (в настоящее время
cc by-sa 3.0 with attribution required
) :-)источник
Vim,
24, 23 байта / нажатия клавишОдин байт сохранен благодаря @Kritixi Lithos!
Написано с моего телефона, проверено в мобильном vim (что, видимо, реальная вещь).
Вот гиф этого бега:
А вот объяснение команда за командой:
источник
s
В неms
является обязательным, вы можете удалить его , чтобы сохранить байт :)JavaScript (ES6), 52 байта
источник
f=(i=40)=>setTimeout(i>70||f,500,i+2,console.log(i))
. К сожалению, все те же 52 байта.50
байты, поскольку вам не нужно считать наf=
основе мета-консенсуса, что анонимные объявления функций разрешены?f=
требуется, потому что функция должна вызывать себя (как первый параметр дляsetTimeout
).Желе ,
1312 байтПопробуйте онлайн! Программа Jelly обернута в сценарий Bash, чтобы поставить перед каждой строкой выходных данных метку времени.
Как это устроено
После последней итерации конечное значение 72 печатается неявно, и программа завершается.
источник
Perl 6 , 30 байт
Извините, что это похоже на код без кода, я не вижу способа сделать его короче ...
Версия, которая останавливается сразу после последнего номера, будет 37 байтов:
источник
36
?.say&sleep(.5) for 40,42...72
29 байт{
Кронштейн следующего другое выражение без пробелов, интерпретируются как начало хэша ( «ассоциативный массив») нижний индекс. Perl 6 такой строгий, потому что его грамматика была специально разработана, чтобы позволить однопроходный синтаксический анализ исходного кода без (почти) обратного отслеживания.Pyth - 12 байт
Очень просто, использует цикл for от 0-17.
источник
TI-Basic (только CE или CSE), 16 байтов
Обратите внимание, что многие команды являются однобайтовыми токенами.
источник
For(
,Pause
,End
, И колоны в начале строки все одиночные байты.MATL , 14 байтов
Попробуйте это в MATL Online! Возможно, вам придется перезагрузить страницу, если она изначально не работает.
объяснение
Старая версия (до изменения спецификации), очистка экрана
Попробуйте это в MATL Online!
источник
Dyalog APL , 20 байтов
{
анонимная функция⎕DL
задержка ....5⊣
половина (секунда), а не значение⎕←
печать (с новой строки)⍵
Аргумент}¨
применяется к каждому из38+
тридцать восемь плюс2×
дважды⍳17
целые числа от 1 до 17источник
C скомпилирован с Clang 3.8.1 в Linux,
625958 байт2 байта сохранены благодаря @ranisalt
59 байт
62 байта
источник
** ... **
в разметке, тогда как традиционный заголовок на этом сайте использует# ...
. Я отредактировал ваш ответ, чтобы вы могли видеть, как это делается.s<72
сохраняет другой байт.Царапина, 5 блоков
(дисковое пространство 56.0kb)
(извините за низкое разрешение!)
Самоочевидно, правда. Значение переменной отображается в поле на «сцене».
источник
Mathematica, 34 байта
Полная программа. Не требует ввода и вывода на STDOUT.
источник
R, 49 байт
Очень тривиальное решение, но оно делает свое дело.
источник
for
-loop точно такой же длины.Perl 6 , 27 байт
say
возвращаетTrue
, который приводится к числовому1
при делении на2
.Unicode shenanigans может получить до 23 символов:
Но это 29 байтов в кодировке UTF-8.
источник
Python 2,
57 5655 байтРЕДАКТИРОВАТЬ:
-1 байт благодаря Mega Man
-1 байт благодаря Flp.Tkc
источник
Рубин, 33 байта
источник
C #, 95 байт
Это простой цикл, он ждет дополнительных 500 мс в конце.
источник
QBIC , 21 байт
QBIC запускает цикл FOR, работающий с 44 до 72 и увеличивая счетчик на 4 в каждом цикле. Затем он спит в течение 1 секунды. У QBasic нет более тонкого контроля
sleep
, поэтому я добавил.
имитацию дачи.5
в качестве аргумента.источник
Котлин, 47 байтов
Я предполагаю, что в формулировке проблемы не было сказано, что решения должны содержать увеличение на два, так что
40+2*i
здесь это законно.Если написано как обычный источник Kotlin с
main
:(77 байт)
UPD : в Kotlin 1.3
args:Array<String>
его можно удалить, так что это на 18 байт меньше.А в Kotlin Script вся программа будет
(47 байт)
источник
Рубин 31 байт
Попробуйте онлайн!
источник
Haskell, 67 байт
Если вы хотите использовать только ghc, вы можете сохранить несколько байтов, импортируя
GHC.Conc
и используяthreadDelay
вместоusleep
.источник
php, 38 байт
использует подчеркивание в качестве разделителя. Беги с
-nr
.источник
Clojure, 54 байта
Третий лист Просто выполняйте итерации по всему диапазону, печатая и пересылая каждую итерацию. Спит в конце.
Ungolfed:
Версия, которая не спит в конце, 66 байт
Обратите внимание, что это полные программы, так как инструкции не указывают. Добавьте байт к каждому, если требуется функция.
источник
Ракетка 46 байт
Ungolfed:
Команда для запуска:
(f)
источник
Октава,
3835 байтСохраненные 3 байта благодаря @LuisMendo пути изменения
endfor
вend
Попробуйте онлайн!
Я новичок в Octave, так что это решение может быть еще лучше. Любые советы приветствуются!
Ungolfed
источник
Python 2,
5758 байтредактировать
На моем счету 57 байтов, но TIO говорит 58 теперь, когда я вернулся на свою машину, так что это мое последнее предложение. Интересно, что TIO, похоже, не соблюдает тайм-аут и просто ждет, а затем распечатывает весь список за один раз. Работает на QPython для Android и Python 2 на моем Ubuntu, так что мне этого достаточно.
Попробуйте онлайн!
Было бы
5859 в Python 3, так что не бьет @ sonrad10 в любом случае.источник
range(...)
R,
4442 байтаПрямой цикл, скорее всего, есть более подходящий путь. (Кроме того, перечеркнутый 44 все еще обычный 44 ...)
источник
F #, 60 байтов
async{for i in 40..2..72 do printfn"%d"i;do!Async.Sleep 500}
Это асинхронное выражение, чтобы запустить его, передайте его в
Async.Start
илиAsync.RunSynchronously
.источник
Noodel , неконкурентный 10 байтов
Не может соревноваться, потому что Нудель родился после того, как был создан вызов :(
Попробуй:)
Как это устроено
Нет версии Noodel, которая поддерживает синтаксис, использованный в этом ответе. Вот верная версия:
источник