Кодовые кроссворды - Решения


Ответы:


8

Решение головоломки C10 от es1024

введите описание изображения здесь

На 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(~_)
}

Откуда берется макрос? Я избегал публикации решения, потому что я не мог получить M-через.
COTO

@COTO Я не понимаю ваш вопрос: "Откуда взялся макрос?"
feersum

Забудь. Я принял за #define Tнеобходимый компонент для вашего решения. Однако остается вопрос, почему работает M-через? Является ли определение многосимвольной константы только конкатенацией байтовых значений? Если так, я узнал кое-что новое сегодня. :)
COTO

@COTO Да, это все равно что сделать число с 256-ю цифрами. Символьные литералы имеют тип int, поэтому вы можете вставить до четырех байтов без потери информации.
feersum

3
Я конечно не знал этого. (Скорее всего, потому что все, кто использовал его в производственном коде, были задушены людьми, ответственными за поддержание их кода.) Пропаганда для правильной реализации. :)
COTO

8

Профессор, CJam, 41 тьма

(Это решение на самом деле требует нескольких пробелов, так что это не тот, который искал профессорфиш.)

#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

Хобби Кальвина говорил , ответ действителен. Я отредактирую это в своем посте

7

COTO, Javascript ES4, 37 Darks

 __________
|{}=51###6#|
|a##.#I-9<4|
|:##-##"#<#|
|5+Math.PI#|
|}##+##.#+#|
|["9"+0][0]|
|'##p##"###|
|a+-a#a=-10|
|'##c##=###|
|]##"\x48I"|
 ¯¯¯¯¯¯¯¯¯¯
  • 6 по горизонтали 5+Math.PIили Math.PI+5; но последний оставлял «М» и «ч» переходящими в другие выражения, казалось маловероятным.
  • Поперек должен был быть строкой; с 4 в середине это выглядело как побег, единственный способ, которым у вас есть место для этого, с "\x48I".
  • 2 теперь заканчивается строкой, поэтому, вероятно, к числу добавляется «pac»; мы вернемся к этому.
  • 8 переменного тока сейчас xxxa, оценивая в ноль, так что -a + a? а + -a? 3 + -a? a+-aвыглядел лучше всего, так как он дал мне то, что выглядело как символ в строке в 1dn.
  • 1 вниз содержал: 5, который мог быть только юридической грамматикой в {x:5}xxa'x. Поскольку возвращаемое значение равно 5, оно должно вытаскивать его из объекта {x:5}['a'], что означает, что последний отсутствующий символ также является:{a:5}['a']
  • 1 теперь имеет {в начале. Я догадался, что это было задание из красной сельди, попробовал t={}=51, и это сработало. Не знал этого!
  • 2 down теперь имеет 5xxax"pac"=> "2pac". Как- 5-a+"pac"то так должно быть , поэтому второй символ должен быть "." для литерала с плавающей точкой.
  • 7 переменного тока сейчас [xx"xxxx], возвращая «90». Так что это должен быть литерал массива с извлеченным значением; есть только место для одного значения, поэтому мы имеем [xx"xx][0]. Там не место для двух строк в там, но либо "9"+0или 9+"0"усмотрению.
  • 3 дн; 3072 - 3 * 1024; степень 2 подозрительна, и у меня уже было «я», блокирующее другие способы получения больших чисел (например, 1eX). Итак, угадал битовое смещение; 6<<Iоказался ответом, оставив +0 до конца.
  • 4 ac теперь содержит оператор сравнения; и второй символ должен был быть действительным унарным оператором (чтобы соответствовать и после 't =' и 'I'). Я догадался , «-», и есть несколько возможных решений остались ( I-I<4, I-6<4и т.д.)
  • 5 дн сейчас содержится -x..]xxx4. «..» бросил меня - есть только несколько способов, которые могут быть допустимым синтаксисом, и поэтому я спросил, является ли ES4 тем, для чего он предназначен - это была какая-то странная особенность этой заброшенной спецификации? Но потом я увидел, что это была красная сельдь; -""это NaN, поэтому -"..]"xx4должно быть то, что есть - сравнение с NaN, возвращающее false; '==' будет делать, но нужно посмотреть на последний ответ для подтверждения ...
  • У 9ac было несколько возможных решений, но ограничение на символы, которые были бы разрешены для 5dn, заставило меня думать, что это было еще одно назначение красной сельди; что - то =-10. Честно говоря, я также посмотрел на более раннюю версию 9dn и понял, что должно быть что-то =top(чтобы вернуть окно). Переменная, назначенная для, может быть или I, это не имеет значения.

Хитрая головоломка!


4

пазл grc's Python

кроссворд

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


3

Решение головоломки COTO MATLAB

Я думаю, что я играл в гольф очень хорошо, так как есть 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

Хорошее шоу. Несколько мест, которые я не ожидал, но в ключе тоже немало. Я опубликую это сейчас. ;)
COTO
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.