Code-Kreuzworträtsel - Lösungen


Antworten:


8

Lösung für das C-Puzzle von es1024

Geben Sie hier die Bildbeschreibung ein

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 << 29und ~(~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, ~1damit 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(~_)
}

Woher kommt das Makro? Ich habe es vermieden, die Lösung zu veröffentlichen, weil ich M-across nicht erreichen konnte.
COTO

@COTO Ich verstehe Ihre Frage "Woher kommt das Makro?" Nicht.
Feersum

Keine Ursache. Ich habe das #define Tals 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. :)
COTO

@COTO Ja, es ist wie eine Basis-256-Nummer. Zeichenliterale haben einen Typ int, sodass Sie ohne Informationsverlust bis zu vier Bytes eingeben können.
Feersum

3
Das wusste ich sicher nicht. (Höchstwahrscheinlich, weil jeder, der es im Produktionscode verwendet hat, von den Verantwortlichen für die Pflege seines Codes zu Tode erwürgt wurde.) Requisiten, um es richtig zu machen. :)
COTO

8

Professorfish, CJam, 41 Dunkelheiten

(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 6Code 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 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, sund Leerzeichen am Ende waren bereits vorhanden. Das Hgab weg, dass ich das wohl einfach wiederverwenden 17und \am Ende machen konnte. Das Jdrückt ein 19und 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 , 'dals 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 dCharakter und Erhöhungs- und oberen Gehäuse es, in beliebiger Reihenfolge) . Das uin der letzten Spalte sah jedoch für A-down nützlich aus. Also habe ich die erste ausgewählt. Am Ende 'd) euhä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(

Nieder

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 19es 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 uIn-Place von 8-Over begann ich zu setzen -3und 3in die Ecken, wo sich kein anderer Hinweis um sie kümmerte. Aber dann brauchte ich einen munten. Ich denke , es gibt mehr Möglichkeiten , eine bekommen 3mit _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 0niemand sonst interessiert:

0  (

Tipp E : Stack: "". Nun, das war das einfachste. Rufen Sie einfach den Debugger an:

ed

Calvins Hobbys haben gesprochen , die Antwort ist gültig. Ich werde es in meinem Beitrag bearbeiten

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 über ist 5+Math.PIoder Math.PI+5; aber letztere würden 'M' und 'h' in andere Ausdrücke übergehen lassen, schien unwahrscheinlich.
  • Ein Over musste eine Schnur sein; mit 4 in der Mitte sah es aus wie eine Flucht, die einzige Möglichkeit, dafür Platz zu haben, ist mit "\x48I".
  • 2 down endet jetzt in einer Zeichenfolge, daher wird wahrscheinlich "pac" an eine Zahl angehängt. Wir werden darauf zurückkommen.
  • 8 ac wird jetzt xxxaauf Null ausgewertet, also -a + a? a + -a? 3 + -a? a+-asah am besten aus, da es mir etwas gab, das aussah wie ein Zeichen in einer Zeichenfolge in 1dn.
  • 1 unten enthalten: 5, die nur legale Grammatik in sein konnte {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']
  • 1 quer hat jetzt {am Anfang. Ich vermutete, dass dies eine rote Heringsaufgabe war, versuchte es t={}=51und es funktionierte. Wusste ich nicht!
  • 2 down hat jetzt 5xxax"pac"=> "2pac". Das muss 5-a+"pac"irgendwie sein, also muss das zweite Zeichen 'sein'. für das Gleitkomma-Literal.
  • 7 ac ist jetzt [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"+0oder 9+"0"passend.
  • 3 dn; 3072 ist 3 · 1024; Die Potenz von 2 ist verdächtig, und ich hatte bereits 'Ich' darin, das andere Wege blockiert, um große Zahlen zu erhalten (wie 1eX). Also, erratene Bitverschiebung; 6<<IEs stellte sich heraus, dass dies die Antwort war und +0 übrig blieb, um am Ende etwas hinzuzufügen.
  • 4 ac enthielt nun einen Vergleichsoperator; und das zweite Zeichen musste ein gültiger unärer Operator sein (um sowohl nach 't =' als auch nach 'I' zu passen). Ich vermutete , ‚-‘ und es gibt mehrere mögliche Lösungen links ( I-I<4, I-6<4usw.)
  • 5 dn jetzt enthalten -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 -"..]"xx4muss 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 ...
  • 9ac hatte mehrere mögliche Lösungen, aber die Beschränkung der Zeichen, die für 5dn zulässig waren, ließ mich denken, dass dies eine weitere Aufgabe für roten Hering war; etwas =-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!


4

Grcs Python-Puzzle

grc Kreuzworträtsel Lösung

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%bdem Hash zu bekommen. Mit 6 oder weniger Leerzeichen ist es innerhalb weniger Sekunden fertig, während auf 7 ein wenig gewartet wird.


3

Lösung für das MATLAB-Puzzle von COTO

Ich denke, ich habe dieses ziemlich gut Golf gespielt, da es 14 Plätze gibt.

Lösungsraster

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

Gute Show. Ein paar Leerzeichen habe ich nicht erwartet, aber es gibt auch einige im Schlüssel. Ich werde das jetzt posten. ;)
COTO
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.