Tulis program yang menerima sebagai input emoticon dan ouput jika emoticon senang atau sedih.
Program menerima string sebagai input atau parameter, dan harus menampilkan string "bahagia" jika inputnya ada dalam daftar emoticon bahagia, atau "sedih" jika inputnya ada dalam daftar emoticon sedih.
Anda dapat menganggap input tersebut selalu merupakan emoticon yang valid (bahagia atau sedih), tanpa spasi atau tab di sekitar.
Berikut ini adalah daftar emotikon bahagia yang dipisahkan oleh ruang:
:-) :) :D :o) :] :3 :c) :> =] 8) =) :} :^) :-D 8-D 8D x-D xD X-D XD =-D =D =-3 =3 B^D (-: (: (o: [: <: [= (8 (= {: (^:
Berikut ini adalah daftar emoticon sedih yang dipisahkan oleh ruang:
>:[ :-( :( :-c :c :-< :< :-[ :[ :{ 8( 8-( ]:< )-: ): >-: >: ]-: ]: }: )8 )-8
Ini adalah kode-golf, jadi program terpendek menang.
:'D
,:')
(bahagia) dan:@
(marah)Jawaban:
Python, 86 byte
Saya harus dikirim ke penjara.
Yang terpendek yang bisa saya buat adalah setara dengan jawaban CJam Martin, jadi saya memutuskan untuk menyembunyikan semua emoji sedih (minus karakter tengah jika ada) di balik kode saya dan menggunakan Python.
__file__
cheat quine .Muahahaha.
sumber
c:
8) (8 :] [:
CJam,
3332 byteTerima kasih kepada Dennis untuk menghemat 1 byte.
Sepertinya lebih pendek untuk melakukan hal yang sama tanpa regex ...
Uji di sini.
Penjelasan
Ini berdasarkan pengamatan yang sama dengan jawaban Retina, tapi kali ini mencocokkan wajah-wajah bahagia tidak ada manfaatnya, jadi kami akan mencocokkan wajah-wajah sedih (karena ada satu mulut yang kurang untuk diperhitungkan). Solusinya adalah persis sama, kecuali itu tidak diimplementasikan melalui substitusi regex:
sumber
Retina ,
3836 byteKita dapat mengenali semua emotikon melalui mulutnya, karena tidak ada mulut yang digunakan sebagai topi atau mata pada perangkat lain (hanya pada perangkat yang sama). Yang bahagia memiliki satu mulut lagi untuk diperhitungkan, tetapi mereka memiliki manfaat bahwa mulut tidak muncul sama sekali, bahkan tidak seperti hidung (sebaliknya tidak benar:
c
keduanya mulut yang sedih dan bahagia hidung). Ini berarti kita dapat menghindari menggunakan jangkar tetapi hanya memastikan bahwa ada lebih banyak karakter di sisi lain mulut.Jadi mulut yang valid untuk wajah bahagia ada
] ) D 3 > }
di kanan atau< [ ( {
di kiri. Kami mencocokkan mereka dengan.+[])D3>}]|[<[({].+
dan menggantinya denganhappy
. Jika kami tidak cocok akan ada dua atau tiga karakter di string (emotikon), tetapi jika kami melakukannya akan ada lima (happy
). Jadi pada langkah kedua kita mengganti dua atau tiga karakter dengansad
.sumber
We can recognise all emoticons by their mouths, because none of the mouths is used as a hat.
Nah,]:<
emotikon menggunakan mulut sebagai topi, hanya mengatakan..
"topi" setelah jawaban saya. ;) "... seperti topi atau mata di set lain (hanya di set yang sama)."JavaScript (ES6), 46
Menggunakan regexp untuk menemukan emotikon sedih, yang dimulai dengan
>)]}
atau berakhir dengan<([{c
. Catatan: regexps lain di sini mungkin lebih pendek tapi saya tidak yakin untuk memahaminya.Catatan biasa: tes menjalankan cuplikan pada browser apa pun yang sesuai dengan EcmaScript 6 (terutama
bukanChrome yang terbaru tetapi bukan MSIE. Saya mengujinya di Firefox, Safari 9 dapat digunakan)Berita besar Sepertinya fungsi panah akhirnya tiba di Chrome land! Rel 45, Agustus 2015
sumber
=>
? Saya ketinggalan berita ituJulia,
8769 bytes - disimpan 18 bytes berkat Alex A.sumber
if
/else
dan menempatkan ternary di dalamnyaprint
untuk menghindari penetapant
.Python 3 ,
777574726155 byteCobalah online!
bagaimana cara kerjanya
Jika string wajah dimulai dengan
])>}
atau diakhiri dengan[(c<{
, itu sedih, kalau tidak senang. Pengindeksan Tuple digunakan sebagaiif
.sumber
x
tidak diperbolehkan.Brachylog , 50 byte
Penjelasan
sumber
Python, 159 byte.
sumber
MATLAB,
8583 bytePasti ada cara untuk mengurangi ukuran di sini.
Input adalah string smiley. Karakter pertama dan terakhir akan dibandingkan untuk menentukan apakah itu sedih. Jika tidak, itu bahagia.
Saya dapat menyimpan 2 byte dengan tidak menampilkan salah satu, tetapi menempatkan mereka ke variabel default MATLAB (ans) dan kemudian menampilkan ans setelah pernyataan if. Tapi saya yakin itu bisa diperbaiki.
Peningkatan 2 byte dengan mengubah fungsi s (e), menjadi e = input (''); .
sumber
PowerShell, 92 Bytes
Sedikit bertele-tele, tetapi sebagai bonus, itu tidak menggunakan regex!
Ini mengambil keuntungan dari
<string>.IndexOf()
fungsi .NET yang mengembalikan-1
jika karakter tidak ditemukan dalam string. Jadi, jika karakter pertama bukan karakter "bahagia", yang pertamaIndexOf()
adalah -1 - juga untuk karakter terakhir. Jadi, jika itu adalah wajah sedih, angkaIndexOf()
s akan selalu berjumlah -2, artinya-eq-2
adalah$TRUE
, dan dengan demikiansad
akan dicetak.Varian bonus: PowerShell dengan Regex, 95 byte
sumber
Python 3 , 75 byte
Cobalah online
Impor regex membuatnya agak terlalu lama, serta ketidakmampuan untuk digunakan
None
sebagai indeks array. Tapi saya suka regex :)sumber
Java 8, 52 byte
Cobalah online.
Penjelasan:
Java
String#matches
secara implisit menambahkan^...$
untuk mencocokkan seluruh String, itulah sebabnya mengapa lebih pendek untuk memeriksa wajah sedih daripada memeriksa wajah bahagia seperti kebanyakan jawaban lainnya lakukan dengan.+[\\])D3>}]|[<\\[({].+
(karena regex saya akan gagal dalam jawaban Retina @MartinEnder misalnya, karena kasus uji senang:c)
).Penjelasan regex:
sumber