In dieser Herausforderung platzieren Sie Buchstaben aus dem Alphabet in einer kartesischen Ebene und geben das Ergebnis als Text aus.
Ihre Eingabe besteht aus einer Liste mit 3 Parametern:
- X-Koordinate
- Y-Koordinate
- String
Wie?
Wir wissen, dass eine kartesische Ebene 2 Achsen und 4 Quadranten enthält, wobei die Vorzeichen der -Koordinaten , , und . Beispielsweise
Betrachten Sie die folgende 3 mal 3 Matrix als kartesische Ebene
Wenn wir in der Eingabe etwas wie [[-1,1,L],[0,1,F]]
unsere Matrix erhalten, sieht es ungefähr so aus
Und die endgültige Ausgabe LF
Darüber hinaus müssen wir einige Punkte beachten, um die richtige Ausgabe zu erhalten:
- Wenn eine X, Y-Koordinate wiederholt wird, müssen Sie die Zeichenfolgen verketten. Beispiel: Nehmen
F
Sie an, dass in (-1,1) die Zeichenfolge platziert ist und Sie die Zeichenfolgea
an derselben Stelle platzieren müssen. Sie verketten beide Zeichenfolgen, was dazu führt,Fa
und das ist der Wert, der in (-1,1) eingegeben wird. - Ihre Ausgabe muss der Matrix entsprechen. Beispiel stellen Sie sich das als Ihr Endergebnis vor:
Sie müssen ausgeben
Ma rie
i s
cute
Warum?
Sie können dies als Tabelle anzeigen, in der die Spalten die Werte der X-Achse und die Zeilen die Y-Achse sind.
Column 1 | Column 2 | Column 3
----------------------------------------
Row 1 | "Ma" | "r" | "ie"
Row 2 | "i" | "s" |
Row 3 | "cute" | |
Alle Spaltenwerte müssen gleich lang sein
Column 1 | Column 2 | Column 3
----------------------------------------
Row 1 | "Ma " | "r" | "ie"
Row 2 | "i " | "s" |
Row 3 | "cute" | |
Finnisch geben wir das Ergebnis aus
Ma rie
i s
cute
Testfälle
Input
------------
[[3, 3, "c"]
[4, 1, "un"]
[5, 3, "e"]
[4, 3, "od"]
[4, 2, "lf"]
[1, 2, "go"]
[2, 1, "i"]
[2, 1, "s f"]]
Output
--------------
code
go lf
is f un
Input
--------------
[[0, 0, 's'],
[-1,1, 'M'],
[0, 1, 'r'],
[-1,1, 'a'],
[1, 1, 'i'],
[-1, 0, 'i'],
[1, 1, 'e'],
[-1,- 1, 'c'],
[-1,- 1, 'u'],
[-1, -1, 'te']]
Output.
----------------
Ma rie
i s
cute
Anmerkungen
- Dies soll Code-Golf sein
- Sie können die Koordinaten in eine einzelne Liste einschließen, z
[[3, 3], "c"]
- Sie können die Eingabe in jedem vernünftigen Format vornehmen
- Sie können davon ausgehen, dass nur in der Eingabe keine Anzahl oder Leerzeichen vorhanden sind. zB kann es sowas
a a
aber nie geben1
oder" "
oder1a
oder1 1
quelle
a a
aber nie1
oder `` oder1a
oder1 1
(int a,int b,string c)
:?Antworten:
JavaScript (ES8),
186 180179 Bytes1 Byte dank @Shaggy gespeichert
Probieren Sie es online!
Negative Indizes in JS (oder das Fehlen von ihnen)
Angesichts eines Arrays
A[]
ist es in JS vollkommen legal, so etwas zu tunA[-1] = 5
. Dies wird jedoch nicht den Wert im Array selbst speichern. Stattdessen wird dieser negative Index implizit in eine Zeichenfolge ("-1"
) umgewandelt und die entsprechende Eigenschaft im umgebenden Objekt des Arrays festgelegt.Die schlechte Nachricht ist, dass Eigenschaften mit folgenden Methoden nicht iterierbar sind
map()
:Probieren Sie es online!
Der obige Code wird nur angezeigt
3 is stored at index 1
.Eine mögliche Problemumgehung wäre:
Probieren Sie es online!
Aber:
Was machen wir hier?
Stattdessen machen wir Folgendes:
quelle
o
inw
:w=[o=[]]
.Python 2 ,
188185181 BytesProbieren Sie es online!
quelle
APL (Dyalog Unicode) , 39 Byte SBCS
Anonymes Infix Lambda, das * Listen von Koordinaten und Zeichenfolgen als linkes und rechtes Argument verwendet.
Probieren Sie es online!
{
...}
"dfn"; Argumente für left (Koordinaten) und right (Zeichenfolgen) sind⍺
und⍵
:⊂''
Umschlossene leere Zeichenfolge, verwenden Sie diese als Füllung für ein Array(
...)⍴
zyklisch r eshape in eine Anordnung der folgenden Abmessungen:⌊/⍺
der niedrigste Wert entlang jeder Achse der Koordinaten⍺-
subtrahiere das von allen Koordinaten1+
addiere das zu eins (da wir den inklusiven Bereich wollen)c←
store inc
(für c oordinates)⌈/
der höchste Wert entlang jeder Achse von diesen⊃
auspacken, um als Maße zu verwendenm←
Speichern inm
(für m atrix)⍵⊣
wirf das zugunsten der Saiten wegm[c],←
Hänge diesem
an die Koordinaten anc
m⊣
Werfen Sie diese zugunsten der geändertenm
⌽
Spiegel↓
in Liste von Listen von Zeichenfolgen aufgeteilt↑¨
Mischen Sie jede Liste von Zeichenfolgen in eine Zeichenmatrix, die mit Leerzeichen aufgefüllt ist,/
durch horizontale Verkettung reduzieren⊃
auspacken (da die Reduktion den Rang von 1 auf 0 verringert)* Wenn ein einzelnes Argument aus verwobenen Koordinaten und Zeichenfolgen erforderlich ist, sind diese 5 Byte länger.
quelle
05AB1E ,
4544 BytesNimmt die Eingabekoordinaten als innere Liste.
Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
quelle
Kohle , 60 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Extrahieren Sie die Koordinaten aus der Eingabe.
Schleife über die x-Koordinaten.
Durchlaufen Sie die y-Koordinaten und extrahieren und verketten Sie alle Zeichenfolgen an den angegebenen Koordinaten.
Drucken Sie die Zeichenfolgen in umgekehrter Reihenfolge aus, da die y-Koordinaten im Vergleich zum Charcoal-Koordinatensystem umgekehrt sind.
Gehen Sie zum Anfang der nächsten Spalte.
quelle
Perl 5
-p00
-MList::Util=max
, 148 BytesTIO
Wie
s/(\S+) (\S+) (.*) /
...;''/ge;
, Ersetzungskennzeichen/g
Schleifenauswertung/e
, Ersetzung ergibt leere Löschzeileneingabe / Standardvariable$a{$1}=max$a{$1},length($h{$2}{$1}.=$3)
, autoviviert eine Map% h der Map, deren Schlüssel der ersten Ebene diey
zweite Ebene sind , und verknüpft denx
String$3
mit dem Wert, ermittelt die Länge und autoviviert eine zweite Map% a, deren Schlüsselx
und Wert die maximale Länge über die Spalte (x
)for$y(sort{$b-$a}keys%h){
...;say""}
für Zeilenindizes$y
in Schlüsseln mit%h
umgekehrter numerischer Sortierung,say""
um am Ende eine neue Zeile zu druckenmap{
...}sort{$a-$b}keys%a
, für Spaltenindex$_
in Schlüsseln% a numerisch sortiertprintf"%-$a{$_}s",$h{$y}{$_}
, Zeichenfolge linksbündig mit Spaltenbreite druckenquelle
Sauber ,
212206 BytesProbieren Sie es online!
quelle