Ich habe kürzlich an dieser iOS-App gearbeitet und dabei ein (ziemlich leicht zu lösendes) Problem festgestellt: Wie kann ich feststellen, ob meine Zeichenfolge nur aus Emojis besteht?
Nun, das ist heute dein Job!
Eingang
Ein Faden. Wenn das Vorhandensein von Unicode-Zeichen für Sie problematisch ist, können Sie ein anderes vernünftiges Format verwenden. Bitte geben Sie an, was Sie tun, wenn Sie etwas anderes als eine reguläre Zeichenfolge für die Eingabe tun.
Ausgabe
Gibt einen Wahrheitswert aus oder zurück, wenn die Eingabezeichenfolge nur Emojis enthält, und einen Falsey-Wert, wenn sie andere Zeichen als Emojis enthält.
Moment mal ... was ist ein Emoji? 😅
Ein Emoji ist ein Zeichen, das in folgende Bereiche fällt:
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
(Meiner Ansicht nach)
Dies ist " Code-Golf ", also gewinnt der kürzeste Code in Bytes
Testfälle
"Is it an emoji? 🤔" -> False
"🔹code-golf🔹" -> False
"😮 😥 😨 😩 😪" -> False
"I have no fancy emojis :(" -> False
"😎" -> True
"😊😘" -> True
Für Sie arme Seelen, die keine Emojis sehen können, hier ein Bild der Testfälle .
quelle
Antworten:
Ruby ,
6156 + 1 =625747 BytesVerwendet das
-n
Flag und nimmt Eingaben von STDIN entgegen. Drucke0
für wahr undnil
für falsch.-5 Bytes, weil ich aus irgendeinem Grund anfangs dachte, die Regex-Lösung würde nicht funktionieren?
-10 Bytes von NieDzejkob für das Erkennen einer Codepunktüberschneidung, die ich verpasst habe: o
Probieren Sie es online!
quelle
Emojicode , 179 Bytes
Ein Callable, der eine Liste von Ganzzahlen verwendet, die die Codepunkte darstellen, und 1 oder 0 zurückgibt.
Probieren Sie es online!
Emojicode , 187 Bytes
Ein Callable, der eine Zeichenfolge akzeptiert und einen Booleschen Wert zurückgibt.
Probieren Sie es online!
Ungolfed und erklärte
Probieren Sie es online!
quelle
JavaScript,
8361 Bytes-22 Bytes dank @Shaggy
s=>(s.match(/\ud83d[\ude00-\ude4f]/g)||"").length==s.length/2
Demo
quelle
s=>(s.match(/\ud83d[\ude00-\ude4f]/g)||"").length==s.length/2
🛂🚀
,♔☺☠
,🏐🎅🌝
usw., von denen alle truthy sein sollte. Es scheint nur für einen Bereich von den sechs zu prüfen, die OP erwähnt.Python, 87 Bytes
Probieren Sie es online!
Gibt
1
als Wahrheitswert undNone
als falscher Wert zurück.quelle
🌀-🙏
Proton , 54 Bytes
Probieren Sie es online!
-9 Bytes (3 Zeichen) dank NieDzejkob
"Ausleihen" von Uriels Regex: P Dies ist kürzer dank Protons obskuren Funktionen und Regex-Literalen
quelle
🌀-🙏
QuadR , 47 Bytes
Probieren Sie es online!
Ist…
''≡⍵
eine leere Zeichenkette, die mit dem Ergebnis identisch ist, wenn…[🌀-🙏🚀-☀-➿︀-︀️]
Alle Emojis sind ...durch nichts ersetzt
?
quelle