Mereka mengatakan itu hate
adalah kata yang kuat. Saya ingin mencari tahu mengapa, jadi saya melihat kata itu.
Saya perhatikan bahwa setiap konsonan memiliki vokal setelahnya. Itu membuatnya terlihat cukup kuat bagi saya, jadi saya memutuskan bahwa itulah yang membuat kata kuat.
Saya ingin menemukan kata-kata yang lebih kuat, jadi saya perlu program untuk itu!
Menemukan kata-kata yang kuat
Kata-kata yang kuat adalah kata-kata di mana setiap konsonan (huruf dalam himpunan BCDFGHJKLMNPQRSTVWXZ
) diikuti oleh vokal (huruf dalam himpunan AEIOUY
). Itu dia. Tidak ada hal lain yang penting.
Jika kata dimulai dengan vokal, Anda tidak perlu khawatir tentang huruf apa pun sebelum konsonan pertama. Jika kata itu tidak memiliki konsonan sama sekali, itu secara otomatis adalah kata yang kuat!
Beberapa contoh kata-kata yang kuat adalah agate
, hate
dan you
. agate
masih merupakan kata yang kuat karena meskipun dimulai dengan vokal, setiap konsonan masih diikuti oleh vokal. you
adalah kata yang kuat karena tidak memiliki konsonan.
Tidak ada batasan panjang untuk kata-kata yang kuat.
Tantangan
Tulis sebuah program atau fungsi yang mengambil string yang tidak kosong sebagai input, dan mengeluarkan nilai kebenaran jika itu adalah kata yang kuat atau nilai yang salah jika tidak.
Klarifikasi
- Anda dapat memutuskan untuk mengambil input dalam huruf kecil atau besar. Tentukan yang mana dalam jawaban Anda.
- Kata-kata tidak akan mengandung tanda baca apa pun. Mereka hanya akan berisi huruf biasa di set
ABCDEFGHIJKLMNOPQRSTUVWXYZ
. - Alih-alih nilai yang benar dan salah, Anda dapat memilih dua nilai yang berbeda dan konsisten untuk mengembalikan nilai benar dan salah. Jika Anda melakukan ini, tentukan nilai yang Anda pilih dalam jawaban Anda.
- Atau Anda dapat menampilkan nilai palsu untuk kata yang kuat dan yang benar untuk kata yang tidak kuat.
Uji kasus
Input -> Output
hate -> true
love -> true
popularize -> true
academy -> true
you -> true
mouse -> true
acorn -> false
nut -> false
ah -> false
strong -> false
false -> false
parakeet -> false
Mencetak gol
Karena ini adalah kode-golf , jawabannya dengan byte paling sedikit menang!
""
kemungkinan input?Jawaban:
JavaScript (ES6),
362827 byteDisimpan 1 byte dengan membalikkan hasilnya, seperti yang disarankan oleh LarsW
Mengambil input dalam huruf kecil. Kembali
false
untuk kata yang kuat dantrue
untuk kata yang tidak kuat.Bagaimana?
Kami menambahkan
0
(non-vokal) di akhir string input dan mencari dua karakter non-vokal berturut-turut. Ini memungkinkan kami untuk membahas kedua kasus yang membuat kata tidak kuat:Uji kasus
Tampilkan cuplikan kode
sumber
+0
? Tampaknya berfungsi dengan baik tanpanya+0
itu, itu akan mengembalikan positif palsu pada kata-kata yang diakhiri dengan konsonan.!
(dua nilai berbeda)Python 2 , 48 byte
Fungsi tanpa nama mengambil string (huruf kecil)
s
,, dan kembaliFalse
jika kuat atauTrue
jika tidak.Cobalah online! (membalikkan hasil agar sesuai dengan OP)
Bagaimana?
Kata-kata yang tidak kuat memiliki konsonan diikuti oleh konsonan atau diakhiri dengan konsonan.
Kode menambahkan konsonan ke akhir (
s+'b'
) untuk membuat tes yang diperlukan hanya untuk dua konsonan berturut-turut.Itu mengetahui apakah setiap huruf dalam kata yang diubah adalah vokal dengan pemahaman daftar
[v in'aeiouy'for v in s+'b']
.Sekarang perlu memeriksa dua
False
hasil berturut-turut (menandakan kata yang tidak kuat), ia melakukannya dengan mendapatkan representasi string (menggunakan`...`
) daftar ini dan mencari keberadaan'se, F'
. Ini adalah string terpendek yang ditemukan'False, False'
tetapi tidak ada'True, True'
:;'False, True'
; atau'True, False'
.Sebagai contoh perhatikan
'nut'
, pemahaman daftar mengevaluasi setiap huruf,v
dari'nutb'
keberadaan dalam'aeiouy'
menghasilkan daftar[False, True, False, False]
, representasi string dari daftar ini adalah'[False, True, False, False]'
yang berisi di'e, F'
sini:'[False, True, Fals>>e, F<<alse]'
maka fungsi mengembalikanTrue
makna bahwa kacang bukan kata yang kuat.sumber
Jelly ,
109 byteTautan monadik yang mengambil daftar karakter dan mengembalikan:
0
jika kuat1
jika tidakCobalah online! atau lihat test-suite .
Bagaimana?
Catatan: Alasan untuk menggunakan
Ạ
hanya untuk menyimpan byte lebih dari menggunakan1
(karena kami kemudian ingin menggunakan11
langsung).sumber
Ạ
hal yang mengganggu dalam kode Anda ... kalau tidak Anda bisa melakukaneۯY;1w11
atau sesuatuẇ
memiliki argumen kiri yang merupakan angka itu secara implisit dikonversi ke daftar angka desimal, sehingga sebelas menjadi[1,1]
.05AB1E , 8 byte
Kode
Menggunakan penyandian 05AB1E . Cobalah online!
Penjelasan
Contoh
sumber
R , 43 byte
Cobalah online!
Port jawaban JavaScript Arnauld; mengembalikan 1 untuk kata-kata yang lemah dan
integer(0)
untuk yang kuat; itu menambahkan(spasi) ke ujung string.
Ini sebenarnya vektor; dengan vektor string, ia mengembalikan indeks (1-based) dari kata-kata yang lemah.
sumber
$
, ingin menjelaskan lebih lanjut?paste0(s,0)
, tetapi itu hanya kebawelan. Saya pikir @Charlie mereferensikan sesuatu seperti ini:grep("[^aeiouy]([^aeiouy]|$)",s)
Dyalog APL, 20 byte
Cobalah online!
sumber
⎕←
.Haskell ,
6154 byteCobalah online!
Saya harus menambahkan huruf
z
pada akhir string untuk menangani huruf konsonan tertinggal.sumber
Java (OpenJDK 8) ,
9381 byteCobalah online!
sumber
s->{int w=0,p=w,l;for(char c:s){l="aeiouy".indexOf(c)>>31;w|=p&l;p=l;}return w+p>=0;}
.s->{int w=0,p=w,l;for(char c:s)w|=p&(p=l="aeiouy".indexOf(c)>>31);return w+p>=0;}
[a-z&&[^aeiouy]]
dalam jawaban saya sebelumnya . ;)Sekam , 12 byte
Cobalah online!
Terima kasih kepada H.PWiz untuk bantuan dengan -4.
Mengembalikan nilai-nilai yang tidak konsisten tetapi benar atau salah.Berkat Leo untuk -1, sekarang mengembalikan nilai kebenaran / kepalsuan yang konsisten.
sumber
Pyth , 18 byte
Verifikasi semua kasus uji.
"Meminjam" regex dari jawaban JS . Ini mengembalikan
False
kata-kata yang kuat,True
jika tidaksumber
13 ISO-8859-1 bytes, 13 chars
. Saya pikir itu akan baikBrachylog ,
181110 byteCobalah online!
Rapi dan sederhana (kecuali mungkin untuk 2 byte awal tambahan untuk menangani kasus konsonan akhir, seperti "parkit").
Apakah kepalsuan untuk kata-kata yang kuat dan benar untuk kata-kata yang tidak kuat.
sumber
Python 2 , 58 byte
-30 byte dengan menyadarinya bisa sesederhana jawaban JS Arnauld .
Cobalah online!
sumber
f=lambda s...
f=\
di header).'[^aeiouy]([^aeiouy]|$)'
(24 byte) dengan"[^aeiouy]("*2+")|$)"
(21 byte) untuk menyimpan 3 byte, karena grup kosong()
,, tidak mengubah perilaku pencarian ( TIO ).Perl 5, 31 byte (30 +1)
+1 byte untuk
-p
bendera baris perintah. Mencetak kata jika itu kata yang kuat, atau string kosong jika bukan.sumber
$_=$/if/[^aeiouy]{2}/
.Jelly , 11 byte
Cobalah online!
Ya saya tahu saya sering dikalahkan oleh Jonathan Allan tetapi saya tetap ingin berbagi pendekatan saya: P
-4 byte dengan mencuri sedikit jawaban Jonathan Allan (alih-alih menambahkan konsonan untuk memeriksa huruf tepi huruf terakhir, tambahkan saja 1)
-1 byte berkat mil
sumber
a2\
atauȦ2Ƥ
bukannyaṡ2Ȧ€
ØC
untuk memastikanYy
dihitung sebagai konsonan karena entah bagaimana saya ingat ke belakang. Terima kasih!Awk, 39 byte
mencetak
n
untuk kata-kata yang tidak kuat, tidak ada (atau, hanya baris baru) untuk kata kuncimengikuti paket dan mencari dua non-vokal berturut-turut pada input huruf kecil
pengujian
sumber
Kotlin , 49 byte
Benar dan salah ditukar
Yg diperindahkan
Uji
TryItOnline
Berdasarkan pada Jawaban @ Arnauld
sumber
Retina ,
2318 byteCobalah online! Output 0 untuk yang kuat, 1 jika tidak. Tambahkan 1 byte untuk mendukung case campuran. Sunting: Disimpan 5 byte berkat @ovs.
sumber
Java 8,
5342 byte-11 byte dengan menggunakan regex yang sama dengan jawaban Kotlin di @jrtapsell .
Coba di sini. (
false
jika kuat;true
jika tidak)Penjelasan:
Jadi pada dasarnya memeriksa apakah kita dapat menemukan dua konsonan yang berdekatan, atau jika String berakhir dengan konsonan.
Jawaban lama ( 53 byte ):
Coba di sini. (
true
jika kuat;false
jika tidak)Gunakan regex untuk melihat apakah input-String cocok dengan regex 'kuat'. Perhatikan bahwa
String#matches
di Jawa secara otomatis ditambahkan^...$
untuk memeriksa apakah String sepenuhnya cocok dengan regex yang diberikan.Penjelasan":
Pencarian alih-alih yang cocok (seperti banyak penggunaan jawaban lain) sebenarnya lebih lama di Jawa:
70 byte :
Coba di sini. (
false
jika kuat;true
jika tidak)sumber
Ruby , 25 byte
Cobalah online!
Semua orang melakukannya, jadi mengapa tidak bisa Ruby?
sumber
SOGL V0.12 ,
1918 byteCoba Di Sini!
Penjelasan:
sumber
05AB1E , 11 byte
Cobalah online!
Menggunakan algoritma Jonathan, menghasilkan
0
true dan1
false.sumber
Swift 3.1 , 85 bytes
Coba di sini!
Ini meminjam regex Arnauld .
sumber
Lua, 41 byte
Membaca dari input standar
Lua (loadstring'ed), 37 byte
Membaca dari parameter fungsi
Input huruf kecil
Melihat jika ada string dengan panjang 2 atau lebih, hanya terdiri dari bukan vokal (konsonan) atau jika string berakhir dengan non-vokal
Mengembalikan nilai true / false
sumber
C ++,
195194 byte-1 byte, terima kasih kepada Zacharý
Huruf besar, mengembalikan true jika input adalah kata yang kuat, false jika tidak (C ++ memiliki int sederhana untuk membuat aturan pemeran implisit, 0 => false, true sebaliknya)
Kode untuk diuji:
sumber
return
dan!
.C, 107 Bytes
Mengembalikan 1 untuk kata kuat dan 0 untuk kata lemah . Diuji dengan kata-kata yang diberikan di pos utama.
sumber
C (gcc) , 59 byte
Cobalah online!
sumber
PHP, 69 byte
Pengembalian 1 adalah kata tidak kuat.
sumber
/", str
->/",str
dan[1]))) return
->[1])))return
tapi saya tidak tahu PHP terlalu baik sehingga saya tidak yakin.[B-Z]
?[B-Z]
termasuk vokal.[^AEIOUY]
bekerja, meskipun.if
pernyataan.CJam , 57 byte
Cobalah online!
Membaca input, dikonversi ke 1s untuk konsonan, 0s untuk vokal. Untuk setiap konsonan, DAN variabel X yang telah ditentukan sebelumnya (ditetapkan ke 1) dengan nilai karakter berikutnya. Output X
sumber