Ihre Aufgabe ist es, die Reihenfolge umzukehren, in der einige prints
ausgeführt werden.
Specs:
Ihr Code wird in dieser Form sein:
//some lines of code
/*code*/ print "Line1" /*code*/
/*code*/ print "Line2" /*code*/
/*code*/ print "Line3" /*code*/
/*code*/ print "Line4" /*code*/
//some lines of code
Sie müssen diese Zeichenfolgen von der vierten bis zur ersten Zeichenfolge print
(oder echo
oder write
oder eine gleichwertige Zeichenfolge) eingeben .
Sie entscheiden, welche Zeilen Ihres Programms
print
die Zeichenfolgen enthalten müssen, aber sie müssen benachbart sein .Jede Zeile kann nur eine enthalten
print
und darf nicht länger als 60 Byte sein .Da dies ein Beliebtheitswettbewerb ist , sei kreativ und vermeide es, nur ein
goto
oder ein einfaches zu schreibenfor(i){if(i=4)print"Line1";if(i=3)...}
Die am besten bewertete Antwort in 2 Wochen gewinnt dies.
Ihre Ausgabe MUST seine
Line4 Line3 Line2 Line1
ORLine4Line3Line2Line1
ORLine4\nLine3\nLine2\nLine1
(wobei\n
eine Neue - Zeile ist), und es muß nur die erzeugt wird durch die Ausführungprints
nach hinten.
Viel Spaß beim Codieren!
UPDATE: Wettbewerb ist vorbei! Danke euch allen :)
Antworten:
Commodore 64 BASIC
quelle
PHP
Vorrang missbrauchen ... :-)
quelle
print
Kann in PHP wie in Perl als Ausdruck verwendet werden, dessen Rückgabewert immer ist1
.!1
Rückgabebool(false)
, die bei Eingabe als Zeichenfolge die leere Zeichenfolge zurückgibt. Eine geeignetere Einschränkung für PHP könnte darin bestehen,echo
eher zu verlangen alsprint
; das obige ist wirklich nur eine Aussage.print ("Line 1". !print ("Line2". !print ("Line 3". !print "Line4")));
- Alles, was auf der rechten Seite einer Print-Anweisung steht, ist Teil davon.print
aufgerufen wird, wird das Drucken erst beendet, wenn die inneren (unteren) Werteprint
bereits aufgerufen und vollständig ausgewertet wurden. Und die!
s sollen nur die Einsen verbergen, die sonst gedruckt würden. Genial, @bwoebi!C
Undefiniertes Verhalten ist die aufregendste Art von Verhalten!
Die tatsächliche Ausgabe kann je nach Compiler, Linker, Betriebssystem und Prozessor variieren :)
quelle
Java
Reflexion verwenden
Ausgabe:
Eine Erklärung, warum dies funktioniert, finden Sie hier .
quelle
C (und eine Art Python)
Neue Version mit einem Makro, das perfekt zum Fragenformat passt. Nach dem Kommentar von Quincunx fügte ich hinzu
return
, um es schöner zu machen.Es funktioniert auch in Python, wird jedoch in der richtigen Reihenfolge gedruckt.
Originalversion - die beiden sind nach Makrosubstitution praktisch gleich:
quelle
#define } 0))));
(ich weiß nicht genau, wie Makros in C funktionieren). Auf diese Weise könnten Sie nur die print-Anweisungen in der main-Methode haben, sonst nichts.}
, aber du kannst definierenreturn
, was ich jetzt getan habe. Es ist jetzt fastprint
mehrsprachig - die Syntax funktioniert in mehreren Skriptsprachen,#define
ist oft ein Kommentar,main(){..}
funktioniert aber in keiner Sprache, die ich finden könnte.print
, ersetzt zu werden durch"\n",printf(
?ES6 (im Rückwärtsmodus;)
Wow, es sieht so aus, als ob die Designer von ECMAScript eine unglaubliche Voraussicht hatten, als sie den Rückwärtsmodus zu einem Teil der Spezifikation machten :
Ausgabe (Bewertung, wirklich):
Beachten Sie, dass es genau der gewünschten Form entspricht und nur eine geringfügige Rückwärtsbewegung vorliegt, um der Syntax des Modus zu entsprechen . Beachten Sie auch, dass dieser Modus derzeit nur in neueren Versionen von Firefox unterstützt wird .
Letzte Anmerkung: Eigentlich gibt es keinen Rückwärtsmodus. Dies ist jedoch immer noch ein gültiges Skript, das in Firefox ausgeführt wird (kopieren Sie das Ganze). : D
ES6 "lax mode"
BONUS : Hier ist eine aktualisierte Version, die nicht den Rückwärtsmodus verwendet, sondern den neu festgelegten "Lax-Modus", in dem die JS-Engine nur versucht, zu erraten, was der Code tun soll, unabhängig von der Einhaltung der angegebenen JS-Syntax ( im Grunde das Gegenteil von Strict Mode):
Bitte beachten Sie, dass " lax mode " derzeit nur in Firefox> = 34 verfügbar ist.; P
quelle
C
quelle
Rubin
Bearbeiten: Alternativ
quelle
ruby
mit Codeblöcken nicht mehr aussehen? pastebin.com/LDWpxKx8method_missing
es allerdings ziemlich rubinrot.PHP
Ich weiß, das ist Wahnsinn ...
quelle
goto
" ;-)Haskell
Dies ist beinahe idiomatisch für Haskell, da das Programm jetzt wie eine Komposition von rechts nach links aussieht. Wenn die Funktion nicht print wäre, aber einen (nützlichen) Wert zurückgeben würde, wäre die Operatordeklaration unnötig und der Code wäre etwas, das Sie in Bibliotheken sehen würden.
quelle
(<<) = flip (>>)
<*
und*>
.<*
Operator anders als dieser<<
:a <* b
entsprichtdo x<-a;b;return x
, dh es läufta
der Effekt zuerstPerl
quelle
HTML + CSS
CSS:
Siehe jsFiddle .
Bearbeiten:
Um den Regeln besser zu entsprechen, gibt es hier eine Variante in XML, die tatsächlich verwendet wird
print
.wo style.css sein sollte
HTML ohne CSS
Und zum Teufel, hier ist eine ohne CSS.
Geige .
quelle
p {float:right;}
div {float:left}
.C ++
(Lokale Variablen werden in umgekehrter Reihenfolge der Deklaration zerstört.)
C ++ 11
(Ähnlich, aber mit Lambdas und einem Array-Datenelement.)
quelle
std::function
und versucht, sie loszuwerden. Jetzt brauche ich nicht, weil du es hast!Haskell
quelle
Javascript
quelle
1,2,3,4
als Timeout funktioniert auch bei mir. (Allerdings weiß ich nicht, ob dieses Verhalten in ECMAScript standardisiert ist.)setTimeout
ist in HTML5 / Timern standardisiert, nicht in ES. Außerdem gibt es eine minimale Zeitüberschreitung von 4 ms :-)C
Der Versuch, den Tipps in der Frage so kreativ wie möglich zu trotzen:
quelle
BF
Übernimmt die Zellenumhüllung.
Warum es funktioniert
Die erste und die letzte Zeile bestehen aus einer Schleife, die sich viermal wiederholt (counter =
cell0
).Innerhalb der Schleife gibt es eine Zählervariable (
cell1
), die bei jedem Durchlauf erhöht wird.Jede Zeile prüft, ob eine Verringerung um vier, drei, zwei oder eins gleich Null ist. Daher ist der Zähler beim ersten Durchlauf eins und die letzte Zeile wird ausgeführt, beim zweiten Durchlauf wird die dritte Zeile usw. ausgeführt.
Das
(line 1)
zeigt, wo Sie den Text machen sollen, der gedruckt wird. Die Pfeile in den Schleifen weisencell2
diesem Zweck zu. Das[-]
Gerät wirdcell2
nach Gebrauch gereinigt.quelle
Bash
In Erinnerung an die verehrten SleepSort und SleepAdd präsentiere ich Ihnen ... SleepReverse :
quelle
$1
und , um den Spezifikationen$2
function print(){(sleep $((4-$2));echo "$1 $2";)&}; print Line 1
Java
Es ist alles zum richtigen Zeitpunkt ... ;-)
quelle
Python 3
quelle
Bash
Hier kommt das doppelseitige Skript:
quelle
tac
existiert! Haha danke.Common Lisp № 1
Es ist einfach, ein
ngorp
Makro zu schreiben , das seine Formulare in umgekehrter Reihenfolge ausführt:Common Lisp № 2
Hier ist eine, die das Problem sehr wörtlich nimmt; Der Code aus der Frage erscheint im Programm ohne Änderung:
quelle
PHP
Eine andere
eval
Variante:quelle
F #
Soeben wurde ein benutzerdefinierter Operator erstellt, der Funktionen in umgekehrter Reihenfolge ausführt.
quelle
(?) f g x
liest sich ungefähr so(?)(f, g, x)
, nichtf(g(x))
Los (Golang)
Probieren Sie es aus: http://play.golang.org/p/fjsJLwOFn2
quelle
Python3
Kann durch Entfernen aller Leerzeichen in der letzten Zeile um 6 Byte kürzer sein.
quelle
Javascript
C ++ 11
quelle
std::reverse
undstd::for_each
einfachwhile (! functors.empty()) { functors.back()(); functors.pop_back(); }
Stapel
quelle
C #
Anstatt die Run-Methode direkt aufzurufen, erstelle ich eine dynamische Methode, die eine Kopie des IL-Bytecodes von Run enthält, mit der Ausnahme, dass die Opcode-Operanden der Ladezeichenfolge ausgetauscht werden. Dadurch zeigt die neue Methode die Zeichenfolgen in umgekehrter Reihenfolge an.
quelle
Python
noch eine andere lösung mit
eval()
es ist nicht sehr komplex, aber leicht zu verstehen.
quelle