Anda dan beberapa teman akan bermain bowling. Ada total N bowler. Namun, hanya ada N- 1 kursi untuk duduk. Solusinya sederhana: siapa pun yang gilirannya saat ini tidak mendapatkan kursi. Kemudian ketika giliran mereka berakhir, mereka duduk di kursi orang yang pergi berikutnya.
Mari kita ambil contoh. Katakanlah Anda diberi nama A , dan empat teman bernama B , C , D , dan E . Setiap pemain bergerak dalam urutan abjad, sehingga Anda bisa pergi dulu. Karena ada 5 pemain, hanya ada 4 kursi. Teman-teman Anda duduk di empat kursi dalam urutan ini:
CEBD
Anda pergi, dan yay Anda mendapatkan serangan! Itu B 's giliran berikutnya, sehingga Anda duduk di kursinya. Sekarang terlihat seperti ini:
CEAD
B pergi. Talang! Lalu dia duduk di tempat C , dan C belok berikutnya.
TITISAN
lalu C duduk di kursi D.
BEAC
dan D duduk di kursi E.
BDAC
dan terakhir, E duduk di kursi Anda.
BDEC
Anda akan melihat bahwa sekarang kursi semua orang (semu) dikocok. Anda harus mencari tahu, setelah X berbalik, siapa yang akan duduk di mana?
Memasukkan
Program Anda harus mengambil dua input dari pengguna, string dan angka. Tidak ada konfirmasi yang diperlukan. String akan menjadi 1-51 karakter alfabet (BZ dan az) tanpa pengulangan. Ini mewakili urutan teman yang Anda pilih untuk duduk. Tidak akan ada huruf A besar karena itu adalah Anda, dan Anda selalu pergi dulu. Jumlahnya akan menjadi jumlah total putaran (bukan game) yang Anda dan teman Anda mainkan. Angka ini akan menjadi positif dan berukuran wajar (kurang dari 1000).
Keluaran
Program Anda harus mencetak urutan teman-teman Anda duduk setelah X berubah, dan giliran siapa. Jadi misalnya, jika setelah X ternyata urutannya adalah BEDGCAHF dan giliran Z , program Anda harus mencetak dengan tepat ini:
BEDGCAHF
It is Z's turn.
Berikut adalah beberapa contoh input dan output.
input: E, 4
E
It is A's turn.
input: E, 5
A
It is E's turn.
input: Bb, 2
AB
It is b's turn.
input: dgOPZXKDQYioHflFhpqzUsSaeILwckVNEtGTCJBvnruRyWMmjxb, 999
JNuvFDqjwEPVnMSlOWXgAZyGKordIRBtkamziphcUYbxfCsTQeH
It is L's turn.
Aturan
Semua orang menggunakan urutan abjad, dengan huruf kapital didahulukan dari huruf kecil.
Ini adalah kode-golf, jadi celah standar berlaku, dan pengiriman dinilai dalam byte .
{({}[()])({}<({}<(([])<{{}({}<>)<>([])}{}<>>)<>>)<>{({}[()]<({}<>)<>>)}{}<>>)}
Jawaban:
Pyth, 37 byte
Demonstrasi Online: Kompilator / Pelaksana Pyth
Algoritma ini agak berdasarkan pada solusi @ isaacg. Seperti dia, saya mulai dengan urutan kursi awal dan berulang kali menggunakan fungsi
X
ganti untuk mengganti pemain berikutnya dengan pemain saat ini.Tetapi tidak seperti implementasinya, yang menggantikan karakter pemain berikutnya dengan pemain saat ini dalam urutan tempat duduk, saya menggunakannya secara lebih luas. Saya mengganti setiap karakter pemain saat ini dengan pemain berikutnya dan setiap karakter pemain berikutnya dengan pemain saat ini. Ini dicapai dengan melewati kedua pemain sebagai arg kedua dan hilangkan arg ketiga (
XG"ab")
bukanXG"a""b"
). Karena pemain saat ini bukan bagian dari string (dia bermain), penggantian pertama tidak berpengaruh sama sekali. Tapi itu memungkinkan saya untuk menghasilkan kedua pemain secara bersamaan, sementara @isaacg harus membuat mereka secara individual.Fitur baru gila lain yang saya gunakan adalah operator penugasan. Sampai baru
=N1
- baru ini diterjemahkan ke dalamN = 1
, yang dieksekusi dengan Python. Tetapi sekarang ini dikompilasi untukassign('N',1)
. Fungsi ini ditetapkanN
dengan 1 dan mengembalikan nilai (tetapi tidak mencetaknya). Ini memungkinkan penghematan hasil antara, yang terjadi misalnya dalam operasi pengurangan. Dengan menggunakan ini saya dapat menyimpan sepasang pemain, yang mengubah posisi terakhir, dan mencetak pemain kedua.Penjelasan detail
sumber
Pyth,
3938 byteIni didasarkan pada aplikasi berulang dari operasi find and replace
X
,. Bit pertama mendefinisikan fungsi pencariany
,, yang menemukanb
pemain th dalam urutan pemain. Kemudian, kami berulang kali melakukan penggantian untuk menemukan urutan tempat duduk terakhir, dan akhirnya mencetak giliran siapa.Yang mengherankan, kode untuk menemukan urutan tempat duduk terakhir lebih pendek (18 byte) daripada kode untuk mencetak yang gilirannya (21 byte).
Kode mengambil string tempat duduk pada baris pertama STDIN, dan jumlah putaran pada baris kedua.
Demonstrasi.
Penjelasan:
sumber
%
, jika Anda hanya memasukkan satu hal. Bahkan++
akan menghemat satu byte, tetapi cara terbaik (2 byte) menggunakanp
:pyQ"It is ""'s turn
++
memiliki jumlah byte yang sama dengan%
, danp
hanya menghemat 1 byte.CJam,
494543 byteSaya pikir ini berhasil. Itu hanya menjalankan algoritma apa adanya.
Cobalah online.
Penjelasan
sumber
Python 3, 110
Versi optimal dari solusi Sp3000 menggunakan
replace
. Daftar iniS
berputar melalui huruf-huruf yang ada dalam urutan. Kami melakukan penggantian berulang dalam string yang diberikan masing-masing karakterS
oleh yang sebelumnya.sumber
Klip 10 ,
5956 byteContoh
Penjelasan
Input pertama adalah daftar pemain, yang ditugaskan ke variabel
x
.Input kedua adalah jumlah belokan, yang diperoleh dengan program
ny
.Terima kasih kepada Sp3000 untuk gagasan menggunakan "ganti".
sumber
Python 3, 128 byte
Mengambil dua baris input melalui STDIN - urutan tempat duduk awal kemudian jumlah belokan.
Ini pada dasarnya ide pencarian dan ganti yang sama dengan solusi CJam saya . Bagian hanya rumit adalah bahwa kita tetap
A
di belakang urutan bowling dan membuat indeks kamii
indeks berikutnya bowler, sehingga mengambil keuntungan dari pengindeksan dengan -1 dan menghindariIndexError
s.Ini beberapa byte lebih pendek di Python 2, tapi saya memposting Python 3 untuk perbandingan dengan solusi OP.
sumber
int(input())
pada baris 4 menjadi input (-4) sehingga membatalkan. Kemudian hapus tanda kurung dari cetakan dan tambahkan spasi dengan total 127. Apakah saya melewatkan sesuatu?exec
JavaScript (ES6) 116
116 byte sebagai program dengan I / O via jendela popup. 114 sebagai fungsi yang dapat diuji.
Jalankan cuplikan kode di Firefox untuk menguji.
sumber
PowerShell, 168 byte
Saya sudah memutuskan semua jawaban saya di situs ini adalah di PowerShell. Suatu hari saya akan memiliki jawaban yang dapat bersaing ...
panggil fungsi seperti ini:
x Bb 2
sumber
Jawaban ini tidak akan menang, tetapi saya tetap akan membuangnya di sana.
Python 3, 167 byte
sumber
Pip , 54 byte
Tidak terlalu kompetitif, tapi setidaknya aku bisa memamerkan string Pip yang bisa berubah dan perintah Swap. Mengambil urutan tempat duduk dan jumlah putaran sebagai argumen baris perintah (yang ditugaskan untuk
a
danb
, masing-masing).Penjelasan:
Itu akan menjadi 49 jika saya repot-repot mengimplementasikan
SS
(urutkan sebagai string) pada saat yang sama saya lakukanSN
(urutkan numerik) ... Ah well, bahaya memiliki bahasa dalam pengembangan.sumber
Python 2 , 105 byte
Cobalah online!
Golf dari:
sumber
Perl 5 , 102 + 1 (-n) = 103 byte
Cobalah online!
Memasukkan
Pesanan tempat duduk, diikuti oleh jumlah belokan tanpa spasi:
sumber