Это сопутствующий вопрос для кроссвордов . Ответы грабителя идут сюда.
Посмотрите, куда мы должны положить грабителей? для мета-информации.
Это сопутствующий вопрос для кроссвордов . Ответы грабителя идут сюда.
Посмотрите, куда мы должны положить грабителей? для мета-информации.
Ответы:

На 7-Дауне мне пришлось немного выдумать, вызвав неопределенное поведение. es1024 указал, что это использование UB было намеченным решением. Это будет работать на компьютерах большинства людей, хотя. Я пришел с различными выражениями достижения желаемого результата , такие как -1 << 30, 3 << 30, 6 << 29и , ~(~0U/4)но все они сделали это невозможным для меня , чтобы получить 5-Across. Поэтому я использовал специфичное для архитектуры Intel свойство, состоящее в том, что для определения размера левого сдвига используются только 5 младших разрядов. Обратите внимание, что это должно быть, ~_а не ~1так, чтобы величина, на которую нужно сместиться, не была константой времени компиляции. Я проверил выражения с помощью следующего кода:
#define T(X) _ = c; _ = X; printf("%d\n", _);
z[4] = {9};
int main(c)
{
int _;
T("01"[0])
T(-8)
T(-2)
T(11<-328111)
T(+2+71)
T(9+0)
T(0**z)
T(5;)
T(0<-000)
T(2+~3)
T(!91)
T(!_)
T(2**z)
T('_T;')
T("11"?5*9:2)
T(15<<9)
T(0+22)
T(-211*0-97;)
T(-17*0)
T(3+0<<~_)
T(8+000)
T(+0)
T(42)
T(+!z)
T(~_)
}
#define Tнеобходимый компонент для вашего решения. Однако остается вопрос, почему работает M-через? Является ли определение многосимвольной константы только конкатенацией байтовых значений? Если так, я узнал кое-что новое сегодня. :)
int, поэтому вы можете вставить до четырех байтов без потери информации.
(Это решение на самом деле требует нескольких пробелов, так что это не тот, который искал профессорфиш.)
#K###I#'32
#HDJ*s\ ##
2##2#`#`#-
4Zm*`##L#3
m##6##]`'
f####e#`#'
`#0#'d1+eu
## #!####9
## '{;'"'m
C5(#}####q
Это было очень весело. Обратите внимание, что #под ним 6находится код, а не темная ячейка. Давайте пройдем через это:
Подсказка 2: [[4 3]]. Это был один из самых хитрых, потому что я действительно застрял на попытках 4Z]]`или подобном. Оказывается, вы можете использовать декартово произведение m*на вещах, которые не являются массивом, и он создаст для вас массив. Итак, вот оно:
4Zm*`
Подсказка 4: 24717. К тому времени , когда я добрался до этого H, J, sи замыкающие пространство уже были на месте. HРаздал , что я мог бы просто повторно использовать 17и делать \в конце. То Jесть, 19а 247 == 13 * 19, так:
HDJ*s\
Подсказка 7: 32. Есть куча способов сделать это: Y5#, 3 2, ZY, YZ\, 4(2, 2)2, '32. Я пошел с последним, потому что начинать с персонажа казалось многообещающим для 7-го, и это оказалось правильным.
Подсказка 8: E. У меня уже было время, 'dкогда я туда попал, так что это было между выбором 'd1+eu, 'deu1+или вариантом, в котором я использовал, )и пробелом вместо 1+(для людей, не являющихся CJam, это берет dсимвол и увеличивает его в верхнем регистре в любом порядке) , Тем не менее, uв последнем столбце выглядел полезным для А-вниз. Поэтому я выбрал первый из них. В итоге 'd) euтоже бы сработало.
Подсказка 9: "". Ну, это должно было быть «пустая строка, получить строковое представление, вставить пробел». Но также требовалось `для представления строки в 7-down, и пробел в A-down тоже казался полезным, поэтому я выбрал
]`'
Обратите внимание, что, ]возможно, также был одним из LMOQR.
Подсказка B: "m. Мне просто нужно было совместить это с остальными, но было мало персонажей, которые имели значение. Я уже имел {и m. Поэтому вместо использования блока я превратился {в персонажа, отбросил его, а затем выдвинул два обязательных символа:
'{;'"'m
Подсказка D: 124. Я решил это вместе с C-down, который был самым простым с уменьшением в конце. Поэтому я нажимаю 12, 5 и уменьшаю последнее:
C5(
Подсказка 1: [2 2 2 3]. Это выглядело слишком подозрительно, как главная факторизация, чтобы не быть таковой. :)
24mf`
Подсказка 3: 3010936384. Факторинг показал, что это на самом деле 38 6 . Единственный вопрос заключался в том, как получить 38соответствие в 2-х. В итоге мне понадобилось *третье место, так что удвоение 19было:
J2*6#
Подсказка 5: 2017. Два символа для такого большого числа? Просто используйте встроенные двузначные переменные:
KH
Подсказка 6: "18". Я думаю, что есть только один способ сделать это в 3 символа. Используйте встроенный 18, преобразуйте его в строку, а затем в ее строковое представление.
Is`
Подсказка 7: ' "\"\"". Наверное, самая сложная часть головоломки. В частности, мне нужно было получить "\"\""всего три персонажа. Хитрость заключалась в том, чтобы дважды получить строковое представление пустой строки. Это привело к:
' `L``+
Это +не обязательно, но было необходимо для 8-ми.
Подсказка 8: !{}. Блок должен был идти в коде, так что оставалось только два символа для !, что означало использование другого литерала:
'!{}
Подсказка A: -3u3. На u8-м месте я начал ставить -3и 3в поворотах, где ни один другой намек не заботился о них. Но тогда мне нужно было mвнизу. Я думаю, что есть несколько способов получить 3с _m_, но самым простым было взять квадратный корень из 9:
-3 'u9mq
Подсказка C: -1. У меня там уже был декремент, поэтому я просто положил туда, 0где больше никто не заботился:
0 (
Подсказка E: Stack: "". Ну, это был самый простой. Просто вызовите отладчик:
ed
COTO, Javascript ES4, 37 Darks
__________
|{}=51###6#|
|a##.#I-9<4|
|:##-##"#<#|
|5+Math.PI#|
|}##+##.#+#|
|["9"+0][0]|
|'##p##"###|
|a+-a#a=-10|
|'##c##=###|
|]##"\x48I"|
¯¯¯¯¯¯¯¯¯¯
5+Math.PIили Math.PI+5; но последний оставлял «М» и «ч» переходящими в другие выражения, казалось маловероятным."\x48I".xxxa, оценивая в ноль, так что -a + a? а + -a? 3 + -a? a+-aвыглядел лучше всего, так как он дал мне то, что выглядело как символ в строке в 1dn.{x:5}xxa'x. Поскольку возвращаемое значение равно 5, оно должно вытаскивать его из объекта {x:5}['a'], что означает, что последний отсутствующий символ также является:{a:5}['a']t={}=51, и это сработало. Не знал этого!5xxax"pac"=> "2pac". Как- 5-a+"pac"то так должно быть , поэтому второй символ должен быть "." для литерала с плавающей точкой.[xx"xxxx], возвращая «90». Так что это должен быть литерал массива с извлеченным значением; есть только место для одного значения, поэтому мы имеем [xx"xx][0]. Там не место для двух строк в там, но либо "9"+0или 9+"0"усмотрению.6<<Iоказался ответом, оставив +0 до конца.I-I<4, I-6<4и т.д.)-x..]xxx4. «..» бросил меня - есть только несколько способов, которые могут быть допустимым синтаксисом, и поэтому я спросил, является ли ES4 тем, для чего он предназначен - это была какая-то странная особенность этой заброшенной спецификации? Но потом я увидел, что это была красная сельдь; -""это NaN, поэтому -"..]"xx4должно быть то, что есть - сравнение с NaN, возвращающее false; '==' будет делать, но нужно посмотреть на последний ответ для подтверждения ...=-10. Честно говоря, я также посмотрел на более раннюю версию 9dn и понял, что должно быть что-то =top(чтобы вернуть окно). Переменная, назначенная для, может быть или I, это не имеет значения.Хитрая головоломка!

Для всех длинных выражений с плавающей точкой я создал программу на C ++ для принудительного генерирования математических выражений Python и их оценки. Предполагается, что все числа с плавающей точкой и поддерживает только операторы +, -, *, /, //, ** и ~. Я использовал его, чтобы получить каждый ключ длиной более 5 символов, кроме a**9*27%bхэша. С 6 или менее пробелами он заканчивается в течение нескольких секунд, в то время как 7 немного подождать.
Я думаю, что я играл в гольф очень хорошо, так как есть 14 мест.

Этот тестовый скрипт:
g=4;
o=magic(3);
D=@disp;
D(max([ 2]));
D( i^3);
D(o^0);
D(6 -7+eye );
D((i));
D(.1 ^5* g );
D(~2);
D(diag(~o) );
D(asin (1)*i);
D((93+7) +~g);
D( 10e15);
D(2*ones (2));
D(02 ^ 9 );
D(-i );
D(~o);
производит следующий вывод:
2
0 - 1.0000i
1 0 0
0 1 0
0 0 1
0
0 + 1.0000i
4.0000e-05
0
0
0
0
0 + 1.5708i
100
1.0000e+16
2 2
2 2
512
0 - 1.0000i
0 0 0
0 0 0
0 0 0