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.
quelle
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.
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.Professorfish, CJam, 41 Dunkelheiten
(Diese Lösung benötigt tatsächlich mehrere Leerzeichen, es ist also nicht das, wonach Professorfish gesucht hat.)
Das hat großen Spaß gemacht. Beachten Sie, dass sich
#
unter dem6
Code tatsächlich keine dunkle Zelle befindet. Lassen Sie uns das durchgehen:Über
Tipp 2 :
[[4 3]]
. Dies war einer der schwierigeren, weil ich wirklich feststeckte, es zu versuchen4Z]]`
oder ähnliches. Es stellt sich heraus, dass Sie das kartesische Produktm*
für Dinge verwenden können, die kein Array sind, und es wird ein Array für Sie erstellen. Hier ist es also:Tipp 4 :
24717
. Mit der Zeit habe ich dazu, dieH
,J
,s
und Leerzeichen am Ende waren bereits vorhanden. DasH
gab weg, dass ich das wohl einfach wiederverwenden17
und\
am Ende machen konnte. DasJ
drückt ein19
und247 == 13 * 19
, so: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 statt1+
(für die Nicht-CJam Menschen, das die Einnahmed
Charakter und Erhöhungs- und oberen Gehäuse es, in beliebiger Reihenfolge) . Dasu
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 michBeachten Sie, dass dies
]
auch einer von gewesen sein könnteLMOQR
.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 dasm
. Anstatt einen Block zu verwenden, habe ich mich{
in ein Zeichen verwandelt , es verworfen und dann die beiden erforderlichen Zeichen verschoben: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:Nieder
Tipp 1 :
[2 2 2 3]
. Das sah zu verdächtig nach einer Primfaktorisierung aus, als dass es keine gewesen wäre. :) :)Tipp 3 :
3010936384
. Wenn man dies berücksichtigt, zeigt sich, dass es tatsächlich 38 6 ist . Die einzige Frage war, wie man die38
Übereinstimmung mit 2-across erreichen kann. Am Ende brauchte ich eine*
auf dem dritten Platz, also verdoppelte19
es sich:Tipp 5 :
2017
. Zwei Zeichen für eine so große Anzahl? Verwenden Sie einfach integrierte zweistellige Variablen: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.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: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 demu
In-Place von 8-Over begann ich zu setzen-3
und3
in die Ecken, wo sich kein anderer Hinweis um sie kümmerte. Aber dann brauchte ich einenm
unten. Ich denke , es gibt mehr Möglichkeiten , eine bekommen3
mit_m_
, aber die einfachste die Quadratwurzel von 9 wurde unter:Hinweis C :
-1
. Ich hatte dort bereits die Dekrementierung, also habe ich nur eine platziert, die0
niemand sonst interessiert:Tipp E :
Stack: ""
. Nun, das war das einfachste. Rufen Sie einfach den Debugger an:quelle
COTO, Javascript ES4, 37 Darks
5+Math.PI
oderMath.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 muss5-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
oder9+"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!
quelle
Grcs Python-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.quelle
Lösung für das MATLAB-Puzzle von COTO
Ich denke, ich habe dieses ziemlich gut Golf gespielt, da es 14 Plätze gibt.
Dieses Testskript:
erzeugt die folgende Ausgabe:
quelle