Dies ist die Begleitfrage für Code-Kreuzworträtsel . Räuberische Antworten finden Sie hier.
Siehe Wo sollen wir Räuber hinstellen? für Meta-Infos.
Dies ist die Begleitfrage für Code-Kreuzworträtsel . Räuberische Antworten finden Sie hier.
Siehe Wo sollen wir Räuber hinstellen? für Meta-Infos.
Antworten:
Ich musste ein bisschen auf 7-Down herumfummeln, indem ich undefiniertes Verhalten aufrief. es1024 hat angegeben, dass diese Verwendung von UB die beabsichtigte Lösung war. Es funktioniert jedoch auf den Computern der meisten Leute. Ich kam mit verschiedenen Ausdrücken bis das gewünschte Ergebnis zu erzielen, wie -1 << 30
, 3 << 30
, 6 << 29
und ~(~0U/4)
doch alle von ihnen machten es unmöglich für mich zu bekommen 5-Across. Daher habe ich die für die Intel-Architektur spezifische Eigenschaft verwendet, dass nur die niedrigstwertigen 5 Bits verwendet werden, um die Größe einer Linksverschiebung zu bestimmen. Beachten Sie, dass dies der Fall sein muss ~_
und nicht, ~1
damit der zu verschiebende Betrag keine Konstante für die Kompilierungszeit ist. Ich habe die Ausdrücke mit folgendem Code getestet:
#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
als notwendige Komponente für Ihre Lösung verwechselt . Es bleibt jedoch die Frage, warum M-across funktioniert. Verkettet das Definieren einer Konstante mit mehreren Zeichen nur die Bytewerte? Wenn ja, habe ich heute etwas Neues gelernt. :)
int
, sodass Sie ohne Informationsverlust bis zu vier Bytes eingeben können.
(Diese Lösung benötigt tatsächlich mehrere Leerzeichen, es ist also nicht das, wonach Professorfish gesucht hat.)
#K###I#'32
#HDJ*s\ ##
2##2#`#`#-
4Zm*`##L#3
m##6##]`'
f####e#`#'
`#0#'d1+eu
## #!####9
## '{;'"'m
C5(#}####q
Das hat großen Spaß gemacht. Beachten Sie, dass sich #
unter dem 6
Code tatsächlich keine dunkle Zelle befindet. Lassen Sie uns das durchgehen:
Tipp 2 : [[4 3]]
. Dies war einer der schwierigeren, weil ich wirklich feststeckte, es zu versuchen 4Z]]`
oder ähnliches. Es stellt sich heraus, dass Sie das kartesische Produkt m*
für Dinge verwenden können, die kein Array sind, und es wird ein Array für Sie erstellen. Hier ist es also:
4Zm*`
Tipp 4 : 24717
. Mit der Zeit habe ich dazu, die H
, J
, s
und Leerzeichen am Ende waren bereits vorhanden. Das H
gab weg, dass ich das wohl einfach wiederverwenden 17
und \
am Ende machen konnte. Das J
drückt ein 19
und 247 == 13 * 19
, so:
HDJ*s\
Tipp 7 : 32
. Es gibt eine Reihe von Möglichkeiten , dies zu tun: Y5#
, 3 2
, ZY
, YZ\
, 4(2
, 2)2
, '32
. Ich habe mich für den letzten entschieden, weil es für 7-down vielversprechend schien, mit einem Charakter zu beginnen, und das stellte sich als richtig heraus.
Tipp 8 : E
. Ich hatte schon das , 'd
als ich dort ankam, so dass es zwischen der Wahl war 'd1+eu
, 'deu1+
oder eine Variante , wo ich verwenden )
und einen Raum statt 1+
(für die Nicht-CJam Menschen, das die Einnahme d
Charakter und Erhöhungs- und oberen Gehäuse es, in beliebiger Reihenfolge) . Das u
in der letzten Spalte sah jedoch für A-down nützlich aus. Also habe ich die erste ausgewählt. Am Ende 'd) eu
hätte es auch geklappt.
Tipp 9 : ""
. Nun, dies musste "leere Zeichenfolge sein, Zeichenfolgendarstellung erhalten, Leerzeichen drücken". Aber ich brauchte auch das `für die Darstellung von Strings in 7-down, und ein Leerzeichen in A-down schien auch nützlich zu sein, also entschied ich mich
]`'
Beachten Sie, dass dies ]
auch einer von gewesen sein könnte LMOQR
.
Tipp B : "m
. Ich musste diesen nur wirklich mit dem Rest kombinieren, aber es gab nur wenige Charaktere, die wichtig waren. Ich hatte schon das {
und das m
. Anstatt einen Block zu verwenden, habe ich mich {
in ein Zeichen verwandelt , es verworfen und dann die beiden erforderlichen Zeichen verschoben:
'{;'"'m
Tipp D : 124
. Ich habe dieses Problem zusammen mit C-down gelöst, was mit einem Dekrement am Ende am einfachsten war. Also drücke ich eine 12, eine 5 und dekrementiere letztere:
C5(
Tipp 1 : [2 2 2 3]
. Das sah zu verdächtig nach einer Primfaktorisierung aus, als dass es keine gewesen wäre. :) :)
24mf`
Tipp 3 : 3010936384
. Wenn man dies berücksichtigt, zeigt sich, dass es tatsächlich 38 6 ist . Die einzige Frage war, wie man die 38
Übereinstimmung mit 2-across erreichen kann. Am Ende brauchte ich eine *
auf dem dritten Platz, also verdoppelte 19
es sich:
J2*6#
Tipp 5 : 2017
. Zwei Zeichen für eine so große Anzahl? Verwenden Sie einfach integrierte zweistellige Variablen:
KH
Tipp 6 : "18"
. Ich denke, es gibt nur einen einzigen Weg, dies in 3 Zeichen zu tun. Verwenden Sie die integrierte 18, konvertieren Sie sie in eine Zeichenfolge und dann in ihre Zeichenfolgendarstellung.
Is`
Tipp 7 : ' "\"\""
. Wahrscheinlich der schwierigste Teil des Puzzles. Insbesondere musste ich das "\"\""
in nur drei Zeichen bekommen. Der Trick bestand darin, die Zeichenfolgendarstellung der leeren Zeichenfolge zweimal abzurufen. Das führte zu:
' `L``+
Das +
ist nicht notwendig, wurde aber von 8-across benötigt.
Tipp 8 : !{}
. Der Block musste in den Code eingefügt werden, sodass nur zwei Zeichen übrig blieben !
, was bedeutete, ein anderes Literal zu verwenden:
'!{}
Tipp A : -3u3
. Mit dem u
In-Place von 8-Over begann ich zu setzen -3
und 3
in die Ecken, wo sich kein anderer Hinweis um sie kümmerte. Aber dann brauchte ich einen m
unten. Ich denke , es gibt mehr Möglichkeiten , eine bekommen 3
mit _m_
, aber die einfachste die Quadratwurzel von 9 wurde unter:
-3 'u9mq
Hinweis C : -1
. Ich hatte dort bereits die Dekrementierung, also habe ich nur eine platziert, die 0
niemand sonst interessiert:
0 (
Tipp E : Stack: ""
. Nun, das war das einfachste. Rufen Sie einfach den Debugger an:
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
oder Math.PI+5
; aber letztere würden 'M' und 'h' in andere Ausdrücke übergehen lassen, schien unwahrscheinlich."\x48I"
.xxxa
auf Null ausgewertet, also -a + a? a + -a? 3 + -a? a+-a
sah am besten aus, da es mir etwas gab, das aussah wie ein Zeichen in einer Zeichenfolge in 1dn.{x:5}xxa'x
. Da der zurückgegebene Wert 5 ist, muss er aus dem Objekt gezogen werden. Dies {x:5}['a']
bedeutet, dass das letzte fehlende Zeichen auch ein:{a:5}['a']
t={}=51
und es funktionierte. Wusste ich nicht!5xxax"pac"
=> "2pac". Das muss 5-a+"pac"
irgendwie sein, also muss das zweite Zeichen 'sein'. für das Gleitkomma-Literal.[xx"xxxx]
und gibt "90" zurück. Dies muss also ein Array-Literal sein, bei dem der Wert herausgezogen ist. Wir haben also nur Platz für einen Wert [xx"xx][0]
. Es ist kein Platz für zwei Saiten drin, aber entweder "9"+0
oder 9+"0"
passend.6<<I
Es stellte sich heraus, dass dies die Antwort war und +0 übrig blieb, um am Ende etwas hinzuzufügen.I-I<4
, I-6<4
usw.)-x..]xxx4
. Das ".." warf mich - es gibt nur ein paar Möglichkeiten, die legale Syntax sein können, und deshalb habe ich gefragt, ob ES4 das ist, was beabsichtigt war - war dies ein merkwürdiges Merkmal dieser aufgegebenen Spezifikation? Aber dann sah ich, dass dies ein roter Hering war; -""
ist NaN, also -"..]"xx4
muss es sein, was da ist - ein Vergleich mit NaN, der falsch zurückgibt; '==' reicht aus, muss aber zur Bestätigung auf die letzte Antwort schauen ...=-10
. Um ehrlich zu sein, habe ich mir auch die frühere Version von 9dn angesehen und festgestellt, dass dies etwas sein muss =top
(um ein Fenster zurückzubekommen). Die zugewiesene Variable könnte a oder I sein, es spielt keine Rolle.Kniffliges Puzzle!
Für alle langen Gleitkommaausdrücke habe ich ein C ++ - Programm erstellt, um mathematische Python-Ausdrücke mit Gewalt zu generieren und auszuwerten. Es wird davon ausgegangen, dass alle Zahlen Gleitkommazahlen sind und nur die Operatoren +, -, *, /, //, ** und ~ unterstützen. Ich habe es benutzt, um jeden Hinweis länger als 5 Zeichen außer a**9*27%b
dem Hash zu bekommen. Mit 6 oder weniger Leerzeichen ist es innerhalb weniger Sekunden fertig, während auf 7 ein wenig gewartet wird.
Ich denke, ich habe dieses ziemlich gut Golf gespielt, da es 14 Plätze gibt.
Dieses Testskript:
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);
erzeugt die folgende Ausgabe:
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