Sie erhalten eine Liste mit 2 Tupeln positiver Ganzzahlen in der folgenden Form:
a1 b1, a2 b2, ..., an bn
Mit anderen Worten, die 2-Tupel sind durch Kommas getrennt, und die ganzen Zahlen in jedem Tupel sind durch Leerzeichen getrennt. Alle a
Zahlen sind in streng aufsteigender Reihenfolge, ebenso die b
s. Ihr Ziel ist es, "die Lücken zu füllen". Damit ist folgendes gemeint:
- Wenn a i +1 == a i + 1 ist , tu nichts.
- Wenn sonst ein i + 1 <a i + 1 , werden Sie Tupel in die Sequenz einfügen wie folgt: a i b i , a i + 1 b i + 1 , ein i 2 b i + 1 , ..., a i + 1 -1 b i + 1 , a i + 1 b i + 1 .
Mit anderen Worten, wenn es eine "Lücke" im a i gibt , werden Sie mehr in die Liste einfügen, wobei das eingefügte b
s b i + 1 (das Ende der Lücke) ist.
Beispiel :
Eingang: 6 125, 7 170, 10 185
Ausgabe: 6 125, 7 170, 8 185, 9 185, 10 185
Bewertung : Die Bewertung der Übermittlung ist die Anzahl der Bytes, die zum Erstellen eines Programms erforderlich sind, um bei Angabe einer Zeichenfolge wie oben beschrieben die "gefüllte" Liste der Tupel im gleichen Format auszugeben.
Die niedrigste Punktzahl gewinnt!
a1 b1, a2 b2, a3 b3
das einzige Paar, das eine Einfügung auslöst, für die Eingabe von drei Tupelna1 b1, a3 b3
eine Einfügung vona2 b3
, aber wo sollte es eingefügt werden?Antworten:
Pyth,
3130 Bytes1 Byte dank Jakube.
Auf der hohen Ebene wird für jede Zahl im Bereich der a die Liste nach a gefiltert, die größer als diese Zahl ist, und dann wird das b aus dem ersten solchen Tupel als b verwendet.
Demonstration.
quelle
CJam,
42413938 BytesProbieren Sie es online im CJam-Interpreter aus .
quelle
Python 2,
192180171 BytesLeider dauert es eine Menge Bytes, um die Eingabe zu analysieren und die Ausgabe zu formatieren. Vielen Dank auch an Sp3000, der mein Gehirn in Gang gebracht hat :)
quelle
Python 3.5.0b1 +, 123 Bytes
Das Parsen der Eingabe war ein Schmerz, also habe ich sie einfach ignoriert und so analysiert, wie sie ist. Das bedeutet, dass
wird analysiert als
daher der Splat in der String-Formatierung.
quelle
(a,*b)
müsste ich stattdessen tun((a,)+b)
oder(a,b[0])
. Ältere Versionen von Python würden a gebenSyntaxError
.JavaScript ( ES6 ), 97
103Da ich den Wortlaut der Frage schwer zu verstehen fand, stützte ich meine Arbeit auf das Beispiel.
Erster Versuch, es könnte einen kürzeren Weg mit nur 1 Teilung geben.Scannen der Eingabezeichenfolge in einem einzigen Durchgang mit Ersetzen..
quelle
Haskell, 152 Bytes
Wie es funktioniert
p
ist eine einfache Hilfsfunktion zur Formatierung von Zeichenfolgen:(%)
ist eine "Suchfunktion" zum Ausfüllen von Lücken:[head a..last$init a]
ist der Bereich der zu verwendenden Zahlen: von der ersten analysierten Ganzzahl bis zur vorletzten analysierten Ganzzahl. (0+
Dies hilft dem Typprüfer zu schließen, dass das gesamte Programm mitNum
Werten umgeht; ansonstenread
weiß er nicht, was zu analysieren ist.) DannconcatMap
(oder=<<
) haben wir (oder ) unsere vorherigen Funktionen über den Bereich, um eine große Zeichenfolge zu erhalten. Dasg
macht:Endlich gibt es
main
. Es hat die Forminteract$s
, also ist alles, was uns wichtig ist, die Funktions :: String -> String
, die stdin in stdout verwandelt .Um die Eingabe zu lesen, teilen wir uns zunächst in Wörter auf:
Dann haben wir
concatMap
die Funktionmap(read.fst).lex
über diese Liste. Für ein Wort bedeutet dies:Für eine Liste von Wörtern erhalten Sie
concat [[6], [125], [7], ...] == [6, 125, 7...]
also die Liste, an die wir übergeben möchteng
. Schließlich gibt unsdrop
die Führung", "
aus der Saiteg
.quelle
CJam, 34 Bytes
Ich habe mit Dennis 'Antwort angefangen , aber schließlich wird es nichts mehr wie das Original.
Probieren Sie es online aus.
quelle
Perl, 67 Bytes
(66 Zeichen Code + 1 Zeichen Befehlszeilenoption)
Ausführungsbeispiel:
Erläuterung: Der allgemeine Ansatz besteht darin, einen regulären Ausdruck zu erstellen, der in der Lage ist, auf das nächste Token zu schauen, um festzustellen, ob er um eins zunimmt (regulärer Ausdruck ist bei der Arithmetik Unsinn, daher fügen wir eine Perl-Ausführung hinzu, um die Addition durchzuführen, und suchen danach). Ist dies nicht der Fall, ersetzen wir diese Übereinstimmung durch den Originaltext sowie das neue Token durch den erhöhten Index. Wir wiederholen dies dann mehrmals am Eingang, bis es sich nicht mehr ändert.
Für die folgende Erklärung ist ein 'Abschnitt' der durch Kommas getrennte Wert, und die 'Token' sind die durch Leerzeichen getrennten Werte innerhalb dieses Werts.
quelle
C #, 174 Bytes
Aus Gründen der Klarheit eingerückt:
quelle
Bash + Coreutils, 87
Testausgabe:
quelle
Python 3, 232 Bytes
Nicht wirklich so kurz, aber es verwendet eine andere Methode als die bereits veröffentlichte Python-Lösung
quelle
Java, 229 Bytes
Ich glaube, ich habe das so weit wie möglich reduziert. Es würde mich interessieren, ob es einen besseren Ansatz gibt, der zu einer kürzeren Java-Antwort führt:
Formatiert:
quelle