Eingang:
Eine nicht-leere Liste / Vektor , wobei jedes Element einen Wert / Zeichen hält, die angibt , ob Sie sich verlassen werden auf oder nach unten . Ich benutze 1
und -1
, aber du kannst wählen, was du willst. Sie können nur zwei Werte verwenden, Sie können nicht 1,2,3...
und -1,-2,-3...
für oben bzw. unten verwenden.
Herausforderung:
Hier finden Sie die Zahlen in der geometrischen Reihe verwenden 1, 2, 4, 8, 16, 32 ... . Jedes Mal, wenn Sie mit dem Aufwärts- oder Abwärtszählen beginnen, zählen Sie in Schritten von 1 , dann 2 , dann 4 usw. Wenn Sie sich ändern und in die andere Richtung zählen, subtrahieren Sie zuerst 1 , dann 2 , dann 4 und so weiter. Die Ausgabe soll die Zahl sein, zu der Sie am Ende gelangen.
Beispiele:
Im folgenden Beispiel ist die erste Zeile die Eingabe, die zweite Zeile die Zahlen, die Sie hoch- / runterzählen, die dritte Zeile die kumulative Summe und die letzte Zeile die Ausgabe.
Beispiel 1:
1 1 1 1 1 1 1 1 1 1
1 2 4 8 16 32 64 128 256 512
1 3 7 15 31 63 127 255 511 1023
1023
Beispiel 2:
1 1 1 1 1 1 -1 -1 -1 -1 1 1 1
1 2 4 8 16 32 -1 -2 -4 -8 1 2 4
1 3 7 15 31 63 62 60 56 48 49 51 55
55
Wie Sie sehen können, wird der Wert, den wir zählen , durch das erste 1
oder -1
"Zurücksetzen" zurückgesetzt, und aufeinanderfolgende Sequenzen von 1
oder -1
bedeuten das Verdoppeln des Werts.
Beispiel 3:
-1 -1 1 1 -1 -1 -1
-1 -2 1 2 -1 -2 -4
-1 -3 -2 0 -1 -3 -7
-7
Einige zusätzliche Testfälle, um einige potenzielle Eckfälle zu berücksichtigen.
Die Eingabe erfolgt in der ersten Zeile. Die Ausgabe erfolgt in der Sekunde.
1
1
-------
-1
-1
-------
-1 1 -1 1 -1 1 -1 1 -1 1 -1 1
0
Dies ist Code-Golf, so dass die kürzeste Einsendung in jeder Sprache gewinnt.
®ì2Ãx
umxì2
zwei Bytes zu speichern.Cubix , 65 Bytes
Probieren Sie es online!
Schau es dir an
Als kurze Erklärung dafür:
quelle
JavaScript (ES6), 38 Byte
quelle
R , 32 Bytes
Probieren Sie es online!
Dies ist die gleiche Methode wie einige andere hier.
Mit der Eingabe von
-1 -1 1 1 -1 -1 -1
2, 2, 3
und Werten-1, 1, -1
3, 3, 7
-3, 3, -7
-7
quelle
Python 3 ,
5756 Bytes-1 Byte danke an @notjagan
Probieren Sie es online!
quelle
s>()
hat mich eine Sekunde gekostet. Das ist wirklich schlau.Gelee , 4 Bytes
Probieren Sie es online!
quelle
C ++ 14, 58 Bytes
Übernimmt die Eingabe über das
v
Argument (std::vector
oder einen beliebigen iterierbaren Container) und gibt sie an dass
Argument aus (als Referenz). Jedes Element vonv
muss entweder1
oder sein-1
.Anwendungsbeispiele und Testfälle.
quelle
Brachylog , 13 Bytes
Probieren Sie es online!
Brachylog verwendet
_
statt-
.Erläuterung:
quelle
Python,
7672 BytesProbieren Sie es online!
quelle
Pyth , 12 Bytes
Probieren Sie es online!
quelle
PHP, 51 Bytes
Lauf mit
-n
oder versuche es online .quelle
CJam (13 Bytes)
Online-Testsuite . Dies ist ein anonymer Block (eine Funktion), der ein Array von Ints auf dem Stapel entgegennimmt und ein Int auf dem Stapel hinterlässt. Der letzte Test zeigt, dass ein leeres Array korrekt behandelt wird und 0 ergibt.
Der Ansatz ist eine einfache Lauflängencodierung, gefolgt von einer manuellen Lauflängendecodierung für jeden Lauf und jede Basiskonvertierung. Bei Verwendung der integrierten Lauflängendekodierung erhalte ich mit
{e`1/:e~2fb1b}
oder ein Byte mehr{e`{ae~2b}%1b}
.quelle
05AB1E , 6 Bytes
Probieren Sie es online!
quelle
γε¬sƶÄ<o*}OO
Haskell,
5453 BytesProbieren Sie es online!
Eine einfache Rekursion, die entweder den Akkumulator verdoppelt
k
oder auf1
/ zurücksetzt-1
und die Werte der einzelnen Schritte addiert.quelle
Mathematica, 60 Bytes
quelle
Mathematica, 25 Bytes
quelle
Java, 91 Bytes
quelle
Pyth, 11 Bytes
Probieren Sie es online aus
Wie es funktioniert
quelle