Questa è la domanda complementare per i cruciverba di codice . Le risposte ai ladri vanno qui.
Vedi Dove dovremmo mettere i ladri? per meta-informazioni.
Questa è la domanda complementare per i cruciverba di codice . Le risposte ai ladri vanno qui.
Vedi Dove dovremmo mettere i ladri? per meta-informazioni.
Risposte:
Ho dovuto fare un po 'di confusione su 7-Down invocando un comportamento indefinito. es1024 ha indicato che questo uso di UB era la soluzione prevista. Funzionerà comunque sui computer della maggior parte delle persone. Sono venuto con varie espressioni raggiungere il risultato desiderato, come -1 << 30
, 3 << 30
, 6 << 29
, e ~(~0U/4)
ma tutti loro ha reso impossibile per me per ottenere 5-Across. Quindi ho usato la proprietà specifica dell'architettura Intel che solo i 5 bit meno significativi vengono utilizzati per determinare la dimensione di uno spostamento a sinistra. Si noti che deve essere ~_
e non in ~1
modo che l'importo da spostare non sia una costante di compilazione. Ho testato le espressioni con il seguente codice:
#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 come componente necessario per la tua soluzione. La domanda rimane, tuttavia, perché M-across funziona? La definizione di una costante a più caratteri concatena i valori dei byte? Se è così, ho imparato qualcosa di nuovo oggi. :)
int
, quindi puoi inserire fino a quattro byte senza perdita di informazioni.
(Questa soluzione in realtà richiede diversi spazi, quindi non è quello che professorfish stava cercando.)
#K###I#'32
#HDJ*s\ ##
2##2#`#`#-
4Zm*`##L#3
m##6##]`'
f####e#`#'
`#0#'d1+eu
## #!####9
## '{;'"'m
C5(#}####q
È stato molto divertente. Si noti che il #
sottostante 6
è in realtà codice e non una cella oscura. Andiamo attraverso questo:
Suggerimento 2: [[4 3]]
. Questo è stato uno dei più complicati, perché mi sono davvero bloccato a provare 4Z]]`
o simili. Si scopre che è possibile utilizzare il prodotto cartesiano m*
su cose che non sono un array e ne creerà uno per te. Quindi eccolo qui:
4Zm*`
Suggerimento 4: 24717
. Con il tempo ho avuto modo di questo, il H
, J
, s
e finali spazio erano già sul posto. Il H
dato via che avrei potuto probabilmente solo riutilizzare la 17
e fare \
alla fine. Il J
spinge un 19
e 247 == 13 * 19
, quindi:
HDJ*s\
Suggerimento 7: 32
. Ci sono un sacco di modi per farlo: Y5#
, 3 2
, ZY
, YZ\
, 4(2
, 2)2
, '32
. Sono andato con l'ultimo, perché iniziare con un personaggio sembrava promettente per 7-down, e questo si è rivelato essere giusto.
Suggerimento 8: E
. Ho già avuto il 'd
momento in cui ci sono arrivato, quindi era tra la scelta 'd1+eu
, 'deu1+
o una variante in cui ho usato )
e uno spazio invece di 1+
(per le persone non CJam, questo prende il d
carattere, lo incrementa e lo mette in maiuscolo, in entrambi gli ordini) . Tuttavia, u
nella colonna finale sembrava utile per A-down. Quindi ho scelto il primo di quelli. Alla fine 'd) eu
avrebbe funzionato anche lui.
Suggerimento 9: ""
. Bene, questo doveva essere "stringa vuota, ottenere la rappresentazione della stringa, spingere uno spazio". Ma avevo anche bisogno di `per la rappresentazione delle stringhe in 7-down, e anche uno spazio in A-down mi sembrava utile, quindi ho scelto
]`'
Si noti che ]
potrebbe anche essere stato uno dei LMOQR
.
Suggerimento B: "m
. Ho dovuto solo adattarlo a tutto il resto, ma c'erano pochi personaggi che contavano. Ho già avuto il {
e il m
. Quindi, invece di usare un blocco, mi sono trasformato {
in un personaggio, l'ho scartato e quindi ho spinto i due personaggi richiesti:
'{;'"'m
Suggerimento D: 124
. Ho risolto questo insieme a C-down, che era più facile con un decremento alla fine. Quindi spingo un 12, un 5 e decremento di quest'ultimo:
C5(
Suggerimento 1: [2 2 2 3]
. Sembrava troppo sospettosamente una scomposizione in fattori primi per non esserlo. :)
24mf`
Suggerimento 3: 3010936384
. Factoring questo ha dimostrato che in realtà è 38 6 . L'unica domanda era come ottenere la 38
conformità con 2-across. Alla fine avevo bisogno di un *
terzo posto, quindi raddoppiare 19
era:
J2*6#
Suggerimento 5: 2017
. Due personaggi per un numero così grande? Usa solo variabili a due cifre integrate:
KH
Suggerimento 6: "18"
. Penso che ci sia un solo modo per farlo in 3 personaggi. Utilizzare il 18 incorporato, convertirlo in una stringa e quindi nella sua rappresentazione di stringa.
Is`
Suggerimento 7: ' "\"\""
. Probabilmente la parte più difficile del puzzle. In particolare, avevo bisogno di ottenere "\"\""
solo tre personaggi. Il trucco era ottenere due volte la rappresentazione della stringa vuota. Ciò ha portato a:
' `L``+
THe +
non è necessario, ma è stato necessario da 8 in tutto.
Suggerimento 8: !{}
. Il blocco doveva essere inserito nel codice, quindi rimanevano solo due caratteri !
, il che significava usare un altro letterale:
'!{}
Suggerimento A: -3u3
. Con il u
posto da 8-in, ho iniziato a mettere -3
e 3
negli angoli dove nessun altro suggerimento si preoccupava per loro. Ma poi avevo bisogno di un m
in fondo. Penso che ci siano diversi modi per ottenere un 3
con _m_
, ma il più semplice è stato prendere la radice quadrata di 9:
-3 'u9mq
Suggerimento C: -1
. Ho già avuto il decremento lì, quindi ho appena messo un punto in 0
cui nessun altro si preoccupava:
0 (
Suggerimento E: Stack: ""
. Bene, quello era il più semplice. Basta chiamare il debugger:
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
o Math.PI+5
; ma quest'ultimo avrebbe lasciato 'M' e 'h' incrociati in altre espressioni, sembrava improbabile."\x48I"
.xxxa
, valutando a zero, quindi -a + a? a + -a? 3 + -a? a+-a
sembrava migliore dato che mi ha dato quello che sembrava un carattere in una stringa in 1dn.{x:5}xxa'x
. Poiché il valore restituito è 5, deve essere estratto dall'oggetto, quindi {x:5}['a']
il carattere mancante finale è anche un:{a:5}['a']
t={}=51
e funzionò. Non lo sapevo!5xxax"pac"
=> "2pac". Questo deve essere 5-a+"pac"
, in qualche modo, quindi il secondo carattere deve essere '.' per il virgola mobile letterale.[xx"xxxx]
, restituendo "90". Quindi questo deve essere un array letterale con il valore estratto; c'è solo spazio per un valore, quindi abbiamo [xx"xx][0]
. Non c'è spazio per due stringhe lì dentro, ma "9"+0
o in 9+"0"
forma.6<<I
si è rivelata la risposta, lasciando +0 per aggiungere alla fine.I-I<4
, I-6<4
, ecc)-x..]xxx4
. Il ".." mi ha gettato - ci sono solo un paio di modi che possono essere sintassi legali ed è il motivo per cui ho chiesto se ES4 è quello che era previsto - era questa una strana caratteristica di quella specifica abbandonata? Ma poi ho visto che si trattava di un'aringa rossa; -""
è NaN, quindi -"..]"xx4
deve essere quello che c'è - un confronto con NaN, che restituisce false; "==" lo farà, ma è necessario guardare l'ultima risposta per confermare ...=-10
. Ad essere sincero, ho anche guardato la versione precedente di 9dn, e ho capito che doveva essere qualcosa =top
(per riavere una finestra). La variabile assegnata a potrebbe essere a o I, non importa.Puzzle complicato!
Per tutte le lunghe espressioni in virgola mobile, ho creato un programma C ++ per generare forzatamente espressioni matematiche di Python e valutarle. Presuppone che tutti i numeri siano in virgola mobile e supporta solo operatori +, -, *, /, //, ** e ~. L'ho usato per ottenere ogni indizio più lungo di 5 caratteri tranne a**9*27%b
e l'hash. Con 6 o meno spazi vuoti termina in un paio di secondi, mentre c'è un po 'di attesa per 7.
Immagino di aver giocato a golf abbastanza bene, dato che ci sono 14 spazi.
Questo script di prova:
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);
produce il seguente output:
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