Jesteś ze swoim najlepszym kumplem, Jimem, w wesołym miasteczku, a gdy pojawia się twoja ulubiona jazda, ty i Jim wymieniacie spojrzenia. Oczywiście ścigasz się, aby stać w kolejce. Niestety wygrywa, ponieważ jesteś golfistą i uprawia prawdziwy sport (przepraszam przyjaciół). W rzeczywistości jesteś tak daleko w tyle, że ty i Jim jesteście oddzieleni przez x
ludzi. Zakładając, że linia jest długa, n
a ty jesteś z tyłu, a linia zygzakuje i zagrywa każdego j
ludu, w jakich pozycjach w linii ty i Jim będziecie w tej samej kolumnie, umożliwiając wam czat (tylko jeden rząd od siebie)?
Wejście
3 liczby całkowite
n
- długość linii. Liczba ta jest zawsze większe lub równej
i będzie w formiey * j
, gdyy
jest dodatnia (liczbę wierszy w kolejce).j
- Liczba osób w jednym rzędzie linii (liczba kolumn w jednym rzędzie). Liczba ta zawsze będzie większa niż 0.x
- Liczba osób między tobą a Jimem taka, że0 <= x < 2j - 1
. Wskazówka: jeśli liczba ta jest nieparzysta, wynik powinien być pusty.
Wynik
Lista pozycji liczb całkowitych w linii, w której Jim znajduje się w tej samej kolumnie co ty.
1 Te liczby całkowite mogą być indeksowane 0 lub 1, o ile podano w odpowiedzi.
2 Te liczby całkowite mogą zakładać, że zaczynasz od pozycji 0 lub pozycji n-1, o ile podasz w odpowiedzi.
Przykład
W tym przykładzie dane wejściowe to n = 9, j = 3, x = 0
. Wynik powinien być taki, 2, 5
że twoja pozycja wynosi 2 lub 5, gdy jesteś w tej samej kolumnie co Jim
Przypadki testowe
[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]
Punktacja
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź (w bajtach).
Odpowiedzi:
Python 2 ,
45414037 bajtówPrawie trywialne rozwiązanie. Po prostu szybko poszukałem wzorów i znalazłem wzór. 1 indeksowany, 1 znajduje się z tyłu kolejki.
-4 bajty poprzez unikanie trójek i użycie tablicy wartości zamiast
-1 bajt dzięki pewnej inspiracji z @DeadPossum, poprzez użycie
and
zamiast trójek lub selektorów tablic-3 bajty poprzez przełączenie na
or
w odwrotnej kolejności. Działa tylko z powodu indeksowania 1Przekreślone 4 to nadal 4 na wszystkich 4 :(
Wypróbuj online!
źródło
lambda n,j,x:x%2-1and range(j-x/2,n-j+1,j)
n-j+1
, więclambda n,j,x:x%2-1and range(j-x/2,n-x,j)
jest krótszy o jeden w sumie 40 bajtówPip ,
2221 bajtów20 bajtów kodu, +1 dla
-p
flagi.Bierze
n
,j
ix
jako argumenty wiersza poleceń. Indeksowane od 0, zaczynając od pozycji 0. Wypróbuj online!Wyjaśnienie
To jest moja oryginalna 22-bajtowa wersja, ponieważ jest nieco bardziej zrozumiała.
Preparat otrzymano przez obserwację wzór do
n=9
,j=3
:Jeśli weźmiemy
x/2
(0
,1
,2
), odjąć go odj-1
(2
,1
,0
), i dodać, że do[0;3]
otrzymujemy poprawny wynik we wszystkich przypadkach.źródło
Java 8 lambda, 101 bajtów
Prawie bezpośredni port mojej odpowiedzi w Pythonie. Zasięg nie istnieje jednak w Javie.
źródło
Haskell, 43 bajty
Prawie bezpośrednio przeniesione z odpowiedzi Pythona od HyperNeutrino
Bardziej dobrze sformatowany kod:
EDYCJA: Zapomniałem wspomnieć, że był to jeden indeks
źródło
C # - 91 bajtów
źródło