Als ich heute zur Arbeit kam, bemerkte ich, dass der Kilometerzähler meines Autos bei 101101 lag. Was eine coole Zahl ist, weil es binär ist (und ein Palindrom, aber das ist nicht wichtig). Jetzt möchte ich wissen, wann ich das nächste Mal einen binären Kilometerzählerstand haben werde. Ich kann den Kilometerzähler während der Fahrt nicht ablesen, da dies gefährlich wäre. Daher muss er entweder binär sein, wenn ich zur Arbeit gehe oder nach Hause komme.
Auf dem Weg von und zu meinem Büro herrscht sehr viel Verkehr, daher muss ich jeden Tag eine andere Route einschlagen.
Für diese Herausforderung ist ein Tag eine Rundreise und beginnt mit meinem Weg zur Arbeit.
Sie müssen zunächst den Kilometerzähler und eine 10-Elemente-Sequenz ablesen, die die Anzahl der Meilen pro Strecke angibt. Diese Sequenz sollte wiederholt werden, bis Sie zu einem binären Kilometerzähler kommen. Sie sollten dann die Anzahl der Tage ausgeben, die es dauert, bis wir zu einem binären Messwert kommen.
Sowohl der Kilometerstand als auch der Kilometerstand sind positive ganze Zahlen. Die Anzahl der Tage ist entweder x
oder x.5
, daher muss Ihre Ausgabe der Tageszählung für halbe Tage Gleitkommazahlen unterstützen. Wenn die Tageszählung eine Ganzzahl ist, müssen Sie die nicht ausgeben .0
. Der Kilometerzähler erreicht irgendwann immer einen binären Zustand.
Jede Form von Eingabe / Ausgabe ist akzeptabel und Standardlücken sind nicht zulässig .
Testfälle:
101101, [27, 27, 27, 27, 27, 27, 27, 27, 27, 27] == 165.0
1, [13, 25, 3, 4, 10, 8, 92, 3, 3, 100] == 22.5
2, [2, 3, 1, 2, 7, 6, 10, 92, 3, 7] == 2.0
Antworten:
Jelly,
221716 BytesProbieren Sie es online!
Wie es funktioniert
quelle
Javascript,
6863616052 Bytes5 Bytes weg danke @ETHproductions .
2311 !! Bytes off danke @NotthatCharles .Hier testen.
quelle
(i+=a[++m%10])
funktionierenr
oderm
was auch immer (sie sollten standardmäßig null sein, dh 0)m=0
im Initialisierer erstellen und nach modulo (m++%10
) inkrementieren. An diesem Punkt können Sie es einfachr
ganz fallen lassen . Die ganze Methode ist dann in den niedrigen 50ernMATL ,
292625 BytesEingabeformat ist
BEARBEITEN (10. Juni 2016): Der folgende Link wird
v
durch&v
( 26 Byte ) ersetzt, um sich an Änderungen in der Sprache anzupassenProbieren Sie es online!
quelle
Lua, 108 Bytes
Zum ersten Mal mit der Wiederholung ... bis zur Schleife in einem Codegolf!
Ungolfed
Nach der ersten Schleife
o
wird ein Dezimalteil angezeigt, datonumber
musste ich es entfernen ... Und um es für den ersten Fall hinzuzufügen, verkette ich es deshalb mit einem"."
.quelle
Java, 112
MeilenBytesquelle
05AB1E , 31 Bytes
Code:
Irgendwie hört der Code nicht auf zu laufen (und ich kann nicht herausfinden warum). Anscheinend habe ich vergessen, dass es statt 2 drei Loops gibt. Es würde also immer noch zu einer Endlosschleife ...Probieren Sie es online!
quelle
PowerShell,
8473675957 ByteÜbernimmt Eingaben
$a
und$b
erwartet$b
eine explizite Reihe von Meilen (z.\binary-car.ps1 1 @(13,25,3,4,10,8,92,3,3,100)
. B. ). Wir betreten dann einedo
/until
Schleife. Bei jeder Iteration erhöhen wir$a
den Kilometerstand$b
an der Position,$i++ % 10
so dass wir das Array fortlaufend durchlaufen. Dies beginnt bei Null, da für die erste Schleife die$i
nicht initialisiert ist, und wird daher als ausgewertet$null
, was0
in diesem Kontext gleichbedeutend ist , und es ist nur nach dieser Auswertung++
auftritt.Dann
until
prüft die Anweisung, ob unsere Zahl nur ist,0
und1
indem sie zuerst-replace
alles1
mit nichts besetzt, diese Zahl als Ganzzahl mit zurückgreift+
und dann den Booleschen Wert mit nicht annimmt!
. Wenn es wahr ist, beenden wir die Schleife und geben sie aus$i / 2
und beenden das Programm.Erklärung für die Schleifenbedingung - In PowerShell ist jede Ganzzahl ungleich Null
$true
und jede nicht leere Zeichenfolge auch$true
. Beispielsweise wird231145
(eine Ganzzahl) nach"2345"
(eine Zeichenfolge) geändert-replace
, die in2345
(eine Ganzzahl) umgewandelt!
wird$false
. Jedoch101101
(eine ganze Zahl) wird sich ändern"00"
(String) , die wie gegossen0
(eine ganze Zahl), die!
von denen$true
. Wenn wir das nicht hätten+
, das"00"
Willen!
dazu$false
, da es sich um eine nicht leere Zeichenfolge ist.Bearbeiten - 11 Bytes durch Vertauschen der Längengleichheit gegen Null
gespeichert. Bearbeiten 2 - Weitere 6 Bytes wurden gespeichert, indem erkannt wurde, dass dies
$b.count
immer der Fall sein wird10
.Bearbeiten 3 - Weitere 8 Bytes wurden mit do / until statt für Bearbeiten gespeichert
4 - Wenn das Objekt
-replace
d ein ganzzahliger Wert ist, brauchen Sie keine Anführungszeichen, und sparen Sie weitere 2 Bytesquelle
Rubin, 58
Nichts Besonderes. Nur ein Zyklus ...
quelle
->s,a,i=0{a.cycle{|e|i+=0.5;break i if/[2-9]/!~'%d'%s+=e}}[1, [13, 25, 3, 4, 10, 8, 92, 3, 3, 100]]
oder ...f=->s,a,i=0{a.cycle{|e|i+=0.5;break i if/[2-9]/!~'%d'%s+=e}}; f[1, [13, 25, 3, 4, 10, 8, 92, 3, 3, 100]]
Mathematica, 92 Bytes
Ja. Eingabe ist der Kilometerzähler und eine Liste der Zeiten. Ausgabe ist die Tageszählung.
quelle
PHP,
10298Ungolfed Version
PHP-Hinweise können gegen einen Aufpreis von 4 Zeichen
$d = 0;
in der Golfversion entfernt werden.Beispiel
quelle
if
, das Entfernen der 0 von0.5
und das Entfernen|
der 1 bis 0 in Ihrem Regex erspart Ihnen 4 Bytes.function f($i,$s){while(1)foreach($s as$v){$d+=.5;$i+=$v;if(preg_match('/^[01]+$/',$i))return$d;}}
Pyth,
363230 BytesProbieren Sie es hier aus!
Erläuterung
quelle
C Sharp, 180.
Sehr geehrter Herr C # ist lang.
quelle