Herausforderung
Schreiben Sie ein Programm, das ein Array mit 4 Ganzzahlen verwendet ( das eine Folge von Zahlen darstellt, die von einem bestimmten Algorithmus generiert wurden ) und die nächste Ganzzahl zurückgibt, die folgen würde.
Wir werden nur einfache Additions-, Subtraktions-, Multiplikations- und Divisionsalgorithmen mit einer konstanten (dh nicht variablen) Variation verwenden.
Für die Division verwenden wir die floor
ganzzahligen Werte: 133/4 = 33
und33/4 = 8
Sie können davon ausgehen, dass es immer einen einzigen gültigen Rückgabewert gibt
Testfälle
[14,24,34,44]
sollte 54 zurückgeben (Additionsalgorithmus)
[105,45,-15,-75]
sollte -135 zurückgeben (Subtraktionsalgorithmus)
[5,25,125,625]
sollte 3125 zurückgeben (multiplikativer Algorithmus)
[256,64,16,4]
sollte 1 zurückgeben (Teilungsalgorithmus)
Allgemeine Regeln
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes die Herausforderung.
- Standardlücken sind verboten
-81/4
ist entweder21 r 3
oder-20 r -1
.Antworten:
05AB1E ,
181618 BytesErläuterung
Probieren Sie es online!
quelle
[-325, -82, -21, -6]
Javascript (ES6),
444244 Bytes (fest)2 Bytes gespart, gemäß IsmaelMiguels Rat.
Feste Version für
[2,1,0,0]
und[1,0,0,0]
wie von edc65 vorgeschlagen30-Byte-Version
Mein erster Versuch war
32 -30 Bytes, aber es fehlte die Unterstützung von floor () für die Division. Es schlägt auch für Sonderfälle wie[2,1,0,0]
und fehl[1,0,0,0]
.Demo
quelle
[a,b]=>
für Funktionsparameter nichts tun können. Die Klammern sind erforderlich.b*2==c+a
<=> Additions- / SubtraktionsalgorithmusBrachylog ,
373327 BytesProbieren Sie es online! oder überprüfen Sie alle Testfälle .
10 Bytes dank @LeakyNun gespart .
Erläuterung
Wie LeakyNun hervorhob, brauchen wir den Subtraktionsfall nicht, da es
I
sich um eine beliebige Ganzzahl handeln kann.quelle
Haskell, 65 Bytes
quelle
Python 2, 40 Bytes
Es ist buchstäblich die in Python portierte JS-Antwort (danke @LeakyNun!). Mein bisheriger Ansatz war lächerlich lang, aber hier ist es:
Python 2,
169166 BytesDie zweite und dritte Ebene sind ein Raw-Tab und ein Raw-Tab sowie ein Leerzeichen, was sehr schlecht mit Markdown funktioniert. Die Tabs wurden also durch zwei Leerzeichen ersetzt.
Ziemlich einfach; probiert jede Konstante und jeden Operator aus, von dem sie glaubt, dass sie die Konstante sein könnte. Funktioniert die Konstante / Operator-Kombination dann für jedes Element in der Liste (mit einem
try
/except
ZeroDivisionError
gibt man das Ergebnis für das letzte Element in der Liste aus -Paar, um s zu vermeiden ).Ich bin sicher, dass es hier eine bessere Methode gibt, das ist die naive Methode.
quelle
[1,0,0,0]
die ausgegeben werden soll0
TSQL, 55 Bytes
Dieses Skript versucht, in derselben Prüfung zu addieren und zu subtrahieren. Dann wird versucht, zu multiplizieren. Wenn dies fehlschlägt, muss es dividiert werden.
Geige
quelle
C #, 63 Bytes
Überprüft, ob der Unterschied zwischen dem ersten und dem zweiten Element gleich dem Unterschied zwischen dem zweiten und dem dritten Element ist. In diesem Fall wird addiert / subtrahiert, andernfalls wird multipliziert / dividiert.
quelle
JavaScript, 73 Bytes
Tests :
Funktioniert für alle.
quelle
GameMaker-Sprache, 70 Byte
quelle
R
6874Array: 68 Byte
4 Eingänge: 45 Bytes
Bonus - Lösung mit
log
,exp
,var
, 71 Bytesupdate: ganzzahlige Division
quelle
b-a
, um ein Byte zu speichern (und ich stelle fest, dass Ihre Beispielaufrufe wieder Leerzeichen hinzufügen).261,65,16,4
Rückgaben0.9961686
statt1
(in der Frage sollte es natürlich einen Testfall dafür geben).Java,
125123 BytesGolf gespielt:
Ungolfed:
Dieser Code hat sicherlich einige Probleme, da er die Division durch Null und dergleichen nicht behandelt. Es funktioniert natürlich auch nicht, wenn das Eingabearray mehr (oder weniger) als 4 Ganzzahlen enthält
a
. Das macht es überaus dumm, aber ich hatte Spaß :)Probieren Sie es aus: https://ideone.com/nELH5I
quelle
TI-Basic, 37 Bytes
Funktioniert mit jedem TI-83/84-Taschenrechner
quelle
Python 2,
75 66 6561 BytesViel länger als mein vorheriger 38-Byte-Eintrag, der die Teilungsserie nicht korrekt berücksichtigte (so wie die meisten anderen nicht).
Testfälle und mehr Randfälle sind auf ideone
Anmerkung: Ganzzahl - Division für eine negative hier definiert ist als ein Rest mit dem gleichen Vorzeichen wie der Divisor aufweist, so
-81/4
wäre-21
mit einem Rest von3
und-81/-4
wäre20
mit einem Rest von-1
.quelle
-81/-4 != -21
Jelly , 14 Bytes
Probieren Sie es online!
quelle
Pyth, 18 Bytes
Akzeptiert Eingaben als durch Zeilenumbrüche getrennte Liste von Werten.
Probieren Sie es online!
Erläuterung:
quelle