Sie organisieren eine Schatzsuche für Ihre Freunde. Um die Arbeit zu vereinfachen, möchten Sie eine Karte aller Orte zeichnen, an denen Sie die wertvollen Objekte versteckt haben.
Eingang
Jede Form der Eingabe, die eine Liste von Punkten angibt, die aus (nichtnegativen) x- und y-Koordinaten besteht, 0 0
wobei die obere linke Ecke zulässig ist (Hinweis: Sie können in Ihrer Antwort auch eine 1-basierte Indexierung verwenden ). Beispiel:
1 2
3 0
0 1
Herausforderung
Ihre Funktion oder Ihr Programm sollte in der Lage sein, eine Karte zu erstellen, die jede gegebene Stelle mit einer Stelle bezeichnet, x
an der sich die Markierung in Zeile y + 1 und Spalte x + 1 in der Ausgabe befindet. Nicht markierte Stellen sind mit einem gekennzeichnet . Die Karte besteht auch aus einem Rahmen, in dem die Ecken
+
s, die vertikalen Linien |
s und die horizontalen Linien -
s sind. Ihre Lösung sollte den kleinstmöglichen Frame ausgeben. Karte für das oben angegebene Eingabebeispiel:
+----+
| x|
|x |
| x |
+----+
Mögliche Testfälle
"0 0"
=>
+-+
|x|
+-+
"0 10
5 5
10 0"
=>
+-----------+
| x|
| |
| |
| |
| |
| x |
| |
| |
| |
| |
|x |
+-----------+
""
=>
++
++
"0 0
0 2
2 0"
=>
+---+
|x x|
| |
|x |
+---+
Natürlich ist dies Codegolf , was bedeutet, dass die Lösung mit der niedrigsten Byteanzahl gewinnt! Erklärungen zu Ihrer Lösung sind erwünscht.
the input is a list of locations (e.g. nested list, list of tuples, space & newline separated, separate inputs, ect.)
Antworten:
J ,
37-34BytesProbieren Sie es online!
quelle
::empty
so wortreich? Was macht es Warum kann es nicht auf 1 Byte oder so vereinfacht werden? (Ich habe keine Kenntnis von J)JavaScript (ES6), 150 Byte
Nimmt die Eingabe als Liste mit 1-indizierten Koordinaten im
[x,y]
Format. Gibt eine Zeichenfolge zurück.Probieren Sie es online!
quelle
Haskell ,
127123 BytesDies definiert den Operator,
(!)
der eine Liste von x- Koordinaten und eine Liste der entsprechenden y- Koordinaten nimmt:Probieren Sie es online!
Ungolfed / Erklärung
Die Hilfsfunktion
m
erwartet eine Liste und gibt Indizes (1-basiert) bis zum Maximum zurück. Wenn die Liste leer ist, gibt sie Folgendes zurück[]
:Der eigentliche Operator
(!)
ist nur ein Listenverständnis, das alle Koordinaten durchläuft und einoder ein
x
Zeichen auswählt, das mit Zeilenumbrüchen verbunden wird:quelle
Canvas , 22 Byte
Probieren Sie es hier aus!
Nimmt 1-indizierte Eingaben auf.
Schließlich entschied ich mich, einen Fehler zu beheben, der mich schon seit Ewigkeiten nervt, und spielte diesen auf 21 Bytes herunter .
Erklärung (halb-ASCII-fähig für Monospace):
quelle
Python 2 ,
151140138 Bytes-2 Bytes dank Jo King.
Die Eingabe ist 1-indiziert.
Probieren Sie es online!
quelle
Kohle , 37 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. 1-indiziert. Erläuterung:
Sonderfall Leereingabe durch Zeichnen eines 2x2 Rechtecks von
+
s.Transponieren Sie die Eingabe, nehmen Sie das Maximum jeder Spalte (jetzt Zeile) und addieren Sie 2, um die Boxgröße in Charcoal-Koordinaten zu erhalten.
Zeichne die Schachtel.
Schleife über jede Koordinate.
Springe zu seiner Position.
Markiere mit einem Kreuz.
quelle
Stax ,
323124 BytesFühren Sie es aus und debuggen Sie es
Nimmt 0-basierte Indizes als Array von
[y, x]
Paaren.Erläuterung:
quelle
|S
Surround-Anweisung und einer nachgestellten Kurzform etwas mehr Kilometer herausholen. (m
) Surround nimmta
undb
vom Stapel und produziertb+a+b
. Und Sie könnenm
anstelle des Finales verwenden|J
, um die Zeilen zu durchlaufen und eine Ausgabe zu erstellen. Zum Beispielz]n+H%
mitcM%
. Dies ist das Teil, das die Kartenbreite erhält, aber einen Sonderfall für leere Karten hat. Wenn Sie die Karte vor dem Vermessen transponieren, verschwindet der Sonderfall.R ,
133 125122 BytesProbieren Sie es online!
1-indiziert. Nimmt eine Matrix als Argument. 8 Bytes dank digEmAll, 3 dank Giuseppe! Erklärung (frühere Version des Codes):
quelle
[<-
direkt verwenden, um die Klammern zu entfernen.Koordinaten des Formats [y, x]
JavaScript (Node.js) ,
191184 ByteProbieren Sie es online!
quelle
a.map(([y,x])
)JavaScript, 180 Byte
quelle
Java 10,
238223 Bytes1-indizierte Koordinaten.
Probieren Sie es online aus.
Erläuterung:
quelle
get
/ oderfor
? : S XDC (gcc) ,
246234 BytesDanke an ceilingcat für den Vorschlag.
Nullindexiert. Die Funktion erstellt eine Liste mit Koordinaten und Puffern, ermittelt die maximalen x- und y-Werte, füllt den Puffer mit Leerzeichen, generiert den Frame und zeichnet dann die X-Werte.
Probieren Sie es online!
quelle
05AB1E ,
4442 BytesProbieren Sie es online!
X und Y können vertauscht sein, wussten nicht, ob das überhaupt von Bedeutung ist.
Ich glaube, ich habe das in weniger Bytes, aber wir werden sehen ...Nein.quelle
F
zuLv
, entfernenNV
und ändernY
zuy
. 41 BytesεZ}
kann das seinۈ
.Ýv
nichtLv
, aber trotzdem eine gute Bearbeitung :).Ýv
stattLv
. Mein Fehler.C (gcc) ,
229220216 Bytes-9 bytes dank ceilingcat .
Nullindexiert. Nimmt Koordinaten als Liste von Zahlen, wobei gerade Zahlen X und ungerade Zahlen Y sind.
Probieren Sie es online!
quelle
for(n&&X++-Y++;i<=Y;i+=puts(""))
anstelle vonn&&X++-Y++;for(--i;i++<Y;puts(""))