Esta é a pergunta complementar das palavras cruzadas de código . As respostas dos ladrões estão aqui.
Consulte Onde devemos colocar ladrões? para meta-informação.
Esta é a pergunta complementar das palavras cruzadas de código . As respostas dos ladrões estão aqui.
Consulte Onde devemos colocar ladrões? para meta-informação.
Respostas:
Eu tive que enganar um pouco o 7-Down invocando um comportamento indefinido. es1024 indicou que esse uso do UB era a solução pretendida. Porém, ele funcionará nos computadores da maioria das pessoas. Eu vim com várias expressões alcançar o resultado desejado, como -1 << 30
, 3 << 30
, 6 << 29
e, ~(~0U/4)
mas todos eles tornou impossível para mim para obter 5-Em todo. Então, usei a propriedade específica da arquitetura Intel, que apenas os 5 bits menos significativos são usados para determinar o tamanho de um turno à esquerda. Observe que ele precisa ser ~_
e não ~1
para que a quantidade a ser alterada não seja uma constante em tempo de compilação. Testei as expressões com o seguinte código:
#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
componente como necessário à sua solução. A questão permanece, no entanto, por que o M-across funciona? A definição de uma constante de vários caracteres apenas concatena os valores de bytes? Nesse caso, aprendi algo novo hoje. :)
int
, para que você possa inserir até quatro bytes sem perda de informações.
(Na verdade, essa solução requer vários espaços, portanto não é o que o professorfish estava procurando.)
#K###I#'32
#HDJ*s\ ##
2##2#`#`#-
4Zm*`##L#3
m##6##]`'
f####e#`#'
`#0#'d1+eu
## #!####9
## '{;'"'m
C5(#}####q
Isso foi muito divertido. Observe que #
abaixo do 6
código é realmente e não uma célula escura. Vamos passar por isso:
Dica 2: [[4 3]]
. Essa foi uma das mais complicadas, porque eu realmente fiquei presa em tentar 4Z]]`
ou algo parecido. Acontece que você pode usar o produto cartesiano m*
em coisas que não são uma matriz e isso fará uma matriz para você. Então aqui está:
4Zm*`
Dica 4: 24717
. Até o momento em que cheguei a este, o H
, J
, s
e à direita espaço já estavam no local. A H
doação que eu provavelmente poderia reutilizar 17
e fazer \
no final. O J
empurra a 19
e 247 == 13 * 19
, então:
HDJ*s\
Dica 7: 32
. Há um monte de maneiras de fazer isso: Y5#
, 3 2
, ZY
, YZ\
, 4(2
, 2)2
, '32
. Eu fui com o último, porque começar com um personagem parecia promissor para 7-down, e isso acabou sendo certo.
Dica 8: E
. Eu já tinha o 'd
quando cheguei lá, então foi entre a escolha 'd1+eu
, 'deu1+
ou uma variante em que eu usei )
e um espaço em vez de 1+
(para as pessoas não-CJam, esta tomando o d
caráter e incremento e superior da embalagem-lo, em qualquer ordem) . No entanto, a u
coluna final parecia útil para A-down. Então eu escolhi o primeiro deles. No final, 'd) eu
teria funcionado também.
Dica 9: ""
. Bem, isso tinha que ser "string vazia, obter representação de string, empurrar um espaço". Mas também precisava do `para representação de strings em 7-down, e um espaço em A-down também parecia útil, então eu escolhi
]`'
Observe que ]
também pode ter sido um dos LMOQR
.
Dica B: "m
. Eu realmente tive que encaixar esse aqui com o resto, mas havia poucos personagens que importavam. Eu já tinha o {
e o m
. Então, em vez de usar um bloco, eu me transformei {
em um personagem, descartei-o e pressionei os dois caracteres necessários:
'{;'"'m
Dica D: 124
. Resolvi esse problema com o C-down, que foi mais fácil com um decréscimo no final. Então eu pressiono um 12, um 5 e diminuo o último:
C5(
Dica 1: [2 2 2 3]
. Isso parecia muito desconfiado como uma fatoração primordial para não ser uma. :)
24mf`
Dica 3: 3010936384
. Factoring isso mostrou que é realmente 38 6 . A única questão era como obter a 38
conformidade com o 2-across. No final, eu precisava de um *
em terceiro lugar, então dobrando 19
foi:
J2*6#
Dica 5: 2017
. Dois caracteres para um número tão grande? Basta usar variáveis internas de dois dígitos:
KH
Dica 6: "18"
. Eu acho que há apenas uma maneira de fazer isso em três caracteres. Use o 18 interno, converta-o em uma sequência e, em seguida, em sua representação de sequência.
Is`
Dica 7: ' "\"\""
. Provavelmente a parte mais difícil do quebra-cabeça. Em particular, eu precisava inserir "\"\""
apenas três caracteres. O truque era obter a representação da string vazia duas vezes. Isso levou a:
' `L``+
THe +
não é necessário, mas era necessário por 8 de largura.
Dica 8: !{}
. O bloco precisava ser inserido no código, deixando apenas dois caracteres !
, o que significava usar outro literal:
'!{}
Dica A: -3u3
. Com o u
em lugar de 8-across, comecei a colocar -3
e 3
nos cantos onde nenhuma outra dica se preocupava com eles. Mas então eu precisava de um m
na parte inferior. Eu acho que existem várias maneiras de obter um 3
com _m_
, mas a mais simples estava tomando a raiz quadrada de 9:
-3 'u9mq
Dica C: -1
. Eu já tinha o decréscimo lá, então apenas coloquei um local 0
onde ninguém mais se importava:
0 (
Dica E: Stack: ""
. Bem, esse foi o mais simples. Basta chamar o depurador:
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
ou Math.PI+5
; mas o último deixaria 'M' e 'h' cruzando para outras expressões, parecia improvável."\x48I"
.xxxa
avaliando como zero, então -a + a? a + -a? 3 + -a? a+-a
parecia melhor, pois me deu o que parecia um char em uma string em 1dn.{x:5}xxa'x
. Como o valor retornado é 5, ele deve ser retirado do objeto, o {x:5}['a']
que significa que o caractere final ausente também é:{a:5}['a']
t={}=51
e funcionou. Não sabia isso!5xxax"pac"
=> "2pac". Isso tem que ser 5-a+"pac"
, de alguma forma, para que o segundo caractere tenha que ser '.' para o literal de ponto flutuante.[xx"xxxx]
, retornando "90". Portanto, isso deve ser uma matriz literal com o valor retirado; só há espaço para um valor, então temos [xx"xx][0]
. Não há espaço para duas cordas lá, mas é adequado "9"+0
ou não 9+"0"
.6<<I
acabou por ser a resposta, deixando +0 para adicionar até o final.I-I<4
, I-6<4
, etc)-x..]xxx4
. O ".." me impressionou - há apenas algumas maneiras que podem ser sintaxe legal e é por isso que perguntei se o ES4 era o que se pretendia - isso era algum recurso estranho dessa especificação abandonada? Mas então vi que isso era um arenque vermelho; -""
é NaN, então -"..]"xx4
deve estar lá - uma comparação com NaN, retornando false; '==' serve, mas é preciso olhar para a última resposta para confirmação ...=-10
. Para ser sincero, também observei a versão anterior do 9dn e percebi que isso deveria ser algo =top
(para recuperar uma janela). A variável atribuída a poderia ser a ou I, não importa.Enigma complicado!
Para todas as longas expressões de ponto flutuante, criei um programa em C ++ para gerar expressões matemáticas do Python à força e as avalia. Ele assume que todos os números são de ponto flutuante e suporta apenas os operadores +, -, *, /, //, ** e ~. Eu o usei para obter todas as pistas com mais de 5 caracteres, exceto a**9*27%b
o hash. Com 6 espaços em branco ou menos, ele termina em alguns segundos, enquanto espera um pouco para 7.
Eu acho que joguei este bem, pois há 14 espaços.
Este script de teste:
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);
produz a seguinte saída:
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