Es scheint, dass jede einfache Änderung von Deltas unter Verwendung einer konsistenten Funktion fast immer auf eine andere kürzere Weise durchgeführt werden kann , Dennis . Die einzige Lösung, die ich mir vorstellen kann, um dies zu erschweren, ist die Einführung einer inkonsistenten Funktion.
Sortierung.
Ihre Aufgabe ist es, ein Array von Ganzzahlen zu nehmen, ihre Deltas zu sortieren und diese neu zu kompilieren, um das neue Array von Ganzzahlen zu erhalten.
Z.B.
Für die Eingabe:
1 5 -3 2 9
Holen Sie sich die folgenden Deltas:
4 -8 5 7
Sortieren Sie dann diese Deltas und ergeben Sie:
-8 4 5 7
Und wende sie erneut an, was ergibt:
1 -7 -3 2 9
Input-Output
Sie erhalten eine Liste / Array / Tabelle / Tupel / Stapel / etc. von vorzeichenbehafteten Ganzzahlen als Eingabe über eine beliebige Standardeingabemethode.
Sie müssen die geänderten Daten erneut in einer akzeptablen Form ausgeben, und zwar gemäß der obigen Delta-Sortiermethode.
Sie erhalten N Eingaben, bei 0 < N < 10
denen jede Zahl in den Bereich fällt-1000 < X < 1000
Testfälle
1 5 -3 2 9 -> 1 -7 -3 2 9
-5 -1 -6 5 8 -> -5 -10 -7 -3 8
-8 1 -7 1 1 -> -8 -16 -16 -8 1
8 -9 3 0 -2 -> 8 -9 -12 -14 -2
-5 -2 -5 5 0 -> -5 -10 -13 -10 0
-1 9 -1 -7 9 -> -1 -11 -17 -7 9
Anmerkungen
- Wie oben angegeben, erhalten Sie immer mindestens 1 Eingabe und nicht mehr als 9.
- Die erste und letzte Nummer Ihrer Ausgabe stimmen immer mit der der Eingabe überein.
- Es wird nur die Standardeingabe akzeptiert
- Es gelten Standardlücken
- Dies ist Code-Golf , also gewinnt die niedrigste Byteanzahl!
- Habe Spaß!
quelle
Antworten:
Gelee , 7 Bytes
Probieren Sie es online aus!
Wie es funktioniert
quelle
MATL , 8 Bytes
Probieren Sie es online aus!
quelle
Mathematica, 40 Bytes
Reine Funktion, die eine Liste von (irgendetwas) als Eingabe nimmt und eine Liste zurückgibt.
FoldList[Plus
beginnt mit einer Zahl (in diesem Fall#&@@#
dem ersten Element der Eingabe) und fügt wiederholt Elemente der selbsterklärenden Liste hinzuSort@Differences@#
. Dies ahmt das Verhalten des eingebautenAccumulate
Geräts nach, aber die erste Zahl müsste der Liste der Unterschiede von Hand vorangestellt werden, wodurch die Anzahl der Bytes höher wird (soweit ich das beurteilen kann).quelle
05AB1E , 9 Bytes
-4 danke an Emigna
Probieren Sie es online aus!
quelle
¬=s¥{vy+=
Python 2, 92 Bytes
quelle
Haskell, 59 Bytes
Nervenzusammenbruch:
quelle
scanl(+)a$sort...
JavaScript (ES6), 68 Byte
In JavaScript erweist es sich als schwieriger, die inversen Deltas eines Arrays zu berechnen . Diese werden dann in absteigender Reihenfolge sortiert und kumulativ vom ersten Element abgezogen.
quelle
Python 2 ,
90 Bytes84 Bytes
6 Bytes bei Verwendung von Lambda gespart. Danke an ovs!
Probieren Sie es online aus!
Code aufschlüsseln,
Viel Spaß beim Codieren!
quelle
lambda x:[sum(sorted(map(int.__sub__,x[1:],x[:-1]))[:i])+x[0]for i in range(len(x))]
JavaScript (ES6), 93 Byte
quelle
Python 2 , 97 Bytes
Probieren Sie es online aus!
quelle
[p[i+1]-p[i]for i in range(len(p)-1)]
Pyth, 11 Bytes
Dies macht nur das Offensichtliche, was in der Aussage beschrieben ist.
Probieren Sie es online aus
Vorschläge für weiteres Golfen willkommen.
quelle
Julia 0,5 , 30 Bytes
Probieren Sie es online aus!
quelle
PHP, 89 Bytes
Laufen Sie so:
Erläuterung
quelle
Python 2 mit Numpy,
6756 BytesLassen Sie numpy die Deltas berechnen, sortieren, das erste Element voranstellen und numpy die kumulierten Summen berechnen. Ziemlich billig?
quelle
from numpy import*
undn.cumsum
nachcumsum
undn.diff
nachdiff
Perl 6 , 31 Bytes
Versuch es
Erweitert:
quelle
Stapel, 197 Bytes
sort
sortiert nicht numerisch, daher verzerre ich alle Unterschiede um 5000.quelle
Bash + Sort, 102 Bytes
sh + sort + expr, 106 Bytes
quelle
Clojure, 46 Bytes
Eines Tages werde ich eine Cljr-Sprache erstellen, die kürzere Funktionsnamen als Clojure hat.
quelle