Это сопутствующий вопрос для кроссвордов . Ответы грабителя идут сюда.
Посмотрите, куда мы должны положить грабителей? для мета-информации.
Это сопутствующий вопрос для кроссвордов . Ответы грабителя идут сюда.
Посмотрите, куда мы должны положить грабителей? для мета-информации.
Ответы:
На 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
. На u
8-м месте я начал ставить -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