Dies scheint fast trivial zu sein, aber da ich nach einiger Anstrengung nicht in der Lage war, die wörtliche Lösung in J zu übertreffen, dachte ich, dass dies eine anständige Herausforderung sein könnte (obwohl dies, um klar zu sein, keine J-spezifische Herausforderung ist).
Der Titel sagt alles. Sie müssen lediglich ein Programm oder eine Funktion schreiben (ohne Argumente), die Folgendes zurückgibt oder ausgibt:
N NE E SE S SW W NW
Sie können Zeilenumbrüche anstelle von Leerzeichen verwenden.
Eine Funktion ohne Argumente, die ein Array von Zeichenfolgen zurückgibt, z
['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW']
ist auch akzeptabel.
Die Buchstaben können Groß- oder Kleinbuchstaben sein, dürfen jedoch nicht gemischt werden.
0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5
. Leider war der J-Code, der benötigt wurde, um diese Ergebnisse in Buchstaben zu mappen, teurer als ein Literal.1, 1+i, i, -1+i, -1, -1-i, -i, 1-i
sodass Sie statt zwei einen Real- oder Imaginärteil pro Himmelsrichtung haben. Es ist wahrscheinlich schwieriger, diese zu generieren, es sei denn, Sie könnten die Potenzen von i auf irgendeine Weise von 0 wegrunden. Ich weiß nicht, wie einfach oder schwer das in J sein würde, aber es ist eine Idee.Antworten:
Canvas , 12 Bytes
Probieren Sie es hier aus!
Die Zeichenfolge, einfach komprimiert.
quelle
"NESW "
) und dann in Base-5 die Person speichert Figuren.Bash (24 Bytes)
mit Klammererweiterung
ist die gleiche Länge wie Hardcodierung
Es wird jedoch interessanter, wenn mehr Kompasspunkte ausgegeben werden
Klammererweiterung
Andernfalls, wenn die Reihenfolge geändert werden könnte (17 Byte), verschwindet der Parameter empy string ohne Anführungszeichen
quelle
mount -t proc{,,}
cp file{,.bak}
Mornington Crescent ,
43953823 BytesProbieren Sie es online!
Da es ein wenig zu erwarten ist, dass Sie das alles lesen, möchte ich einen kurzen Überblick über meine Vorgehensweise geben. Die Hauptidee ist zu speichern 3 Kopien der Zeichen
N
,E
,S
,W
an verschiedenen Stationen auf der Circle Line, über Bank - Hammersmith. Diese Zeichen werden ab dem Beginn eines Stationsnamens bei Charing Cross erstellt. Konstruieren Sie dannmit Mile End und Charing Cross aus der Mitte eines ausgewählten Stationsnamens und speichern Sie ihn in der Bank, damit er in der Verkettung bei Hammersmith abgeholt werden kann. Verketten Sie die Zeichen abschließend nacheinander in Paddington und kopieren Sie sie erneut über Bank - Hammersmith, falls sie später wiederverwendet werden müssen.
Ich denke, die derzeitige Lösung ist mit dieser Strategie nahezu optimal, zumindest was die Anzahl der besuchten Stationen anbelangt: Nur zwei Mal habe ich eine Station nur für den Transit verwendet:
Alle anderen Stationsbesuche waren, sofern ich keinen vergessen habe, entweder das Speichern / Abrufen von nützlichen Informationen oder (ein Teil von) die Nutzung der Stationsfunktion.
Was die Linienlängen betrifft, habe ich versucht, die kürzesten Namen für Circle Line auszuwählen, aber es könnte eine geringfügige Verbesserung geben. Es ist möglich, dass das Speichern von Daten in District einige Bytes spart.
quelle
Ne
asden,Sw
iss Cottage, Acton Town
und Mansion House
). 2. Versuchen Sie, das auszunutzen Tatsache, dass Paddington es einfacher macht, W zu verketten, alsW
. Dies erfordert etwas mehr Overhead, um Paddington 'aufzufrischen', so dass es möglicherweise nichts gewinnt.PHP , 19 Bytes
Probieren Sie es online!
Das aus dem Weg räumen. Jemand wird es irgendwann tun.
quelle
Brainfuck ,
142139131119 BytesProbieren Sie es online!
Einfach 10-mal in einer Schleife die Zellen mit 30, 70, 80 und 90 füllen, dann vorwärts und rückwärts gehen und die Zellenwerte anpassen, um die erforderlichen Zeichen auszudrucken. Nicht viel anders als der Standard "Hallo Welt!".
quelle
Brain-Flak , 204 Bytes
Probieren Sie es online!
quelle
MarioLANG ,
249221 BytesProbieren Sie es online!
quelle
Deadfish ~ ,
188183 Bytes-5 dank Tintenfisch
Probieren Sie es online!
quelle
{i}dc
am Ende für 183Excel-Formel,
5957 BytesFolgendes sollte als Matrixformel ( Ctrl+ Shift+ Enter) eingegeben werden :
Nachdem Sie die Formel als Matrixformel eingegeben haben, markieren Sie sie in der Formelleiste und werten Sie sie mit aus F9, um das Ergebnis zurückzugeben. Beispiel:
Vor:
Nach:
Wie es funktioniert
Das
ADDRESS
Funktion gibt eine Zeichenfolge zurück, die eine Referenz darstellt, die auf zwei Parameternrow
und basiertcol
. Der dritte Parameter steuert, welcher Referenztyp zurückgegeben wird, eine absolute oder relative Referenz. Zum Beispiel=ADDRESS(1,2,4)
kehrt zurück"B1"
.Wir können ein Array an liefern
ADDRESS
und es als eine Matrixformel mehrere Ergebnisse zurückgeben, zum Beispiel=ADDRESS(1,{1,2,3},4)
zurückkehrt"A1","B1","C1"
.Daher wird in meiner Antwort das Array an geliefert
ADDRESS
nur die Spaltennummern, die sich auf die erforderlichen Kompasspunkte beziehen, z. B. Spalte 14 ist SpalteN
, Spalte 369 ist SpalteNE
.Allerdings sind wir hier nicht fertig , da alle zurück Referenzen die Zeile enthält, zum Beispiel haben,
N1
,NE1
. Deshalb verwenden wir einfachSUBSTITUTE
, um die1
aus allen Referenzen zu entfernen .quelle
=IF(1,"N NE E SE S SW W NW")
gültig?Dreieckigkeit , 71 Bytes
Probieren Sie es online!
Es gibt zwei Leerzeichen in der letzten Zeile, um die für die Triangularität erforderliche Byteanzahl zu treffen.
quelle
Holzkohle , 14 Bytes
Probieren Sie es online!Der Link ist eine ausführliche Version des Codes. Dies ist nur die zu druckende Zeichenfolge, da der Auto-Deverbosifier die Zeichenfolgenkomprimierung übernimmt.
Das unkomprimierte Drucken der Zeichenfolge dauert 19 Byte, da Charcoal druckbare ASCII-Zeichen buchstäblich druckt. Die beste algorithmische Antwort, die ich finden konnte, benötigt leider 20 Bytes:
Probieren Sie es online! Ausgaben im Array-Format (würden zwei Bytes kosten, um die Elemente in Leerzeichen zusammenzufügen). Erkennt, dass die Buchstaben des Strings
SNWE
nur verwendet werden, wenn der aktuelle äußere Index gleich oder 1 (Modulo 8) von dem entsprechenden Element der Indexliste entfernt ist4,0,6,2
.quelle
Brainfuck , 117 Bytes
Probieren Sie es online!
Dieser Code erstellt zuerst die Zeichen "EN SW" im Speicher und bewegt sich dann vor und zurück, um sie zu drucken. Das Leerzeichen befindet sich in der Mitte, da es am häufigsten gedruckt wird. N und S und W und E erscheinen niemals zusammen, so dass sie sich auf entgegengesetzten Seiten des Gedächtnisses befinden. Zur Optimierung werden einige der endgültigen Dekremente während der Ausgabephase vorgenommen.
quelle
Python 2 ,
62615853 BytesProbieren Sie es online!
Nicht großartig, aber zumindest kein normaler Druck.
quelle
Jelly ,
1615 BytesEin vollständiges Programm, das den Text druckt
Probieren Sie es online!
16
Ein niladischer Link, der eine Liste mit Listen von (Klein-) Zeichen liefert.
Probieren Sie es online!
Alternative 15 als argumentlose Verbindung , die eine Liste (Kleinbuchstaben) Zeichen (mit Leerzeichen) ergibt:
“¡XÇŀqỵÑ’ṃ“¡⁴ṁ»
.quelle
Commodore BASIC (TheC64Mini, C64, C128, VIC-20 usw.) 28 Tokenized BASIC-Bytes verwendet
In Commodore BASIC benötigen Sie weder das schließende Anführungszeichen
PRINT
nochLET
Anweisungen, da der Interpreter es automatisch schließt. Dadurch wird ein BASIC-Token gespeichert.Alternativ kann man einfach den Direktmodus wie folgt verwenden:
Commodore BASIC 23 PETSCII-Zeichen (+
RETURN
zum Ausführen)Ich bin mir nicht sicher, wie ich die Anzahl der in diesem Fall verwendeten Bytes gemäß dem Interpreter zählen
?
undPRINT
die gleiche Anzahl von Bytes verwenden soll, und es ist kein Programm im Speicher gespeichert.quelle
PRINT
kann auch durch ersetzt werden?
, wodurch vier Bytes eingespart werden.PRINT
und?
verwenden Sie die gleiche Menge an BASIC-Token. Ich zähle keine PETSCII-Zeichen, da dies nicht sehr repräsentativ dafür ist, wie viel des verfügbaren Speichers vom Interpreter verwendet wird.Japt , 16 Bytes
Gibt ein Array von Kleinbuchstaben zurück. Die komprimierte Zeichenfolge hatte 18 Byte, wurde jedoch stattdessen
a
als Begrenzer verwendet, und die Aufteilung darauf wurde kürzer.Probieren Sie es aus - die Fußzeile formatiert die Ausgabe.
quelle
Deadfish ~ , 138 Bytes
Probieren Sie es online!
Die Ausgabe in Kleinbuchstaben mit Zeilenumbrüchen ist daher besser als die Standardausgabe (in Großbuchstaben mit Leerzeichen).
Dieser Code wurde von meinem Optimierer in C ++ generiert (danke an squid für eine weitere Optimierungsidee!):
quelle
Batch-Datei, 19 Bytes
In der Frage wurde nie angegeben, dass Sie etwas ausgeben mussten
N NE E SE S SW W NW
und nichts anderes,und es konnte auch nicht aufgrundeines Fehlers beendet werden, da dieser Code nur einen Fehler auslöst, aber nicht aufgrund eines Fehlers beendet wird.Ausgabe
Batch-Datei, 25 Bytes
Nur
N NE E SE S SW W NW
Ausgabe ohne Fehler oder Abstürze.quelle
'N NE E SE S SW W NW'
Sie erhalten beispielsweise Folgendes:N NE E SE S SW W NW - command not found
Python2, 59 Bytes
Die magische Zahl sind die zusammengefügten Drei-Bit-Indizes in der Zeichenfolge, in umgekehrter Reihenfolge, damit wir mit der Iteration am LSB beginnen können.
Ich habe eine Weile damit verbracht, die magische Zahl zu verkleinern, aber das Wiederholen der Zeichenfolge durch Multiplizieren, um zusätzliche Indizes zu ermöglichen, funktioniert nicht, da Leerzeichen codiert werden müssen Zeichenfolge als Ziffern, die von der magischen Zahl entfernt wurden (einschließlich einiger unglücklicher Belangloser in der Mitte):
quelle
K (NGN / k) ,
2322 Bytes-1 Byte danke an ngn!
Probieren Sie es online!
J ,
34-30BytesProbieren Sie es online!
quelle
" "
<->"W"
(0
<->4
in Basis 5) tauschen , befindet sich das Leerzeichen am Ende und wir können es entfernen, da die Indexierung von Zeichenfolgen außerhalb der Grenzen ohnehin ein Leerzeichen ergibt:"WNES"@5\7108085518230
05AB1E , 14 Bytes
Probieren Sie es online!
Dadurch wird die Zeichenfolge mit Ausnahme von Kleinbuchstaben gedruckt.
quelle
•
für -1Brachylog , 19 Bytes
Probieren Sie es online!
Ausgaben als Liste.
ḍ₄ḍᵐc
Spart zwei Bytes, indem sieben Leerzeichen ausgeschrieben werden und das gesamte Prädikat zu einem String-Literal wird. Zumindest bindet es PHP ...Ich habe versucht, klug zu sein
3⟦{;"NESW"↺₍h₂a₀ᶠ}ᵐc
, aber es konnte SE oder NW nicht richtig machen und ist sowieso ein Byte länger.quelle
Leerzeichen , 151 Bytes
Buchstaben
S
(Leerzeichen),T
(Tabulator) und (Zeilenvorschub) werdenN
nur als Hervorhebungen hinzugefügt.[..._some_action]
nur als Erklärung hinzugefügt.Probieren Sie es online aus (nur mit Leerzeichen, Tabulatoren und Zeilenumbrüchen).
Erläuterung:
Die Konstante
84
wird von diesem Java-Programm generiert , das ich für eine andere Herausforderung geschrieben habe, die ich in Whitespace beantwortet habe .quelle
MathGolf ,
2017 Bytes-3 Bytes dank @maxb .
Probieren Sie es online aus.
Erläuterung:
quelle
É
undÄ
in diesem Fall) mich manchmal immer noch etwas verwirrt. Manchmal bin ich mir nicht sicher, ob ich diese Codeblöcke verwenden muss oder nicht. Siem+
verwenden zum Beispiel keine. Aber duÄ
bist ein Code-Block der Größe 1. Ich habemÅî╪
gerade versucht zu sehen, was passiert ist. Deshalb verstehe ich jetzt, warum es einen Code-Block der Größe 1 gibtÄ
. :)) Danke für die -3 Bytes. Ich sehe noch viel zu lernen.{}
.mÅî╪
erstellt das Mapping, hat aber keine for-Schleife im Mapping. Wenn Sie schreibenm{î{╪}}
, ist es möglicherweise einfacher zu erkennen, dass der Code "map to: loop <index> times" lautet und die Zeichenfolge bei jeder Schleife gedreht wird. Der Grund, warumm+
es keinen gibt, ist, dass bestimmte Befehle implizite 1-Byte-Blöcke haben (Zuordnen, Filtern, Reduzieren usw.), aberî
kein Befehl, der in Kombination mit einem Block verwendet werden soll.{...}
, aber ich habe irgendwie vergessen, dassinteger{
es sich um eine for-Schleife handelt. :) JetztîÄ╪
macht das viel mehr Sinn. Danke für die Erklärung!CSS ,
4239 Bytes(danke an einen steinernen Spinnentier für die überarbeitete Version)
quelle
body:after{content:"N NE E SE S SW W NW"
Seed , 6014 Bytes
Erzeugt folgendes befunge Programm:
quelle
Hodor , 177 Bytes
Probieren Sie es online!
quelle
Assembly (x86, Linux), 68 Byte
Quelle:
Code meistens aus Shortest ELF für "Hello world \ n" genommen?
quelle
Gelee , 16 Bytes
Probieren Sie es online!
Mit durch Leerzeichen getrennter Fußzeile zum Ausdrucken
Ein Niladic-Link, der eine Liste von Zeichenfolgen zurückgibt. 2 Bytes kürzer (und vermutlich interessanter) als die komprimierte Zeichenfolge in Jelly.
quelle
C # (Visual C # Interactive Compiler) , 24 Byte
Probieren Sie es online!
quelle