Die Szene ist:
Peter ist mit seinem Kumpel Brian im Fitnessstudio, als Brian plötzlich dringend seinen Inhalator braucht. Brian schafft es, Peter den Code für sein Zahlenschloss mitzuteilen, bevor er auf dem Boden zusammenbricht.
In dem Moment, in dem Peter zu Brians Spind kommt und sieht, auf was der Indikator zeigt, überfällt Stewie ihn und sprüht ihm eine volle Dose Pfefferspray ins Gesicht, wodurch Peter erblindet.
Peter muss jetzt versuchen, das Schloss zu öffnen, ohne es anzusehen. Er fängt an, das Rad nach rechts zu drehen und zählt die Zahlen, während er an ihnen vorbeigeht. Dann beginnt er, bei der richtigen Nummer, das Zifferblatt nach links zu drehen, zählt noch und dreht es schließlich nach rechts, bis sich das Schloss öffnet.
Die Herausforderung:
Schreiben Sie eine Funktion / ein Programm, das zwei Eingaben übernimmt, die Kombination von Brian und die Anzeigeposition. Gib die Zahlen aus, die Peter zählen muss.
Regeln:
- Die Kombination und die Indikatorposition müssen separate Argumente sein.
- Die Eingabe kann entweder über die Eingabeaufforderung oder als Funktionsargument erfolgen.
- Die Ausgabe muss auf dem Bildschirm gedruckt / anderweitig angezeigt werden (nicht in eine Datei)
- Angenommen, die Startposition stimmt nicht mit der ersten Zahl überein, und alle drei Zahlen in der Kombination sind eindeutig
- Es ist das im Bild gezeigte Schloss mit möglichen Nummern: 0-39.
Anleitung:
Um das Schloss unten zu öffnen, müssen Sie eine Reihe von Anweisungen befolgen:
- Sie müssen Ihren Code kennen. Angenommen, es ist (38, 16, 22) für den Moment.
- Drehen Sie den Drehknopf dreimal nach rechts (dreimal über die Startnummer hinaus) und hören Sie dann auf, wenn die erste Nummer (38) mit der Anzeige übereinstimmt
- Drehen Sie den Drehknopf 1 Umdrehung nach links, wobei Sie die erste Ziffer überschreiten, und halten Sie an, wenn die zweite Ziffer (16) mit der Anzeige übereinstimmt.
- Drehen Sie den Drehknopf nach rechts und halten Sie an, wenn die dritte Ziffer (22) mit der Anzeige übereinstimmt
- Ziehen Sie das Schloss nach unten
Beispiel:
Input
38 16 22
33
Output
33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 39 38 39 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22
Es gelten die Standard-Code-Golfregeln.
Lösungen, die später veröffentlicht werden, können immer noch gewinnen, wenn sie kürzer sind als Dennis 'Antwort.
function combination(code){alert("Help! Someone open this locker, the combination is "+code+"!")}
Antworten:
CJam,
5239 BytesProbieren Sie es online im CJam-Interpreter aus .
Wie es funktioniert
quelle
Groovy,
189175 BytesAngenommen, der Indikator wird als arg0 und die Kombination als arg1, arg2 und arg3 in der Befehlszeile übergeben ...
quelle
Perl 5 , 129 + 1 (-a) = 130 Bytes
Probieren Sie es online!
Wie?
quelle
Python 2, 262 Bytes
Es fühlt sich so lang an. Es ist aber auch viel los.
Probieren Sie es online!
Ich denke, ich kann einige Teile in meiner letzten Zeile besser verketten, aber ich bin noch neu im Codieren von Golf und ich weiß nicht, wie ich diese Listenkombination auf kurze Weise angehen soll.
Ideen zur Verbesserung dieser?
quelle
Haskell ,
135112 BytesProbieren Sie es online!
23 Bytes dank Laikoni gespart
quelle
l s t=
indem Sies#t=
stattdessen einen Infix-Operator deklarieren . Es funktioniert auch für mehr als zwei Argumente:(a%b)c s=
.s+1
.