Sie sollten ein Programm oder eine Funktion schreiben, die eine nicht negative Ganzzahl k
und eine sortierte Ganzzahlliste L
als Ein- und Ausgabe verwendet oder eine geglättete Liste zurückgibt M
.
M
wird aus der aufsteigenden Liste erstellt, L
indem höchstens k
ganzzahlige Elemente eingefügt werden, während die Liste sortiert bleibt . Die eingefügten Ganzzahlen sollten so gewählt werden, dass die maximale Vorwärtsdifferenz von M
so gering wie möglich ist. Wir werden diesen kleinsten Wert "Glätte" nennen.
Die Vorwärtsdifferenzen der Liste -1 3 8 11 15
sind 4 5 3 4
und die maximale Vorwärtsdifferenz ist 5
.
Mit 2
Einfügungen die Glätte 2 10 15
heißt 4
und eine mögliche Ausgabe ist 2 6 10 11 15
mit Vorwärtsdifferenzen 4 4 1 4
.
Eingang
- Eine nicht negative ganze Zahl
k
. - Eine aufsteigende Ganzzahlliste
L
mit mindestens 2 Elementen.
Ausgabe
- Die aufsteigende Ganzzahlliste
M
. - Wenn mehrere richtige Antworten vorhanden sind, geben Sie genau eine davon aus (eine davon ist ausreichend).
- Ihre Lösung muss jeden Beispieltestfall auf meinem Computer in weniger als einer Minute lösen (ich teste nur enge Fälle. Ich habe einen unterdurchschnittlichen PC.).
Beispiele
Eingabe ( k
, L
) => Eine mögliche Ausgabe und die maximale Vorwärtsdifferenz (die nicht Teil der Ausgabe ist) in Klammern
0, 10 20 => 10 20 (10)
2, 1 10 => 1 4 7 10 (3)
2, 2 10 15 => 2 6 10 11 15 (4)
3, 2 10 15 => 2 5 8 10 12 15 (3)
5, 1 21 46 => 1 8 15 21 27 33 39 46 (7)
5, 10 20 25 33 => 10 14 18 20 24 25 29 33 (4)
3, 4 4 6 9 11 11 15 16 25 28 36 37 51 61 => 4 4 6 9 11 11 15 16 22 25 28 36 37 45 51 59 61 (8)
15, 156 888 2015 => 156 269 382 495 608 721 834 888 1001 1114 1227 1340 1453 1566 1679 1792 1905 2015 (113)
8, -399 -35 -13 56 157 => -399 -347 -295 -243 -191 -139 -87 -35 -13 39 56 108 157 (52)
5, 3 3 3 => 3 3 3 3 (0)
Dies ist Code-Golf, also gewinnt der kürzeste Einstieg.
rF<seq>
Tupel mit zwei Elementen zu entpacken.u
anders gearbeitet habe unde
nicht existierte. ErurGHd
war kürzer alsrhd@d1
. Ich werde es auf die Seite mit den Pyth-Tricks setzen.U
.yvz
scheitert wannvz = 0
, macht aberhvz
den Trick.Python 2, 104
Versucht verschiedene maximale Inkremente
d
, beginnend mit 1 bis zum Aufwärtszählen. Füllt Lücken für jedes Paar(p,x)
aufeinanderfolgender Elemente aus, indem jeded
Nummer in der Lücke genommen wird. WennM
das Kontingent überschritten wird, versuchen Sie es erneut mit einem höheren Kontingentd
. Andernfalls wird eine Liste der hinzugefügten und ursprünglichen Elemente sortiert zurückgegeben.Dies erledigt alle Testfälle ohne Verzögerung auf meinem Rechner.
quelle