Как большой поклонник сериала « Потерянные» , я всегда был заинтригован последовательностью чисел, которая повторяется в эпизодах. Эти цифры:
( A104101 )
Используя любой язык программирования, напишите код, который выводит эти числа.
Подсчет очков:
Кратчайший ответ выигрывает
Вывод не должен содержать никаких других цифр или букв. Вы можете использовать любой другой символ в качестве разделителя или вообще не использовать разделитель.
Вы не можете разделять цифры одного номера. - правильный ответ, а - нет.
Вы должны уважать порядок.
Если в вашем коде нет ни одного числа из последовательности, уменьшите ваш счет на 30%. Это правило позволяет вводить цифры отдельно. Например:
abcde1fg5h
Является действительным кандидатом, потому что ответ не содержит число , только его цифры. Тем не менее, любые или аннулируют бонус.
Если код вообще не содержит цифр, уменьшите ваш счет на 50%. Другие символы, такие как , или , по-прежнему действительны для этого бонуса.
источник
restricted-source
тег, который можно было бы использовать здесь: хотя большинство ответов избегают очевидных решений, я думаю, что вызов был бы немного более интересным, если бы использование цифр было запрещено вообще.Ответы:
Потерянный ,
2927/2 = 13,5 байтПопробуйте онлайн! или убедитесь, что это детерминированный
Похоже, правильный язык для использования.
Объяснение:
Lost - это двумерный язык, где указатель начинается в любом месте и идет в любом направлении. Это обычно приводит к двойной проверке того, что указатель не вошел в раздел раньше.
источник
Желе , 7/2 = 3,5 байта
Печатает числа без разделителя, т. Целое число .4815162342
Попробуйте онлайн!
Как это устроено
“ƲÞIȥ’
является биективным основанием-целочисленным литералом 250.Ʋ
,Þ
,I
, Иȥ
имеют ( на основе 1) индексы , , и в кодовой странице Jelly, так что они кодируют целое число .Наконец,2 ⋅ 2407581171 = 4815162342
Ḥ
(unhalve) удваивает целое число, получая .Удвоение необходимо, потому что кодирование вывода непосредственно приводит к тому
“¡9)Ƙ[’
, что содержит цифру.источник
Neim ,
65 байт,32,5 баллаОбъяснение:
Попробуйте онлайн!
источник
05AB1E , оценка:
1097 байт / 2 = 3,5Попробуйте онлайн.
Или 7 байтов альтернативы :
Попробуйте онлайн.
Оба выводят целое число
4815162342
.Объяснение:
Посмотрите эту подсказку 05AB1E (раздел Как сжимать большие целые числа? ), Чтобы понять, почему
•‘o]Ê•
есть2407581171
и•’µ[%•
есть2432615184
.Старый 9-байтовый ответ выводит список
[4,8,15,16,23,42]
:-1 байт (и, следовательно, -0,5 балла) благодаря @Emigna .
Дольше, чем другой ответ 05AB1E , но выводит список
[4,8,15,16,23,42]
вместо целого числа4815162342
.Попробуйте онлайн.
Объяснение:
Посмотрите этот мой совет 05AB1E (разделы Как сжимать большие целые числа? И Как сжимать целочисленные списки? ), Чтобы понять, почему
•ΓƒÇ²•
есть1301916192
и•ΓƒÇ²•50в
есть[4,8,15,16,23,42]
.источник
•ΓƒÇ²•т;в
за 4,5, так как номера после сценария в порядке для бонуса.JavaScript (ES7), 34/2 = 17 байт
Попробуйте онлайн!
Это декодирует и оценивает выражение
"65058101+41**6"
, которое не содержит ни одной цифры, однажды закодированной в base-64.JavaScript (ES6), 13 байт
Скучное очевидное решение.
Попробуйте онлайн!
источник
Python 3 , 25 байт, 12,5 балла
Попробуйте онлайн!
𩦦 (髒, ⿰ 馬 葬), 𧨦 (謚, ⿰ 言 ⿱⿵ 八一 皿) стоят 4 байта, но U + 0657 стоит всего 2 байта ...
Python 3 , 29 байт, 14,5 балла
Попробуйте онлайн!
𩦦 (⿰ 馬 葬) - вариант символа 髒, что означает «грязный». 湡 это название реки. И они никак не связаны с этим вопросом, как мне известно.
источник
4815 162342
действительным. Таким образом,print(*map(ord,'ዏ𧨦'))
экономит 1,5 балла :) (print(*map(ord,'밗'))
сэкономит 2 балла, но был указан как недействительный).Brain-Flak , 52/2 == 26 байт
Попробуйте онлайн!
источник
Java 8, оценка:
1211,9 (70% из 17 байт)-0,1 балла благодаря @RickHitchcock .
Попробуйте онлайн.
Объяснение:
Старый ответ со счетом: 12 (50% из 24 байтов):
Содержит непечатный символ
0x1B
.Попробуйте онлайн.
Объяснение:
В Java символы могут автоматически помещаться в целые числа, содержащие их значение в Юникоде. К сожалению, максимальный поддерживаемый юникод для символов равен
65,535
, поэтому я не могу использовать только два символа для умножения (поскольку самые большие два числа, которые делят ожидаемое4,815,162,342
,56,802
и84,771
где, к84,771
сожалению, превышает максимальный65,535
.Кроме того, поскольку максимальный размер
int
равно 32 2 -1 (2,147,483,647
) и результат4,815,162,342
больше этого, требуется явное приведение кlong
, которое может содержать до 64 2 -1 (9,223,372,036,854,775,807
).Скучный ответ был бы 14 байтов без каких-либо бонусов:
Попробуйте онлайн.
источник
long
и не поддерживаются очень большие символы Юникода. Если бы не эти два упомянутых ограничения, было бы достаточноv->'𩦦'*'湡'
(15 байт, оценка 7,5). Но это все еще очень коротко. :) Хотя у Java в основном есть много-много недостатков в плане кодгольфинга (дух ...), вычисление с использованием символов, потому что нам не разрешено использовать цифры, является одной из его сильных сторон. Был также довольно полезен в этом довольно похожем моем ответе .v->767*6277917L+3
R 18x0,7 = 12,6 балла
Самоочевидно, просто делает некоторую арифметику, избегая рассматриваемых чисел.
источник
7 , 10 байтов, 27 символов
Попробуйте онлайн!
Упакованное представление этой программы на диске (
xxd
формат):объяснение
Мы видели эту последовательность чисел ранее, в статье «Автоматизация спасения мира» , где речь шла о печати чисел через равные промежутки времени, что делает ее интересной, поскольку требует использования очень старого языка. Тем не менее, гораздо более новые языки могут иметь свои собственные особенности, которые делают этот вызов интересным. (Да, этот абзац, и фактически причина, по которой я начал писать этот ответ, по сути, является просто способом отображения всех связанных проблем вместе на боковой панели; обычно люди делают это с помощью комментариев, но у меня недостаточно представителя .)
Первое, на что следует обратить внимание, это то, что 7 состоит из цифр, поэтому получение бонусов здесь вряд ли сработает (хотя если рассматривать программу как последовательность октетов, ни один из них не соответствует представлениям ASCII любого из исходных чисел , так что вы можете претендовать на бонус в этом смысле). Следующее, что следует отметить, это то, что 7 имеет команды для воссоздания последовательности команд, которая, вероятно, создала определенный фрагмент данных; можно ли интерпретировать потерянные числа
4815162342
как часть самой 7-й программы?Ответ "не совсем". Самая проблемная часть - это второй номер
8
. 7 программ написаны в восьмеричном виде; такого числа, как 8., нет, поэтому само начало строки должно быть напечатано иначе.Таким образом, база программы основана на программе "Hello world", которая представлена в следующем разделе:
с экранированным литералом в доменном языке, который интерпретируется следующим образом:
После этого прибывает дополнительный
3
, который выводит оставшийся элемент стека (и выходит из-за недостаточного оставшегося стека). Этот элемент указывается в начале программы, и чтобы избежать несоответствия6
(которое работает немного как закрывающая скобка), мы генерируем его, используя код, а не записываем его непосредственно как данные. (Обратите внимание, что7
в начале программы есть два подразумеваемых символа, которые здесь важны):Это производит следующий литерал:
который распечатывается.
источник
:(
05AB1E , 6 * 0,7 = 4,2 байта
Попробуйте онлайн!
Печатает номер без сжатия из базы-255
источник
MASM 8088 Источник сборки (93 байта - 50%) = 46,5 байта
Не используя номера или последовательность в источнике:
Выход:
источник
Древесный уголь , 13 байт / 2 = 6,5
Попробуйте онлайн! Ссылка на подробную версию кода. Работает путем вычитания ASCII-кодов строки
TPIHA.
из 88 и приведения к строке.источник
Aheui (эзотоп) , 45 байтов (15 символов) * 0,5 = 22,5 балла
Попробуйте онлайн!
Объяснение:
Смотрите также это; Aheui Reference ( английский )
Обратите внимание, что ㅁ (инструкция печати) перемещает курсор в обратном направлении, если стек (или очередь) пуст.
источник
Perl 5 , 16 байтов - 30% = 11,2
Попробуйте онлайн!
источник
PowerShell , 12 байт * 0,7 = 8,4
Попробуйте онлайн!
«Порт» ответа Xcali для лучшего ответа Powershell.
источник
naz , 46 байт, оценка 32.2
Просто выводит каждую цифру по
4815162342
одной за раз.источник
JavaScript, 143 байта (не знаю, как оценить)
Попробуйте онлайн!
Начните с шести
4
, умножьте, сложите, вычтите на,4
чтобы получить вывод.источник
4
, с добавлением, вычитанием, умножением и индексом числа4
в строке (или массиве) может использоваться для получения требуемых чисел.143*0.7=100.1
PHP, 35/2 = 17,5
цифровой подход: 40 * .7 = 28
без цифр, без строк: 68/2 = 34
Попробуйте их онлайн .
источник
<?=4815162342;
4815162342
. Или<?=~
+ 10 непечатаемых -> 15/2 = 7,5JavaScript (SpiderMonkey),
67 байт / 2 = 33,560 байт / 2 = 3058 байт / 2 = 2948 байт / 2 = 24-7 байтов / 3,5 , -2 байта / 1 предоставлено @JoKing, -10 байтов / 5 предоставлено @tsh
Попробуйте онлайн!
источник
print(a=-~-~-~-~[],a+=a,b=a+~-a,a+a,a+b,--b+b+b)
print(4815162342)
для 17 байтовAPL (Dyalog Unicode), 18/2 = 9 байт
Просто скучное старое умножение символов.
Попробуйте онлайн!
источник
JavaScript (ES6), 16 * 0,7 = 11,2 байта
Выводит цифры без разделителей.
Попробуйте онлайн!
источник
Пробел , оценка:
4941 байт / 2 = 20,5Буквы
S
(пробел),T
(табуляция) иN
(новая строка) добавляются только как подсветка.[..._some_action]
добавлено только в качестве объяснения.Попробуйте онлайн (только с пробелами, вкладками и новыми строками).
Псевдо-код:
Объяснение:
В пустом месте число выдвигается следующим образом:
S
: Включить управление стекаS
: Нажмите номерS
/T
: Положительный / отрицательный соответственноT
/S
сопровождаемые однимN
: десятичное число в двоичном виде, гдеT
1 иS
0После этого он просто печатается с
TNST
:TN
: Включить ввод / выводS
: Выводить верх стекаT
: Как числоисточник
F #, 45 байт = 22,5 балла
Просто обычный
for
цикл, который печатает цифры:Выше приведена полная программа, которую можно скомпилировать в исполняемый файл.
В REPL (цикл чтения-оценки-печати), например, FSI (F # Interactive), будет работать следующая более короткая версия, поскольку REPL выведет представление оцениваемого выражения; имеет 35 байтов = 17,5 балла:
источник
Пайк , 3 очка
Попробуй это здесь!
Первые байтовые сигналы считываются в базе 128, пока не будет установлен байт без старшего бита.
Наконец, 32 вычитается из результата (по историческим причинам).
Это позволяет генерировать большие числа в очень небольших количествах пространства
источник
MathGolf , 7 байтов * 0,5 = 3,5
Попробуйте онлайн!
объяснение
Обратите внимание, что этот код еще не работает на TIO. Недавно я внес некоторые изменения в MathGolf, включая добавление
$
оператора. Как только он будет загружен в TIO, вы можете запустить его там, я обновлю этот ответ. Отлично работает в терминалеЯ использую тот факт, что MathGolf имеет 1-байтовые литералы для создания строк длиной до 4. Если бы я хотел преобразовать все число из строки base-256, мне нужно было бы использовать два
"
, и строка была бы 5 персонажи. Таким образом, я экономлю 2 байта, но теряю один байт, имея в конце оператор удвоения.источник
Python 3 34 балла
источник
Python 3 ,
44381918,5 байт-6 байт благодаря @Jo King
-50% байт благодаря @ouflak за указание на 50% бонус
-1 байт благодаря @Dennis
Попробуйте онлайн!
источник
Japt,
109 байт / 2 = 4,5Проверь это
источник
Befunge-98 (FBBI) , 15 байт / 2 = 7,5 балла
Попробуйте онлайн!
Объяснение:
источник