Aufgabe
Sie sind für die Herstellung eines Kompasses verantwortlich.
Stellen Sie sich Ihren Quellcode als die "Kompassnadel" vor, bei der das Ausführen in verschiedenen Ausrichtungen zu einer unterschiedlichen Ausgabe führt.
Unterstützte Quellcode-Ausrichtungen sind Nord, Ost, Süd und West.
Beispiel
Angenommen, Sie haben Quellcode:
ABCD
J K
WXYZ
Wir betrachten dies als Nordausrichtung, die uns durch Drehen um 90 Grad im Uhrzeigersinn nach Osten zeigt:
W A
XJB
Y C
ZKD
erneutes Drehen zeigt nach Süden:
ZYXW
K J
DCBA
und schließlich die letzte Rotation nach Westen:
DKZ
C Y
BJX
A W
Bei der Ausführung sollte jedes der obigen Codebeispiele ein einzelnes druckbares ASCII- Zeichen Ihrer Wahl ausgeben .
Anmerkungen
Ihr Code wird keine Eingabe nehmen.
Leerzeichen oder neue Linien werden beim Drehen nicht ausgeblendet.
Führende / nachfolgende neue Zeilen sind in der Ausgabe in Ordnung.
Antworten können ganze Programme oder Funktionen sein, also an STDOUT ausgegeben werden oder das Funktionsergebnis zurückgeben.
Es gelten die Standardregeln für Code-Golf . kürzeste Antwort in Bytes gewinnt!
quelle
Antworten:
Gelee , 2 Bytes
Probieren Sie es online!
Beachten Sie, dass der Haupteintrag für ein Jelly-Programm die letzte Verknüpfung ist, über die ein Zeilenumbruchzeichen Verknüpfungen aufteilt. Keines der zweizeiligen Programme greift tatsächlich auf die oberste Verknüpfung zu.
Die vier vollständigen Programme, die alle implizit das Ergebnis ausgeben, sind:
Norden :
Osten :
Süden :
Westen :
quelle
Japt ,
32 BytesIrgendwie irgendwie , fand ich eine extrem Hacky 2-Byte - Lösung ...
Nord - Ausgänge
0
:Da keine impliziten Eingaben vorhanden sind, ist der Standardwert ""
0
.g
on a number gibt das Vorzeichen der Zahl unabhängig von ihren Argumenten zurück ("y"
in diesem Fall).Ost- Ausgänge
2
:In einem mehrzeiligen Programm setzt die erste Zeile die Eingabe auf das Ergebnis. Dies ist im Grunde ein No-Op, da
g
auf0
ist0
. Danny
gibt die GCD von0
und ... da es ein Argument fehlt, wird standardmäßig2
(danke, lautet die Standardeinstellung @Oliver !). Dies ergibt2
als Ausgabe.Süd Ausgänge
g
:y
ist nach wie vor GCD. Da GCD (0, x) ist , x für jeden Wert,y
auf0
die Freiheit nimmt nur ihr Argument zurück. In diesem Fall ist das Argument"g"
, welches das Ergebnis ist.West Ausgänge
1
:y
on 0 kehrt wie zuvor zurück2
. Dies wird dann an übergebeng
, was (wie bereits erläutert) die Vorzeichenfunktion für Zahlen ist. Daher ist das Ergebnis1
.quelle
Java (OpenJDK 8) ,
73094421855 Bytes-2888 Bytes dank Leaky Nun
-3566 Bytes dank Wheat Wizard
Probieren Sie es online!
Alte Version
Einfacher Ansatz mit Kommentaren, die den Code ^ 2-Quadrat einschließen, dies kann in so ziemlich jeder Sprache erfolgen.
Ein (besser lesbares) Beispiel in Python
quelle
interface M{static void main(String[]a){System.out.println(0);}}
stattdessen verwenden, um einige Bytes zu speichern.Brain-Flak , 33 Bytes
Probieren Sie es online!
Brain-Flak , 33 Bytes
Probieren Sie es online!
Brain-Flak , 36 Bytes
Probieren Sie es online!
Brain-Flak , 38 Bytes
Probieren Sie es online!
Brain-Flak , 41 Bytes
Probieren Sie es online!
quelle
Alice , 17 Bytes
Ausgänge
1
. Probieren Sie es online!Ausgänge
x
. Probieren Sie es online!Ausgänge
5
. Probieren Sie es online!Ausgänge
3
. Probieren Sie es online!quelle
Befunge,
1713 BytesIch dachte, Befunge würde bei einem geometrischen Problem Spaß machen. Es gibt eine einfache 4x4-Lösung, die mit anderen hier vergleichbar ist (ich benötige 3 Befehle), aber ich habe es ein bisschen besser geschafft.
Edit: Newlines vergessen
Edit 2: erkannte, dass ich eine Katze erschaffen konnte
Edit 3: Die Katze ist tot
RIP Kitty: <
quelle
05AB1E ,
53 BytesNorden , Osten , Süden , Westen
quelle
Y'X
wird funktionieren, aber ich muss es trotzdem versuchen.Y'X
ist auch gültig. Ich suche immer noch nach einem 2-Byte-Wert. Keiner der 'Punktbefehle' funktioniert dafür, daher bezweifle ich, dass er existiert.10
hätte funktioniert, wenn sie mehrere Zeichen für eine Ausgabe zugelassen hätten; P. *C (gcc) ,
283279209 BytesProbieren Sie es online!
Selber alter Kommentar-Trick hier, aber zumindest in C wird das nicht riesig ;)
W
Richtung und -70 (!) Bytes dank Kommentaren von ETHproductionsquelle
);}
auf die Linie unten, wie so (ich habe nicht die Drehungen getestet though)W
Programm in Ihrem aktuellen Setup schlägt derzeit fehl, dasn
nach dem eigentlichen Code ein zusätzliches steht . Anscheinend können Sie dies beheben, indem Sie den Schrägstrich direkt vorpm
der obersten Zeile in ein Semikolon ändern .Labyrinth , 9 Bytes
Druckt
0
. Probieren Sie es online!Druckt
3
. Probieren Sie es online!Druckt
1
. Probieren Sie es online!Druckt
2
.Probieren Sie es online!Erläuterung
Jedes Programm beginnt mit dem ersten Leerzeichen in der Lesereihenfolge (dh entweder dem Zeichen oben links oder oben in der Mitte) und bewegt sich nach Osten. Für das erste Programm:
Für das zweite Programm:
Für das dritte Programm:
Für das vierte Programm:
quelle
Wumpus , 7 Bytes
Druckt
0
.Probieren Sie es online!Druckt
1
.Probieren Sie es online!Druckt
3
.Probieren Sie es online!Druckt
2
. Probieren Sie es online!Erläuterung
Das erste Programm ist einfach genug:
O
druckt eine implizite Null und@
beendet das Programm.Ab dem zweiten Programm müssen wir uns das dreieckige Raster ansehen, um den Kontrollfluss zu verstehen:
Für das dritte Programm:
Das vierte ist, wo es wirklich funky wird. Gestrichelte Linien kennzeichnen Zellen, die nicht ausgeführt werden, weil sie vom folgenden Befehl übersprungen werden
$
:quelle
PowerShell ,
2011 BytesMissbräuche Kommentare (
#
) mögen verrückt sein, und die Tatsache, dass eine einzelne Zahl, die in die Pipeline eingefügt wird, unverändert ausgegeben wird. Die oben genannten Drucke1
.Probieren Sie es online!An dieser Stelle können Sie leicht erkennen, dass jede Drehung nur eine Zahl "links" in den Kommentaren ergibt und somit nur eine Zahl pro Drehung ausgegeben wird.
Dank Wheat Wizard 9 Bytes gespart !
quelle
Sternenhimmel , 34 Bytes
Oder mit Leerzeichen, die als Bindestriche angezeigt werden, damit Sie sie sehen können:
Probieren Sie es online!
Die Befehle in Starry sind
+
,.
und einige andere Dinge, und was sie tun , ist dadurch bestimmt, wie viele Räume gibt , bevor sie sind: eine+
mit n Leerzeichen Schübe n -5 auf den Stapel, und.
mit einer geraden Anzahl von Räumen druckt. Dasz
s und die Zeilenumbrüche werden vollständig ignoriert.Es gibt 6 Leerzeichen vor dem ersten
+
also drückt es 6−5 = 1 und.
druckt es aus.Und die Drehungen:
Probieren Sie es online!Dies druckt "8".
Probieren Sie es online!Dies druckt "2".
Probieren Sie es online! Und dies druckt "3".
quelle
Gleichstrom , 9 Bytes
Probieren Sie es online!
Ich denke, seine Offensichtlichkeit ist Teil des Charmes.
quelle
Batch, 90 Bytes
Batch hat eigentlich keinen Kommentarcharakter. Bei ganzzeiligen Kommentaren
:
funktioniert dies, da es eine Bezeichnung einführt, aber ich benötige immer noch etwas, um denecho
Befehl zu beenden, während ich im umgekehrten Fall ein No-Op bin.&:
scheint zu funktionieren, was hier alles ist, was ich brauche, aber es verwirrt Batch wirklich, macht einen Fehler, wenn ich in der nächsten Zeile kein:
vor das setze@
, und vergisst irgendwie, eine neue Zeile zu drucken.quelle
MATLAB,
29 17 511 BytesNachdem wir erkannt haben, dass die Frage nach einzelnen ASCII-Zeichen und nicht nur nach einer bestimmten Ausgabe lautet, folgt ein MATLAB-Ansatz, der genau dies ermöglicht:
Dies gibt implizit 1, 2, 3 oder 4 aus, abhängig von der Drehung.
quelle
Kardinal ,
20 17 1211 BytesProbieren Sie es online!
Während dieser ganzen Zeit antwortete niemand auf Kardinal? Dieser erste gibt aus
0
.Osten
Probieren Sie es online!
Ausgänge
1
.Süd
Probieren Sie es online!
Gibt ein Leerzeichen aus.
Westen
Probieren Sie es online!
Ausgänge
v
.quelle
SOGL V0.12 , 4 Bytes
Ausgänge
1
, probieren Sie es hier!Ausgänge
H
, probieren Sie es hier!Ausgänge
5
, probieren Sie es hier!Ausgänge
6
, probieren Sie es hier!quelle
JS, 17B
Ausgänge:
Nord: 2,
Ost: 3,
Süd: 4,
West: 0,33333333333….
(wie in: 2, 3/1, 4, 1/3)
quelle
Entschuldigung, ich meinte:
und 28B. Und Ausgänge als 0,5, 3, 2, 0.
quelle
JavaScript (ES6), 86 Byte
Ausgänge 0 für Nord, 1 für Ost, 2 für Süd und 3 für West.
Code-Snippet anzeigen
quelle
MATL , 11 Bytes
Probieren Sie es online!
Beginnen wir damit in MATL. Die größte Herausforderung besteht darin, dass MATL nur dann fehlschlägt, wenn für eine Funktion eine Eingabe erforderlich ist, wenn der Stapel leer ist. Vielleicht etwas gescheites mit Modifikatoren wie
X
,Y
,Z
und&
kürzer für etwas machen könnte, aber ich konnte keine passende Kombination finden.Erläuterung: Alle Zeichen verschieben eine einzelne Ganzzahl auf den Stapel und
x
entfernen alle Zeichen außer dem letzten.quelle
Perl, 49 Bytes
48 Byte Code + 1 für
-p
.Nimmt eine leere Eingabe an, die von TIO nicht unterstützt wird. Daher wird an ihrer Stelle eine neue Zeile hinzugefügt und nicht verwendet. Druck N , E , S , W .
Probieren Sie es online!
quelle
C (gcc) , 120 Bytes
Ich hatte mir mehr Synergie zwischen den Varianten erhofft.
Norden
Osten
Süd
Westen
quelle