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.