Setelah memasukkan string [panjang 1-20], hanya berisi karakter y untuk ya dan n untuk tidak, program Anda harus menampilkan hasilnya (y atau n). Contoh input: yynynynny
akan menampilkan y.
Hasilnya ditentukan dengan menggabungkan y dan n dengan cara berikut:
y es dan n o sama dengan n o
y es dan y es sama dengan y es
n o dan n o sama y es
Jika string berisi lebih dari 2 karakter (kemungkinan ...), perhitungannya akan terlihat sama. Contoh:
y es dan y es dan n o sama dengan n o (karena tidak ada yang menyatu dengan ya pertama untuk tidak. maka tidak ada dan ya tersisa dan hal yang sama terjadi lagi)
n o dan n o dan n o sama dengan n o (dua tidak yang pertama bergabung dengan ya, maka ada ya dan tidak ada kiri, yang muncul menjadi tidak)
Contoh input dengan output:
yynynynynyyn
= n
Kiat: ingatlah bahwa urutan karakter program Anda tidak berfungsi. (misalnya Anda dapat membaca input dari belakang, atau dari belakang, mencampur surat-surat, mengurutkannya, apa pun. Yang penting adalah ouptput yang benar) bersenang-senang!
Kriteria kemenangan: ini adalah kode-golf , jadi kode terpendek dalam byte menang.
sumber
1
untuky
, dan0
untukn
.["y", "n", "n"]
Jawaban:
Arang , 6 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
sumber
Oktaf ,
2927 byteTerima kasih kepada @RickHithcock karena telah menunjukkan kesalahan, sekarang diperbaiki. Juga, 2 byte off berkat @StewieGriffin!
Cobalah online!
Penjelasan
Titik kode ASCII
'y'
aneh, dan'n'
bahkan genap. Kode1
setiap karakter dalam string input untuk membuat'y'
genap dan'n'
ganjil;1
jika genap,2
jika ganjil;'yn'
.sumber
JavaScript (ES6), 28 byte
Mengambil input sebagai string.
Cobalah online!
JavaScript (ES6), 30 byte
Mengambil input sebagai array karakter.
Cobalah online!
sumber
s=>'yn'[s.match(/n/g).length&1]
Pn
.Haskell ,
3328 byteMengindeks jumlah n ke dalam daftar tak terbatas "ynynynyn…". Pendekatan sebelumnya (33 byte) adalah melipat pasangan elemen yang berbeda ke n, jika tidak y:
Cobalah online!
sumber
Jelly , 7 byte
Cobalah online!
ċ jumlah ount "n , ị ndex ke dalam string ⁾ny . (dengan modulo 2)
Cobalah online!
{ ċ jumlah ount, ambil Ḣ ead , lalu ị ndex ke} string ⁾ny .
Cobalah online!
Mirip dengan jawaban Oktaf di atas. Hitung O rd nilai, mengambil C omplement (untuk setiap nilai ord x menghitung 1-x ), S um, maka Aku ndex ke dalam string ⁾ny .
sumber
APL (Dyalog Unicode) , 15 byte
Cobalah online!
Catatan: TIO default ke
⎕IO = 1
. Jika dijalankan dengan⎕IO←0
,APL (Dyalog Unicode) , 13 byte
Cobalah online!
Ini adalah fungsi XNOR (kadang-kadang disebut EQV, terutama di BASIC lama.
Dekomposisi / Analisis:
sumber
Pyth, 9 byte
Coba di sini
Penjelasan
sumber
dc , 39
String input dibaca dari STDIN dan harus dalam bentuk
[yynynynynyyn]
.dc tidak dikenal untuk penanganan string-nya, tapi kami hanya punya cukup di sini untuk membuatnya bekerja. Pendekatan di sini adalah untuk menghitung
n
s, dan outputy
jika genap ataun
jika ganjil. Ini dilakukan dengan mengeksekusi string input sebagai makro.dc
akan menampilkan'y' (0171) unimplemented
kesalahan untuk semuay
dan mencoba untuk memunculkan string dan mencetaknya untuk semuan
. Jadi pertama-tama kita memastikan bahwa kita memiliki banyak (total panjang string input) dari string kosong[]
pada stack untuk pop. Kemudian kita mengeksekusi string input dan melihat berapa banyak[]
yang tersisa di stack. Panjang string asli dikurangi dari ini untuk memberikan (-ve) jumlah totaln
s. Sisanya adalah aritmatika untuk melakukan mod 2 dan memiliki output yang keluar seperti ASCIIy
ataun
.Cobalah online!
sumber
Japt , 8 byte
Cobalah online!
Penjelasan:
Japt menggunakan pembungkus indeks, jadi jika
Uèn
kembali2
, itu akan kembaliy
ketika mendapatkan char dari"yn"
.sumber
Perl 6 , 21 byte
Cobalah
Diperluas:
sumber
Python 2 , 29 byte
Cobalah online!
sumber
Java 8, 35 byte
Penentu untuk bahasa biasa! Saya bisa melakukan itu.
Cobalah secara Online
sumber
J ,
109 byteCobalah online!
sumber
{&'ny'@=/
menghemat satu byte.R ,
4644 byteCobalah online!
Turun 2 byte berkat Giuseppe dan ngm. Port of the Octave menjawab oleh Luis Mendo.
sumber
sum(utf8ToInt(scan(,""))%%2)%%2
menghemat satu byte.n
bahkan harus menambahkan +1 terlebih dahulu ..Japt, 9 byte
Oliver mengalahkan saya ke solusi terpendek jadi di sini ada beberapa yang hanya satu byte lebih lama.
Cobalah
Cobalah
Penjelasan
sumber
/// , 24 byte
Cobalah online!
Saya percaya ini adalah program /// yang sesingkat mungkin, karena membuat subtitusi satu karakter tidak berguna (jika Anda memasukkan sesuatu di tempatnya) atau mencegahnya menjadi keluaran (jika Anda tidak memasukkan apa pun). Namun, karena program harus menangani dua kasus karakter, ini harus minimal.
Pertama menghapus semua
y
hak suatun
. Kemudian ganti doublen
s dengany
s, manfaatkan substitusi LTR. Pada tahap ini ada banyaky
diikuti oleh paling banyak satun
; kami mendupuplikasiy
s dan jika adan
menggunakannya untuk mengepel yang terakhiry
.sumber
MATL , 8 byte
Cobalah online!
Disimpan 2 byte berkat Luis Mendo! Saya sebelumnya menggunakan perintah modulus eksplisit untuk mendapatkan indeks ke dalam kisaran
1,2
.Penjelasan
Ini menggunakan fakta bahwa MATL memiliki pengindeksan modular, yang berarti bahwa elemen ke-1, ke-3, ke-5 dari string
ny
adalah sama (n
). Begitu juga elemen 2, 4, 6 ... dari string (y
).sumber
'yn'3)
memberiy
...? Nah, itu desain yang pintar Luis =) Terima kasih atas tipsnya! :)Python 2 , 26 byte
Cobalah online!
sumber
Retina , 11 byte
Cobalah online!
sumber
Jelly ,
87 byteCobalah online!
sumber
Ẉ
bisa digunakan sebagai gantiL€
.05AB1E , 8 byte
Cobalah online!
sumber
Java (OpenJDK 8) , 143 byte
Cobalah online!
Dan jika kita mengambil input sebagai daftar:
Java (OpenJDK 8) , 118 byte
Cobalah online!
Penjelasan:
(masukan sebagai string)
sumber
char[]u
(-1 byte); danif(u.length==1)
bisaif(u.length<2)
(-1 byte). Mungkin ada lebih banyak golf, tetapi saya tidak punya waktu sekarang. :)Ruby , 24 byte
Cobalah online!
Seorang lambda mengambil tali dan mengembalikan tali.
sumber
Cubix ,
2420 byteSudah lama sejak saya bermain dengan Cubix, jadi ...
Cobalah online!
Implementasi yang cukup naif yang melangkah melalui string dan membandingkan karakter dengan hasil saat ini.
Demo Interaktif
Ini membuka ke dalam kubus sebagai berikut
W
geser ip ke kirii
dapatkan karakter awali?
dapatkan karakter dan tes untuk EOI (-1), juga mulai dari loop;o@
menghapus TOS, keluarkan TOS sebagai karakter dan keluar.-W!
kurangi, geser ip ke kiri, uji kebenaran'n
dorong karakter n ke TOS|!'y
mencerminkan, menguji dan mendorong karakter y ke TOSv'.;w
redirect di sekitar kubus mendorong dan menghapus a. karakter dan bergeser kembali ke loopsumber
Scala, 50 Bytes
sumber
Befunge-98 , 13 byte
Cobalah online!
Pada dasarnya membalikkan 0 untuk setiap
n
input, dan sekali lagi untuk ukuran yang baik, kemudian outputy
untuk1
dann
untuk0
sumber
Bersih ,
2623 byteCobalah online!
sumber
foldr1\a b|a==b='y'='n'
. (Ngomong-ngomong, sayangnya biasanya impor adalah bagian dari bytecode.)JavaScript,
3937 BytesSederhanakan fungsi setelah memisahkan string input.
sumber
s
, yang bukan metode input yang valid di sini. Sebagai gantinya, Anda dapat membuat jawaban Anda sebagai fungsi lambda yang mengambil input sebagai argumen dengan menambahkan sebelumnyas=>
jawaban Anda ke 42 byte.s.split('')
dengan[...s]
untuk 37 byte:s=>[...s].reduce((x,y)=>x==y?'y':'n')
C (gcc) ,
5250 byteTerima kasih kepada @Neil untuk sarannya.
Saya meminjam solusi penghitungan
n
, tetapi alih-alih menghitung, saya hanya beralih antara keadaan awal dan kebalikannya padan
.Cobalah online!
sumber
*a&1?0:23
menyimpan satu byte danreturn i
menyimpan yang lain.i;f(char*a){for(i=*a;*++a;i^=*a&1?:23);a=i;}
Kotlin , 32 Bytes
Cobalah online!
sumber