Если вы думаете, что это может быть весело, но слишком много работы, подумайте об участии в этом гораздо меньшем испытании.
Немного веселья (и, возможно, разочарования!) На 2016 год ... «Головоломка года» Дьялога . Наслаждайтесь!
Цель
Найдите выражения Dyalog APL ( скачать ) (допускаются другие языки, см. Ниже раздел «Право на участие» ), включающие ровно цифры 2 0 1 6 в таком порядке, чтобы они равнялись числам от 0 до 100.
20=16
×2016
2⌊016
2+0+1*6
...
Цель состоит в том, чтобы в каждом выражении использовалось как можно меньше символов (минимальное количество символов для выражения - 5 - четыре цифры 2 0 1 6 и одна примитивная функция / оператор).
Правила
- Каждое выражение должно содержать цифры 2 0 1 6 (в таком порядке) и никаких других цифр. Предварительно установленные константы и переменные также не допускаются.
- В дополнение к четырем цифрам 2 0 1 6 могут использоваться только встроенные символы и имена, скобки / скобки, пробелы, знаки высокого минуса и десятичные точки. Результирующие выражения должны быть детерминированными (то есть давать одинаковый результат при повторных оценках). Для не-APL также допустимы функции / операторы с именем; те же правила, что и здесь .
- Примите все настройки по умолчанию для вашего языка. Для Dyalog APL, это означает ,
⎕ML
и⎕IO
оба равны 1, и⎕PP
10. - Каждая запись, содержащая правильные выражения для всех чисел от 0 до 100 включительно, будет оцениваться в соответствии с количеством символов, используемых этими выражениями, исключая лишние пробелы (минимум 505 для всех 101 выражений).
приемлемость
Любой может войти. Вы можете ответить на любом языке, но только ответы APL будут рассматриваться для принятия. Если вы используете язык, отличный от APL, вы можете использовать фрагменты, программы, функции и т. Д. В качестве альтернативы выражениям, и вы можете распечатать, оставить число в доступной ячейке памяти или иным образом вернуть результат, если ваш код напрямую оценивает желаемое число как любой стандартный числовой тип данных для вашего языка.
Дата закрытия
30 ноября 2016 г.
Призы
- Ваш ответ принят
- Будьте увековечены в Зале Славы Dyalog 2016!
Отправка вашей заявки
После 30 ноября 2016 года я приму кратчайший ответ и отправлю ваш ответ на ваше имя в Зал славы Dyalog 2016 года.
Вопросы-Ответы
- Является ли
J
(например , 37 =⌈⍟!20J16
) разрешено? - Нет: в дополнение к четырем цифрам 2 0 1 6 можно использовать только встроенные символы и имена, скобки / скобки, пробелы, знаки высокого минуса и десятичные точки.
- Является ли вывод в виде строки приемлемым?
- Нет: равны числам от 0 до 100.
- Физические цифры или цифры данных?
- Цифры данных согласно OP: те же правила, что и здесь , где содержится один из примеров
LOG10(
. - Допустимо ли присваивать переменные, используя их как часть выражения (например, 56 =
a+16+a←20
)? - Да, но вы не можете использовать присваивание из одного выражения в другом.
У меня есть явное письменное разрешение опубликовать эту проблему здесь от первоначального автора этой проблемы. Не стесняйтесь проверить, перейдя по предоставленной ссылке и связавшись с автором. Я дал первоначальному автору конкурса ссылку на эту страницу в ту минуту, когда я ее опубликовал, чтобы они могли проверить, отправляю ли я чей-либо ответ как свой собственный.
⎕ML
и⎕IO
(предположительно1
) быть приемлемым?Ответы:
Желе, 686 байт
Я написал около 50 из них, а затем автоматически сгенерировал остальные, добавив
Ḥ
(× 2) и‘’
(± 1) по мере необходимости. Я улучшу их позже!источник
201ÆCo6
. Я не думаю, что вы можете использоватьṾ
(который был реализован в феврале), но20|16Ḥ‘Ḥ
и20|16‘ḤḤ’
одинаково короткие.Ḥ
более‘’
- 46, в том числе с четырьмя другими номерами, должны быть один символ короче. Я заменил его,2016½Ċ‘
который так же долго, как ваш.Гексагония , 888 байт
Хорошо, сначала несколько основных правил для гексагонии, на случай, если кто-то захочет победить это:
2|016
для 22), но это, кажется, больше всего в духе задачи.Итак, вот список. Я протестировал большинство из них, но не все (некоторые из них являются тривиальными модификациями других), поэтому я надеюсь, что не допустил ошибок:
Мне немного лень к концу, так что я уверен, что это не оптимально. Может быть интересно (и возможно) перебрать их.
источник
J
1041... 838 байт981961952860859Я немного ленив до конца, но это должно быть больше исправлено, чем меньше.
Я не думаю, что когда-нибудь настигну Гексагонию, но ты никогда не узнаешь!бить гексагонию! Сохранено 9 байтов благодаря Zgarb! и многое другое для Линн!Основные моменты и Примечания
Я использовал простые числа много в этом. На самом деле, я использовал
p:
(N-е простое) функцию 37 раз в этой вещи.90 был сделан с помощью вилки. Ура! Это примерно так:
Переводится как
54 использует шейпинг в форме!
Эквивалентно
источник
!20-16
54:<.^20-16
55:>.^20-16
97:p:!20-16
+:p:-2-016
(4 байта короче)?2]01+6
, 8 может быть2%~016
и 12 может быть2*01]6
.JavaScript, 1021 байт
Исправлено и сохранено два байта благодаря Чарли Винну и ETHProductions .
источник
2-~01+6
как 10 и-~!2016
как 1.JavaScript (ES7), 836 байт
Все должно работать в любом браузере, кроме 81, 88 и 97, которые используют новый
**
оператор.В основном все здесь было сделано вручную. Я работал над грубой силой, чтобы улучшить все, что можно улучшить. В настоящее время он сэкономил 103 байта на различных элементах.
Brute-Якорь
Это не самый красивый код, но, кажется, это не имеет значения для этих частей.
ВНИМАНИЕ: Не запускайте, если вы не готовы к зависанию вашего браузера / движка на несколько минут. Никто не любит вычислять 7 вложенных циклов.
источник
PowerShell v3 +,
15751499 байт100% игра в гольф вручную - никаких программ перебора или других вспомогательных средств.
Я чувствую, что 1500 может быть в пределах досягаемостиSub-1500 достигнут! Посмотрим, насколько хорошо я смогу добиться этого. (Примечание: это было протестировано только в v4, но должно работать в v3 и v5 без изменений. Не будет работать в v2 или v1, поскольку в этих версиях не было операторов побитового сдвига.)
Ключевые точки отмечены
##.hashes.##
в приведенном выше коде.# 11 - первое присваивание переменной
$a
. В отличие от некоторых других языков, переменные не нужно предварительно инициализировать для анализа, и только во время выполнения переменные разрешаются. Так как($a=01)
символ окружен паренами, он оценивается первым, и поэтому второй-$a
эквивалентен-1
. Это используется довольно широко с этого момента, и является одной из самых больших вещей, сдерживающих byountount.№ 17 показывает первое использование
!
для логического не. В PowerShell типы приводятся довольно свободно, поэтому, если приведение может подразумеваться, оно будет работать. Здесь мы используем тот факт, что!!20
равен!$false
, то есть$true
, который может быть неявно приведен как[int]1
, что приводит к17
. Это используется несколько раз, чтобы либо получить другой,1
либо заставить часть перейти0
.# 22 Демонстрирует
0x
шестнадцатеричный оператор приведения, здесь превращается0x16
в22
. Однако, поскольку0x16
это единственное число, которое мы можем получить, его полезность ограничена.# 23 имеет
-bor
оператор для «двоичного или.» Однако, поскольку оба-bor
и-bxor
имеют меньший приоритет, чем простые арифметические операторы, для их использования обычно требуются символы скобок, что серьезно ограничивает полезность. Это единственный, который я нашел, где короче использовать двоичный файл или оператор (я исключил-bxor
оператор из 22).# 30 - это первый раз, когда
-bnot
вводится оператор. Это оператор «двоичное не», и он работает аналогично~
(например, в JavaScript). Тем не менее, обычно нужны парены, так как отрицание будет отображаться как--bnot
и приведет к ошибке синтаксического анализа / синтаксиса, и, так как это пять символов по сравнению с одним для~
, оно используется редко.# 39 - первое использование наших двоичных операторов сдвига,
-shl
и-shr
. Они похожи на другие языки<<
или похожи на них>>
, но явно диадичны, что означает, что нам нужно число с обеих сторон для их работы, что ограничивает их полезность в этой задаче. Кроме того, их приоритетность явно не указывается в документации, но тестирование показывает, что они ниже, чем простая арифметика, а это означает, что парены должны использоваться свободно, поэтому они не выглядят так, как в ответах на других языках.источник
CJam,
792791 байтВ конце концов, я немного ленился, многие из них просто заканчивали тем, что увеличивали и уменьшали (101 - много!), Хотя я не уверен, есть ли другой способ для некоторых чисел. Там еще много времени, чтобы поиграть в гольф, если мне нужно.
Вокруг # 40 есть некоторые странные лица;)
источник
Mathematica,
2912250222822180 байтМожет определенно быть golfed дальше. В основном просто решает несколько отдельных уравнений Фробениуса, что дает решения длины O ( n ). Остальные были созданы моим брутфорсером.
источник
c
в16
случае , если номер еще и большой? Как для 96 и т. Д. Не знаете, как работает ваш решатель уравнений, но использованиеa=20
должно также быть полезным для некоторых из них?Dyalog APL (это шутка, пожалуйста, не отправляйте), 25 957 байт.
Да, это шутка, нам нужно решение APL, даже если оно совершенно ужасно. Работает, увеличивая
≢⍬
(0
)n
раз. Я не хочу раскрывать секреты моего представления.Очевидно, можно играть в гольф гораздо больше.
источник
JavaScript, 5244 символа
Вероятно, можно играть в гольф намного дальше. Тест в консоли Chrome. Я вроде сдался в 10.
источник
Java 7, 1083 байта
Для подсчета байтов я только посчитал выражения в скобках. Так что я исключил
System.out.println
с иclass
. Включая те, это будет 3049 байт .PS: Не совсем уверен, что int-приведение для
72
является допустимым .. Хотя он все равно добавляет 5 байт ..Ungolfed & тестовый код:
Попробуй это здесь.
источник