J'ai travaillé sur cette application iOS récemment et j'ai rencontré un problème (assez facile à résoudre): comment puis-je déterminer si ma chaîne est composée uniquement d'emojis?
Eh bien, c'est votre travail aujourd'hui!
Contribution
Un string. Si la présence de caractères unicode vous pose problème, vous pouvez utiliser un format raisonnable différent. Veuillez indiquer ce que vous faites si vous faites quelque chose de différent d'une chaîne régulière pour prendre des entrées.
Production
Affiche ou renvoie une valeur véridique si la chaîne d'entrée ne contient que des emojis, et une valeur falsey si elle contient des caractères autres que des emojis.
Attendez une seconde ... qu'est-ce qu'un emoji? 😅
Un emoji est un personnage qui se situe dans ces plages:
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
(Je pense)
C'est 🔹 code-golf 🔹, donc le code le plus court en octets gagne❕
Cas de test
"Is it an emoji? 🤔" -> False
"🔹code-golf🔹" -> False
"😮 😥 😨 😩 😪" -> False
"I have no fancy emojis :(" -> False
"😎" -> True
"😊😘" -> True
Pour vous pauvres âmes qui ne peuvent pas voir les emojis, voici une image des cas de test .
Réponses:
Rubis ,
6156 + 1 =625747 octetsUtilise l'
-n
indicateur et prend l'entrée de STDIN. Imprime0
pour véridique etnil
pour fausse.-5 octets parce que pour une raison quelconque, je pensais initialement que la solution regex ne fonctionnerait pas ???
-10 octets de NieDzejkob pour avoir remarqué un chevauchement de points de code que j'ai manqué: o
Essayez-le en ligne!
la source
Emojicode , 179 octets
Appelable qui prend une liste d'entiers représentant les points de code et renvoie 1 ou 0.
Essayez-le en ligne!
Emojicode , 187 octets
Un appelable qui prend une chaîne et renvoie un booléen.
Essayez-le en ligne!
Non golfé et expliqué
Essayez-le en ligne!
la source
JavaScript,
8361 octets-22 octets grâce à @Shaggy
s=>(s.match(/\ud83d[\ude00-\ude4f]/g)||"").length==s.length/2
Démo
la source
s=>(s.match(/\ud83d[\ude00-\ude4f]/g)||"").length==s.length/2
🛂🚀
,♔☺☠
,🏐🎅🌝
etc., qui devraient tous être truthy. Il semble ne vérifier qu'une seule plage sur les six mentionnées par OP.Python, 87 octets
Essayez-le en ligne!
Renvoie
1
une valeur véridique etNone
une valeur fausse.la source
🌀-🙏
Proton , 54 octets
Essayez-le en ligne!
-9 octets (3 caractères) grâce à NieDzejkob
"Emprunter" l'expression régulière d'Uriel: P Ceci est plus court grâce aux fonctionnalités obscures et aux littéraux d'expression rationnelle de Proton
la source
🌀-🙏
QuadR , 47 octets
Essayez-le en ligne!
Est…
''≡⍵
une chaîne vide identique au résultat lorsque ...[🌀-🙏🚀-☀-➿︀-︀️]
tous les emojis sont…remplacé par rien
?
la source