Anda bersama kawan terbaik Anda, Jim, di taman hiburan dan ketika perjalanan favorit Anda mulai terlihat, Anda dan Jim saling bertukar pandang. Secara alami Anda berlomba untuk mengantre. Sayangnya dia menang karena kamu seorang pegolf dan dia memainkan olahraga nyata (teman maaf). Faktanya, Anda jauh di belakang sehingga Anda dan Jim dipisahkan oleh x
orang-orang. Dengan asumsi garis panjang n
dan Anda berada di belakang dan garis zig dan zag setiap j
orang, pada posisi apa di garis itu Anda dan Jim akan berada di kolom yang sama memungkinkan Anda untuk mengobrol (hanya terpisah satu baris)?
Memasukkan
3 Integer
n
- Panjang garis. Jumlah ini akan selalu lebih besar dari atau sama denganj
dan akan dalam bentuky * j
di manay
adalah bilangan bulat positif (jumlah baris dalam antrian).j
- Jumlah orang dalam satu baris baris (jumlah kolom dalam satu baris). Jumlah ini akan selalu lebih besar dari 0.x
- Jumlah orang antara kamu dan Jim sedemikian rupa0 <= x < 2j - 1
. Petunjuk: Jika angka ini ganjil, maka output Anda harus kosong.
Keluaran
Daftar posisi integer di baris tempat Jim berada di kolom yang sama dengan Anda.
1 Bilangan bulat ini dapat diindeks 0 atau 1 selama Anda tentukan dalam jawaban Anda.
2 Bilangan bulat ini dapat mengasumsikan Anda mulai dari posisi 0 atau posisi n-1 selama Anda tentukan dalam jawaban Anda.
Contoh
Dalam contoh ini, inputnya adalah n = 9, j = 3, x = 0
. Keluaran seharusnya 2, 5
karena posisi Anda 2 atau 5 ketika Anda berada di kolom yang sama dengan Jim
Uji Kasus
[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]
Mencetak gol
Ini adalah kode-golf , jadi jawaban tersingkat (dalam byte) menang.
Jawaban:
Python 2 ,
45414037 byteCukup banyak solusi sepele. Aku hanya cepat dipindai untuk pola dan menemukan pola. 1-diindeks, 1 di belakang antrian.
-4 byte dengan menghindari terner dan menggunakan array untuk nilai bukan
-1 byte berkat beberapa inspirasi dari @DeadPossum, dengan menggunakan
and
alih-alih terner atau selektor array-3 byte dengan beralih ke
or
dalam urutan yang berlawanan. Hanya berfungsi karena pengindeksan 1Juga, mencoret 4 masih 4 pada semua 4s :(
Cobalah online!
sumber
lambda n,j,x:x%2-1and range(j-x/2,n-j+1,j)
n-j+1
, jadilambda n,j,x:x%2-1and range(j-x/2,n-x,j)
lebih pendek dengan satu lagi total 40 bytePip ,
2221 byte20 byte kode, +1 untuk
-p
bendera.Membawa
n
,j
danx
sebagai argumen command-line. Diindeks 0, mulai dari posisi 0. Cobalah online!Penjelasan
Ini adalah versi 22-byte asli saya karena ini sedikit lebih dimengerti.
Rumus diperoleh dengan mengamati pola untuk
n=9
,j=3
:Jika kita mengambil
x/2
(0
,1
,2
), kurangi darij-1
(2
,1
,0
), dan menambahkan bahwa untuk[0;3]
, kami mendapatkan hasil yang benar dalam semua kasus.sumber
Java 8 lambda, 101 byte
Port jawaban Python saya yang hampir langsung. Rentang tidak ada di Jawa sekalipun.
sumber
Haskell, 43 byte
Cukup banyak porting langsung dari jawaban Python dari HyperNeutrino
Kode yang diformat lebih baik:
EDIT: Lupa menyebutkan itu satu-diindeks
sumber
C # - 91 byte
sumber