Dua anak saya suka bermain dengan mainan berikut:
Area berwarna dengan bentuk di dalamnya dapat disentuh dan kura-kura kemudian menyalakan area dan memainkan suara atau menyebutkan nama warna atau bentuk di dalamnya. Tombol tengah mengubah mode. Ada satu mode di mana area memainkan not musik yang berbeda ketika disentuh, dengan twist: jika anak menyentuh tiga area berturut-turut searah jarum jam, dimainkan melodi khusus 1. Jika tiga area berurutan yang disentuh ditempatkan berlawanan arah jarum jam, melodi khusus 2 dimainkan.
Tantangan
Mari kita simulasikan logika internal mainan. Diberikan string dengan 3 penekanan anak, kembalikan dua nilai yang berbeda dan koheren jika tiga penekanan tersebut untuk area yang berurutan (searah atau berlawanan arah jarum jam) dan nilai berbeda ketiga jika tidak.
Detail
- Area input akan diberi nama dengan karakter masing-masing, yang dapat menjadi warna mereka:
ROYGB
untuk merah, oranye, kuning, hijau dan biru; atau bentuknya:HSRTC
untuk jantung, kotak, bintang (R
), segitiga dan lingkaran. Kasus tidak masalah, Anda dapat memilih untuk bekerja dengan input dan output hanya dalam huruf besar atau kecil. - Program akan menerima string (atau array char atau yang setara) dengan tiga penekanan. Contoh (menggunakan warna):
RBO
,GYO
,BBR
,YRG
,YGB
,ORB
... - Program akan menghasilkan tiga nilai yang berbeda dan koheren untuk mewakili tiga hasil yang mungkin: nilai pertama jika kombinasi tidak memicu melodi khusus, nilai kedua jika kombinasi memicu melodi khusus searah jarum jam, dan nilai ketiga jika kombinasi memicu Melodi khusus berlawanan arah jarum jam. Contoh:
0
tanpa kombinasi khusus,1
untuk melodi yang dipicu oleh kombinasi searah jarum jam dan-1
untuk melodi yang dipicu oleh kombinasi berlawanan arah jarum jam. - Anda tidak perlu khawatir tentang penanganan input yang salah.
Uji kasus
Input Output // Input based on colors
--------------
RBO 0 // No special combination
GYO -1 // Counterclockwise melody triggered
BBR 0 // No special combination
YRG 0 // No special combination
YGB 1 // Clockwise melody triggered
ORB -1 // Counterclockwise melody triggered
OOO 0 // No special combination
BRO 1 // Clockwise melody triggered
Ini adalah kode-golf , jadi semoga kode terpendek untuk setiap bahasa menang!
sumber
[0,0]
,[1,0]
,[0,1]
diperbolehkan sebagai output? Saya melihat jawaban Mathematica melakukan itu, dan itu akan menghemat 3 byte dalam jawaban 05AB1E.Jawaban:
Java 8,
483933 byte-6 bytes terima kasih kepada @RickHitchcock , jadi pastikan untuk memperbaiki dia juga !
Mengambil warna huruf besar sebagai input-String. Output
-1
untuk tidak ada,7
untuk searah jarum jam, dan15
untuk berlawanan arah jarum jam.Cobalah online.
Penjelasan:
Jawaban 39 byte:
Mengambil warna huruf besar sebagai input-String. Output
9362
untuk tidak ada,0
untuk searah jarum jam, dan1
untuk berlawanan arah jarum jam.Cobalah online.
Penjelasan:
sumber
10922
(integer-division by/6
) atau8191
(integer-division by/8
), tapi saya memilih/7
karena ini adalah indeks ruang di String. :)JavaScript (ES6), 41 byte
Mengambil inisial warna sebagai input. Pengembalian
2
tanpa,true
untuk searah jarum jam ataufalse
berlawanan arah jarum jam.Cobalah online!
sumber
s=>('ROYGBRO_ORBGYOR'.search(s)+8)/8|0
Python 2 , 36 byte
-1
- Tidak ada0
- Searah jarum jam1
- Berlawanan arah jarum jamCobalah online!
sumber
Excel, 29 byte
Warna huruf besar sebagai input.
Mengembalikan
#VALUE!
tanpa pola,TRUE
untuk searah jarum jam,FALSE
untuk berlawanan arah jarum jam.Dapat membungkus
IFERROR( ,0)
untuk+11 bytes
menangani pengecualian, dan mengembalikan '0' untuk kasus tanpa pola.sumber
05AB1E ,
1511 byteDisimpan 4 byte berkat Kevin Cruijssen dan Magic Octopus Urn .
Menggunakan bentuk.
Output
[0, 0]
untuk tidak ada ,[1, 0]
untuk searah jarum jam dan[0, 1]
untuk berlawanan arah jarum jamCobalah online! atau sebagai Test suite
Penjelasan
sumber
.•1´₃éC•Â‚εXå}¥
mengakibatkan[0]
,[1]
atau[-1]
, sehingga 1 dari saya. Btw, saya pikir (tidak yakin) Anda dapat menyimpan tiga byte dengan menghilangkan tiga terakhir, keluaran[0, 0]
,[1, 0]
dan[0, 1]
sebagai nilai-nilai yang berbeda. Saya melihat bahwa jawaban Mathematica melakukan hal yang sama. Akan meminta OP untuk verifikasi.‚.•ÌöJη•så
adalah 11 byte jika[1,0], [0,1] and [0,0]
dianggap unik (kecuali jika saya melewatkan sesuatu yang jelas di sini, menambahkanƶO
pada akhir 11-byter itu masih 13 untuk jawaban yang sama 0, 1, 2 yang Anda miliki sekarang). Uji kasus . Uji kasus 2 . Order reversal menghilangkan kebutuhan akan loop.JavaScript (ES6), 32 byte
Mengembalikan -1 jika tidak ada kombinasi, 15 jika berlawanan arah jarum jam, 7 jika searah jarum jam.
Tampilkan cuplikan kode
sumber
Bahasa Wolfram (Mathematica) ,
4236 byteCobalah online!
Menghitung berapa kali input muncul di keduanya
"ROYGBRO"
dan"ORBGYOR"
. Kembali{1,0}
untuk searah jarum jam,{0,1}
berlawanan dengan jarum jam, dan{0,0}
tanpa kombinasi khususDengan biaya hanya satu byte lagi, kita bisa mendapatkan output
0
tanpa biaya,1
untuk searah jarum jam, dan2
dengan berlawanan arah jarum jam"ROYGBRO.ORBGYORBGYOR"~StringCount~#&
.sumber
kode mesin x86,
3936 byteMajelis:
Cobalah online!
Output
23
tidak ada,7
untuk searah jarum jam, dan15
untuk berlawanan arah jarum jam. Berdasarkan jawaban @RickHitchcock.Disimpan 3 byte dengan menggunakan instruksi perbandingan string SSE daripada menggunakan libc.
sumber
strstr
akan selalu menjadi alamat 32-bit (4 byte). Kode mesin di pos saya tidak terhubung.Perl 5
-p
, 30 byteCobalah online!
sumber
APL (Dyalog),
2218 byte-4 byte terima kasih kepada @ngn
Mengambil string inisial warna. Output 0 tanpa pola khusus, -1 untuk berlawanan arah jarum jam, 1 untuk searah jarum jam.
Cobalah online!
sumber
Python 2 ,
4543 byteCobalah online!
Dengan ide dari dan kredit serius ke @DeadPossum
-2 dengan terima kasih kepada @ JoKing. Sekarang output -1 = berlawanan arah jarum jam, 0 = tidak ada, 1 = searah jarum jam.
Upaya awal saya di bawah ini untuk tujuan sejarah.
Python 2 ,
5251 byteCobalah online!
0 = tidak ada, 1 = berlawanan arah jarum jam, 2 = searah jarum jam
sumber
Python 2 ,
3536 byte+1 - untuk beberapa alasan saya pikir semua tombol akan berbeda> _ <
Dikembangkan secara independen dari apa yang baru saja saya lihat (dan sekarang terpilih) oleh Dead Possum
Cobalah online!
sumber
Stax ,
1413 byteJalankan dan debug itu
Outputnya adalah
sumber
Pip , 19 byte
Output
10
untuk searah jarum jam,01
untuk berlawanan arah jarum jam,00
untuk keduanya. Cobalah online!Penjelasan
sumber
J , 21 byte
Cobalah online!
Bagaimana itu bekerja
Mencapai jumlah maksimum fungsi yang digunakan kembali.
sumber
Jelly , 12 byte
Cobalah online!
-4 Terima kasih kepada Jonathan Allan .
Searah jarum jam:
[1, 0]
Berlawanan arah jarum jam:
[0, 1]
Lainnya:
[0, 0]
sumber
R , 38 byte
Cobalah online!
Pengembalian:
integer(0)
2
1
sumber
Arang , 18 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
sumber
Gangguan Umum , 68 byte
Cobalah online!
sumber
Bersih , 63 byte
Cobalah online!
[True, True]
tanpa suara khusus,[True, False]
untuk berlawanan arah jarum jam,[False, True]
untuk searah jarum jam.sumber
Japt,
1714 byteMengambil warna sebagai input, dalam huruf kecil. Kembali
0
untuk searah jarum jam,1
untuk berlawanan arah jarum jam atau-1
jika tidak ada kombo.Cobalah
Ekspansi
sumber
Ruby ,
5336 byteCobalah online!
Input: bilangan bulat 3 digit, di mana digit mewakili warna:
Output: 0 untuk searah jarum jam, 1 untuk berlawanan arah jarum jam,
nil
jika tidak.sumber
C (gcc) , 55 byte
Mengembalikan 0 untuk tidak, -1 untuk CCW dan 1 untuk CW.
Cobalah online!
sumber