Saya telah bekerja pada aplikasi iOS ini baru-baru ini dan saya mengalami masalah (agak mudah dipecahkan): Bagaimana cara saya menentukan apakah string saya hanya terdiri dari emoji?
Nah, itu tugasmu hari ini!
Memasukkan
Sebuah benang. Jika keberadaan karakter unicode bermasalah bagi Anda, maka Anda dapat menggunakan format wajar yang berbeda. Silakan sebutkan apa yang Anda lakukan jika Anda melakukan sesuatu yang berbeda dari string biasa untuk mengambil input.
Keluaran
Cetak atau kembalikan nilai kebenaran jika string input hanya berisi emoji, dan nilai falsey jika berisi karakter apa pun selain emoji.
Tunggu sebentar ... apa itu emoji? ๐
Emoji adalah karakter yang termasuk dalam rentang ini:
0x1F600...0x1F64F // Emoticons
0x1F300...0x1F5FF // Misc Symbols and Pictographs
0x1F680...0x1F6FF // Transport and Map
0x2600...0x26FF // Misc symbols
0x2700...0x27BF // Dingbats
0xFE00...0xFE0F // Variation Selectors
(Kupikir)
Ini adalah ๐น kode-golf ๐น, jadi kode terpendek dalam byte menangโ
Uji kasus
"Is it an emoji? ๐ค" -> False
"๐นcode-golf๐น" -> False
"๐ฎ ๐ฅ ๐จ ๐ฉ ๐ช" -> False
"I have no fancy emojis :(" -> False
"๐" -> True
"๐๐" -> True
Bagi Anda jiwa-jiwa miskin yang tidak bisa melihat emoji, ini adalah gambar dari kasus uji .
code-golf
string
decision-problem
unicode
Daniel
sumber
sumber
Jawaban:
Ruby ,
6156 + 1 =625747 byteMenggunakan
-n
bendera dan mengambil input dari STDIN. Cetakan0
untuk kebenaran dannil
kepalsuan.-5 byte karena untuk beberapa alasan saya awalnya berpikir solusi regex tidak akan berfungsi ???
-10 byte dari NieDzejkob karena memperhatikan titik kode yang tumpang tindih yang saya lewatkan: o
Cobalah online!
sumber
Emojicode , 179 byte
Callable yang mengambil daftar bilangan bulat yang mewakili codepoint dan mengembalikan 1 atau 0.
Cobalah online!
Emojicode , 187 byte
Callable yang mengambil string dan mengembalikan boolean.
Cobalah online!
Tidak diikat dan dijelaskan
Cobalah online!
sumber
JavaScript,
8361 byte-22 byte terima kasih kepada @Shaggy
s=>(s.match(/\ud83d[\ude00-\ude4f]/g)||"").length==s.length/2
Demo
sumber
s=>(s.match(/\ud83d[\ude00-\ude4f]/g)||"").length==s.length/2
๐๐
,โโบโ
,๐๐ ๐
dll, yang semuanya harus truthy. Tampaknya untuk memeriksa hanya untuk satu rentang dari enam yang disebutkan OP.Python, 87 byte
Cobalah online!
Kembali
1
sebagai nilai kebenaran danNone
nilai palsu.sumber
๐-๐
Proton , 54 byte
Cobalah online!
-9 byte (3 karakter) berkat NieDzejkob
"Meminjam" regex Uriel: P Ini lebih pendek berkat fitur kabur Proton dan regex literal
sumber
๐-๐
QuadR , 47 byte
Cobalah online!
Adalahโฆ
โ
''โกโต
โstring kosong yang identik dengan hasil saat ...โ
[๐-๐๐-๐ฟโ-โฟ๏ธ-๏ธ๏ธ]
โsemua emoji adalah ...โ
โdiganti dengan tidak ada
?
sumber