Umgekehrte Deltas eines Arrays
Eine Fortsetzung der inversen Deltas eines Arrays
Ihre Aufgabe ist es, ein Array von vorzeichenbehafteten 32-Bit-Ganzzahlen mit umgekehrten Deltas neu zu kompilieren.
Beispiel
Die Liste,
18 19 17 20 16
hat die Deltas:
1 -2 3 -4
was umgekehrt ergibt:
-4 3 -2 1
dann, wenn neu kompiliert, mit Ausbeuten:
18 14 17 15 16
Welches sollte Ihr Rückgabewert sein.
Das Neukompilieren besteht darin C
, den ersten Wert des Arrays zu übernehmen. In diesem Fall 18
und Anwenden der Deltas in der richtigen Reihenfolge. So 18 + -4
gibt 14
, 14 + 3
gibt 17
und so weiter.
Input-Output
Sie erhalten eine Liste / array / table / tuple / stack / etc. von vorzeichenbehafteten ganzen Zahlen als Eingabe über eine beliebige Standardeingabemethode.
Sie müssen die geänderten Daten erneut in einer akzeptablen Form ausgeben, indem Sie der obigen Delta-Umkehrmethode folgen.
Sie erhalten N Eingänge, bei 0 < N < 10
denen jede Zahl in den Bereich fällt-1000 < X < 1000
Testfälle
1 2 3 4 5 -> 1 2 3 4 5
18 19 17 20 16 -> 18 14 17 15 16
5 9 1 3 8 7 8 -> 5 6 5 10 12 4 8
6 5 4 1 2 3 -> 6 7 8 5 4 3
Anmerkungen
- Wie oben angegeben, erhalten Sie immer mindestens 1 Eingang und nicht mehr als 9.
- Die erste und letzte Nummer Ihrer Ausgabe stimmen immer mit der der Eingabe überein.
- Es wird nur die Standardeingabe Ausgabe akzeptiert
- Es gelten Standardlücken
- Das ist Code-Golf , also gewinnt die niedrigste Byte-Anzahl!
- Habe Spaß!
Und der Gewinner ist...
Dennis! Wer zuerst den ersten Platz belegte, schlug sich dann mit einer kürzeren Lösung und sicherte sich sowohl den ersten als auch den zweiten Platz!
Lobende Erwähnung an ais523 mit ihrem Jelly, dass Dennis, wenn er nicht direkt vor ihnen reingekommen wäre, den zweiten Platz gehalten hätte.
quelle
Antworten:
Gelee , 5 Bytes
Dies verwendet den Algorithmus aus Glen O's Julia-Antwort .
Probieren Sie es online!
Wie es funktioniert
quelle
Gelee , 6 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Ṛ
wo ich habeU
). Ich weiß nicht, ob das sie so unterschiedlich macht, dass Duplikate nicht berücksichtigt werden.U
vektorisiertṚ
zwar nicht, aber ihr Verhalten für flache Arrays ist identisch.Ḣ
als 0x1e22 undṚ
als 0x1e5a, wofür jeweils 3 Bytes erforderlich sind.Julia, 24 Bytes
Dies ist der "clevere" Weg, um das Problem zu lösen. Die negative Umkehrung des Arrays hat die "Deltas" umgekehrt, und dann müssen Sie nur die Tatsache beheben, dass es an den falschen Stellen beginnt / endet.
quelle
Schneemann 1.0.2, 72 Bytes
Probieren Sie es online!
Dies ist eine Unterroutine, die Eingaben von und Ausgaben für den aktuellen Permavar übernimmt.
quelle
JavaScript (ES6),
4537 BytesPort von @ JHMs Mathematica-Antwort. (Ich bin sicher, dass ich es selbst hätte ableiten können, aber nicht zu dieser Nachtzeit.) Bearbeiten: 8 Bytes dank @ edc65 gespeichert.
quelle
[...
und brauchen]
?a
, was später im Programm verwendet wirda=>a.reverse(z=a[0]).map(e=>z+a[0]-e)
z=a[0]
, aber ich habe vergessen, das[...]
und zu entfernen(,i,b)
.Mathematica, 23 Bytes
Unbenannte Funktion. Das Ergebnis ist einfach: umkehren ((erstes Element) + (letztes Element) - (jedes Element)).
quelle
Python 2,
96745444 BytesDie Eingabe erfolgt als Array in eckigen Klammern. Die Ausgabe erfolgt im gleichen Format.
Vielen Dank an @Kade, dass Sie
22 bis42 Bytes gespart haben, und zwar mit einer viel einfacheren Methode als bisher!Vielen Dank an @ Sherlock9 für die Einsparung von 10 Bytes, indem der Indexzähler aus dem Listenverständnis gestrichen wurde!
Großartig, wenn ich jetzt noch Golf spiele, bekomme ich das Problem "durchgestrichen 44 ist immer noch 44". ; _;
quelle
lambda l:[l[0]+l[-1]-l[i]for i in range(len(l))][::-1]
54 Bytes? :) (Dank an Glen O. für die Berechnung)l[i]for i in range(len(l))
können Siej for j in l
14 Byte speichern.05AB1E , 8 Bytes
Probieren Sie es online!
Übersetzung meiner MATL-Antwort, zweiter Ansatz.
quelle
¬s¥Rvy)}
R,
37-30BytesBearbeiten: Verwenden Sie jetzt den Ansatz in Glen O Julia Antwort
Alt:
Liest Eingaben, berechnet Deltas, verknüpft mit dem ersten Element und berechnet die kumulative Summe.
quelle
MATL , 8 Bytes
Probieren Sie es online!
Dies ist die direkte Anwendung der Definition. Betrachten Sie die Eingabe
[18 19 17 20 16]
als Beispiel.Anderer Ansatz, gleiche Byteanzahl:
Probieren Sie es einfach aus!
Umgekehrtes und negiertes Array sowie der erste und letzte Eintrag des ursprünglichen Arrays.
quelle
Japt, 8 Bytes
Führen Sie es online aus
quelle
Pyth - 10 Bytes
Test Suite .
quelle
아희 (Aheui) , 3 × 21 Zeichen + 2 "\ n" = 65 Bytes
Übernimmt die Eingabe in Stapel 아. Die Ausgabe wird im Stapel 안 gespeichert.
Wenn Sie diesen Code ausprobieren möchten:
벙
Fügen Sie am Ende der ersten Zeile dieses Codes die Zeichenlänge (n) -fach hinzu (dh wenn die Eingabe 7 Ganzzahlen ist, fügen Sie sie 7-fach ein). Geben Sie für jede Eingabeaufforderung eine Ganzzahl ein:Probieren Sie es hier aus! (Kopieren Sie den Code und fügen Sie ihn ein)
Beispiel
Für
1, 2, 3, 4, 5
:und geben Sie dann
1
,2
,3
,4
, und5
(es wird 5 Aufforderungen sein).Alternative Version (65 Bytes)
quelle
65 bytes in UTF-8
oder so?C # 42 Bytes
Nimmt ein
int[]
und gibt ein zurückIEnumerable<int>
.(Dies ist eigentlich nur eine portierte Version von JHMs Version.)
quelle
TSQL, 200 Bytes
Tabellenvariable, die als Eingabe verwendet wird
Versuch es
quelle
PHP,
605652 Bytes-4 Bytes dank @ user59178
Funktioniert mit Befehlszeilenargumenten und verwendet einen Unterstrich als Trennzeichen. Laufen Sie mit
php -r '<code>' <space separated numbers>
quelle
$n
als Steuervariable verwenden? Ich habe eine solche Version ausprobiert und sie war 4 Bytes kürzer und schien zu funktionieren.Perl 6 ,
48 3330 BytesVersuch es
Erweitert:
Das
*-1
ist auch ein Lambda-Ausdruck vom Typ WhateverCode, wobei das*
der einzige Positionsparameter ist.quelle
[\+]
vom ersten Beispiel wundern , ist Dreieck reduzieren[\+] 3,-1,1,-5
→(3,2,3,-2)
und[\,] 3,-1,1,-5
→((3,), (3,-1), (3,-1,1), (3,-1,1,-5))
Julia 0,4 , 32 Bytes
Probieren Sie es online!
quelle
BASH, 71 Bytes
quelle
C ++ 14, 103 Bytes
Als unbenanntes Lambda, das seine Eingabe haben
rbegin
mussrend
,back
undpush_back
wie die Containervector
,deque
oderlist
.Verwenden Sie den Ansatz von Glen O's Julia-Antwort
Ungolfed und Nutzung:
quelle
Haskell, 33 Bytes
Verwendet die gleiche Logik wie JHM:
Sehr gut lesbar.
quelle
(!!0)
forhead
und using(<$>)
for verwendenmap
: Probieren Sie es online aus!Konvex , 10 Bytes
Probieren Sie es online!
quelle
Clojure, 101 Bytes
So ziemlich folgt die Beschreibung:
quelle
Java 7, 96 Bytes
Erläuterung:
Testcode:
Probieren Sie es hier aus.
Ausgabe:
quelle
APL (Dyalog Unicode) , 11 Byte SBCS
Anonyme implizite Präfixfunktion.
Probieren Sie es online!
+\
kumulative Summe von⊃
das erste Element des Arguments,
gefolgt∘
von⌽
der Umkehrung von2-⍨/
die paarweise Differenz von⊢
das Argumentquelle