Sie sind mit Ihrem besten Kumpel, Jim, im Vergnügungspark und als Ihre Lieblingsfahrt in Sicht kommt, tauschen Sie und Jim einen Blick aus. Natürlich rennst du, um in die Reihe zu kommen. Leider gewinnt er, weil Sie ein Golfspieler sind und er eine echte Sportart ausübt (sorry Freunde). Tatsächlich sind Sie so weit dahinter, dass Sie und Jim von x
Menschen getrennt werden . Angenommen, die Leitung ist lang n
und Sie sind hinten und die Leitung zickzackt bei jedem j
Menschen. An welchen Positionen in der Leitung werden Sie und Jim in derselben Spalte sein, in der Sie sich unterhalten können (nur eine Zeile auseinander)?
Eingang
3 ganze Zahlen
n
- Die Länge der Linie. Diese Zahl ist immer größer oder gleichj
und hat die Form,y * j
in dery
es sich um eine positive Ganzzahl handelt (die Anzahl der Zeilen in der Warteschlange).j
- Die Anzahl der Personen in einer Zeile der Zeile (die Anzahl der Spalten in einer Zeile). Diese Zahl ist immer größer als 0.x
- Die Anzahl der Leute zwischen dir und Jim, so dass0 <= x < 2j - 1
. Hinweis: Wenn diese Zahl ungerade ist, sollte Ihre Ausgabe leer sein.
Ausgabe
Eine Liste von Ganzzahlpositionen in der Zeile, in der sich Jim in derselben Spalte wie Sie befindet.
1 Diese Ganzzahlen können 0- oder 1-indiziert sein, solange Sie dies in Ihrer Antwort angeben.
2 Bei diesen Ganzzahlen kann davon ausgegangen werden, dass Sie an Position 0 oder n-1 beginnen, solange Sie dies in Ihrer Antwort angeben.
Beispiel
In diesem Beispiel wäre die Eingabe n = 9, j = 3, x = 0
. Die Ausgabe sollte erfolgen, 2, 5
weil Ihre Position 2 oder 5 ist, wenn Sie sich in derselben Spalte wie Jim befinden
Testfälle
[9, 3, 0] -> [2, 5]
[12, 3, 0] -> [2, 5, 8]
[9, 3, 1] -> []
[9, 3, 2] -> [1, 4]
[14, 7, 10] -> [1]
[24, 4, 6] -> [0, 4, 8, 12, 16]
Wertung
Das ist Code-Golf , also gewinnt die kürzeste Antwort (in Bytes).
Antworten:
Python 2 ,
45414037 BytesSo ziemlich die triviale Lösung. Ich habe nur schnell nach Mustern gesucht und ein Muster gefunden. 1-indiziert, 1 steht ganz hinten in der Warteschlange.
-4 Bytes durch Vermeiden von Ternären und Verwenden eines Arrays für die Werte statt
-1 Bytes dank einiger Inspirationen von @DeadPossum, durch Verwenden
and
von Ternären oder Array-Selektoren anstelle von-3 Bytes durch Umschalten
or
in umgekehrter Reihenfolge. Funktioniert nur wegen 1-IndizierungAuch durchgestrichen 4 ist immer noch 4 auf allen 4s :(
Probieren Sie es online!
quelle
lambda n,j,x:x%2-1and range(j-x/2,n-j+1,j)
n-j+1
,lambda n,j,x:x%2-1and range(j-x/2,n-x,j)
ist also um eins kürzer, insgesamt 40 BytesPip ,
2221 Bytes20 Byte Code, +1 für
-p
Flag.Dauert
n
,j
undx
als Befehlszeilenargumente. 0-indiziert ab Position 0. Probieren Sie es online!Erläuterung
Dies ist meine ursprüngliche 22-Byte-Version, da sie etwas verständlicher ist.
Die Formel wurde durch Beobachten des Musters erhalten für
n=9
,j=3
:Wenn wir
x/2
(0
,1
,2
), subtrahieren sie vonj-1
(2
,1
,0
), und fügen Sie das zu[0;3]
, wir das richtige Ergebnis in allen Fällen erhalten.quelle
Java 8 Lambda, 101 Bytes
Fast direkter Port meiner Python-Antwort. Range existiert in Java allerdings nicht.
quelle
Haskell, 43 Bytes
Ziemlich direkt aus der Python-Antwort von HyperNeutrino portiert
Gut formatierter Code:
EDIT: Ich habe vergessen zu erwähnen, dass es ein Index war
quelle
91 Bytes
quelle