Anleitung
Barry ist ein nicht so guter Backend-Entwickler, der für eine kleine API zuständig ist, die Ihnen Informationen zu Einkäufen im Geschäft eines Kunden geben soll. Er hat jedoch keine großartige Arbeit geleistet, und Ihr Chef weist Sie an, die Fehler auf der Clientseite zu beheben. Im Idealfall sollten Sie kommagetrennte Werte wie erhalten 927,2,45,90
entsprechen , welche so etwas wie item_id
, item_amount
, unit_price
,total
In diesem ersten Puzzle kümmern wir uns nur um item_id
und item_amount
aber wir brauchen die anderen Felder, um das Problem zu präsentieren. Barry manchmal bekommt Dinge vermischen und kehrt Lärm als Teil der Ausgabe, er bekommt auch die Reihenfolge falsch, Rückkehr noise
, noise
, unit_price
, total
, item_id
, item_amount
.
Deine Aufgabe
Sie müssen die Paare von item_id
und item_amount
unabhängig davon, ob Barry sie korrekt zurückgibt oder nicht , in einer Karte (oder einer ähnlichen Struktur) speichern und jedes Element in einer neuen Zeile mit der geringstmöglichen Anzahl von Zeichen drucken. (Speicherung ist nicht obligatorisch, wir kümmern uns nur um die Ausgabe)
Probeneingabe (gemischte korrekte und chaotische Formate)
103,2,50,100
106,1,900,900
459,40,150,300,67,2
4,20,30,6000
Mit anderen Worten, die Eingabe erfolgt entweder über & a,b,x,x
oder über x,x,x,x,a,b
das, worum es uns geht . Sie müssen Code bereitstellen, vorausgesetzt, wir haben eine Variable namens (oder einen anderen Namen) mit allen Zeilen von csv.a
b
G
Beispielausgabe
103,2
106,1
67,2 //This one was messy
4,20
Toleranz
Bei der Beantwortung gibt es einen gewissen Spielraum für Toleranz. Antworten in ähnlichen Formaten, aber unter Einhaltung der korrekten Werte, werden ebenfalls akzeptiert. Formate wie [a,b]
, (a,b)
oder {a,b}
gültig sind, aber a,b
bevorzugt.
Obwohl das erste Rätsel aufgrund der Tatsache, dass es einfach und schnell zu lösen war, gemischte Akzeptanz hatte, hatte ich auch das Gefühl, dass einige Leute das auch mochten. Also mache ich jetzt erstmal weiter Quickgolf
x,x,x,x
undx,x,x,x,x,x
wox
bezeichnet man eine Zahl?Antworten:
Pyth, 10 Bytes
Probieren Sie es online aus: Pyth Compiler / Executor
(Die ersten 4 Zeichen
=G.Q
lesen alle Daten und speichern sie inG
)Erläuterung
quelle
Perl, 24
Beispiel:
quelle
Python 3,
123767262 BytesIch bin ein Neuling, muss irgendwo anfangen ...
Mit den Vorschlägen von xnor und DLosc (62 Bytes):
quelle
for
können in Python alle in einer Zeile stehen, solange der Body keine weitere Blockanweisung enthält.for
Einzüge zu vermeiden. Die Bedingung[0,4][...]
kann4*(...)
mit der Tatsache, dass bools gleich 0/1 ist, auf abgekürzt werden. Wenn Sied[x:x+2]
als schreibend[x:][:2]
, obwohl ein Zeichen länger, können Sie außerdem vermeiden, den Ausdruck fürx
eine Variable zu speichern .Sed, 32 Bytes
Dies löscht alles bis zum 4. Komma, falls es eines gibt. Dann löscht es alles aus dem 2. Komma (das vorher vielleicht das 6. gewesen ist).
Und ich habe es sogar geschafft, richtig zu rechtfertigen!
quelle
Javascript, 44 Bytes
Angenommen, Eingabe in Variable
G
.Edit: Mir ist gerade aufgefallen, dass das sehr nach Nutki's Perl-Lösung aussieht.
Snippet-Demo:
quelle
Scala, 68 Bytes
- MrBones
Scala,
46-70BytesBearbeiten: Drucken Sie das Ergebnis aus
Demo
quelle
G.map{k=>val x=k.split(",");println((x++x).slice(4,6).mkString(","))}
G.map(_.split(",")).map(x=>println((x++x).slice(4,6).mkString(",")))
CJam,
181514 BytesProbieren Sie es online im CJam-Interpreter aus .
Wie es funktioniert
quelle
POSIX-Shell, 30 Byte
Vorausgesetzt, POSIX
sed
undcut
vorhanden sind:Dupliziert die Zeile, sodass die gewünschten Daten aus den Feldern 5 und 6 extrahiert werden können.
quelle
Javascript,
1171129995847671 BytesJS Geige
quelle
;
mit,
in der Schleife und damit die Klammern zu entfernen{
und}
for of
Sie 3 Bytes sparen. Es funktioniert in jedem modernen Browser.for(r of q=G.split('\n'))s=r.split(','),console.log(s[t=s[4]?4:0],s[t+1])
Pip , 12 + 1 = 13 Bytes
Verwendet das
-l
Flag, das die Ausgabe als durch Leerzeichen getrennte Zahlenlisten in jeder Zeile ausgibt. *Erläuterung:
g
. Dag
normalerweise von den Befehlszeilenargumenten aus initialisiert wird, können Sie die Eingabe dort auch für dieselben Ergebnisse einfügen.^',
Teilt (jede Zeichenfolge in) die Liste in Kommas auf.M
ordnet jedem Element im Ergebnis eine Funktion zu._@[4 5]
definiert eine Lambda-Funktion. Das Argument für die Funktion wird dargestellt durch_
;@[4 5]
Gibt eine Liste der 4. und 5. Elemente zurück. Wenn die Liste sechs Elemente enthält, sind dies die letzten beiden. Wenn es vier gibt, laufen die Indizes umher und das Ergebnis sind die ersten beiden. (ZB"abcd"@4 == "abcd"@0 == "a"
)[[103 2] [106 1] [67 2]]
die am Ende des Programms automatisch ausgedruckt wird. Das-l
Flag verbindet jede Unterliste im Leerzeichen und dann das Ganze im Zeilenumbruch. Das Ergebnis ist also wie folgt:* Zur Zeit. Ich kann dieses Verhalten ändern, aber ich plane immer noch, eine Flagge zu haben, die dasselbe tut.
quelle
Perl, 37
35
Zeichen+2
für-p
und-l
. Ich bin mir nicht sicher, ob es in Perl einen Ansatz gibt, der @ nutki's schlagen würde Lösung von , aber ich dachte, ich würde diese Idee, die ich hatte, trotzdem posten.Laufen mit:
quelle
Bash, 54
quelle
C 95 Bytes
Der Code ist einfach. Hier ist die ungolfed Version:
Teste es hier
quelle
Rubin, 53
oder ist gut.
quelle