क्या यह इमोजी है?


17

मैं हाल ही में इस आईओएस ऐप पर काम कर रहा हूं और मुझे एक (बल्कि आसानी से हल होने वाली) समस्या का सामना करना पड़ा: मैं यह कैसे निर्धारित करूं कि मेरा स्ट्रिंग केवल एमोजिस से युक्त है?

खैर, आज तुम्हारा काम है!

इनपुट

एक स्ट्रिंग। यदि यूनिकोड वर्णों की उपस्थिति आपके लिए समस्याग्रस्त है तो आप एक अलग उचित प्रारूप का उपयोग कर सकते हैं। कृपया बताएं कि यदि आप इनपुट लेने के लिए एक नियमित स्ट्रिंग से कुछ अलग करते हैं तो आप क्या करते हैं।

उत्पादन

यदि इनपुट स्ट्रिंग में केवल एमोजिस हैं, और एक गलत मान है तो इसे एक सत्य मान दें या वापस लौटाएं, यदि इसमें एमोजिस के अलावा कोई भी वर्ण है।

एक सेकंड रुको ... एक इमोजी क्या है? 😅

एक इमोजी एक ऐसा पात्र है जो इन श्रेणियों में आता है:

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

(मुझे लगता है)

यह code , इसलिए बाइट्स win🔹 में सबसे छोटा कोड है

परीक्षण के मामलों

"Is it an emoji? 🤔" -> False
"🔹code-golf🔹" -> False
"😮 😥 😨 😩 😪" -> False
"I have no fancy emojis :(" -> False

"😎" -> True
"😊😘" -> True

आपके लिए गरीब आत्माएं जो एमोजिस नहीं देख सकती हैं, यहां परीक्षण मामलों की एक छवि है


2
शायद उन लोगों के लिए एक संस्करण (शायद एक छवि) शामिल है जो इमोजी नहीं देख सकते हैं? ;-)
ETHproductions

@ETHproductions, क्या आप सुझाव देते हैं कि मैं परीक्षण मामलों की एक तस्वीर या कुछ और के लिए लिंक करता हूं?
डैनियल

ठीक है, पूरे प्रश्न में इमोजी फैले हुए हैं, लेकिन मुझे लगता है कि परीक्षण के मामलों में एकमात्र महत्वपूर्ण व्यक्ति हैं, इसलिए केवल परीक्षण मामलों की एक छवि काम करेगी।
ETHproductions

@ETHproductions, मैंने परीक्षण मामलों की एक तस्वीर के लिए एक लिंक जोड़ा
डैनियल

क्या इनपुट यूनिकोड कोड अंकों का एक संख्यात्मक सरणी हो सकता है? इसके अलावा, किस रेंज / वर्ण में इनपुट शामिल हो सकते हैं?
लुइस मेंडू

जवाबों:


2

रूबी , 61 56 + 1 = 62 57 47 बाइट्स

-nध्वज का उपयोग करता है और STDIN से इनपुट लेता है। सत्य के 0लिए प्रिंट औरnil

-5 बाइट्स क्योंकि किसी कारण से मैंने शुरू में सोचा था कि रेगेक्स समाधान काम नहीं करेगा ???

NieDzejkob से -10 बाइट्स एक कोड पॉइंट ओवरलैप करने के लिए जो मुझे याद था: ओ

p$_=~/^[🌀-🙏🚀-🛿☀-➿︀-︀️]*$/

इसे ऑनलाइन आज़माएं!


1
47 बाइट्स यदि आप रेगेक्स में दो रेंज मर्ज करते हैं।
निएडजेककोब

1
यह 47 है ना?
आसन तुहिद

हाँ, मैं @NieDzejkob से सुझाव प्राप्त करने के बाद स्कोर को अपडेट करना भूल गया
वैल्यू इंक

10

इमोजीकोड , 179 बाइट्स

🍇a🍨🐚🚂➡🚂🔂n🍡a🍇🍊🎉🎉◀n 9728🎊▶n 10175◀n 65024🎉🎉🎊▶n 65039◀n 127744🎊▶n 128591◀n 128640▶n 128767🍇🍎0🍉🍉🍎1🍉

एक कॉल करने योग्य जो कोडपॉइंट्स का प्रतिनिधित्व करने वाले पूर्णांकों की सूची लेता है और 1 या 0 देता है।

इसे ऑनलाइन आज़माएं!

इमोजीकोड , 187 बाइट्स

🍇a🔡➡👌🔂i🍡a🍇🍦n🚂i🍊🎉🎉◀n 9728🎊▶n 10175◀n 65024🎉🎉🎊▶n 65039◀n 127744🎊▶n 128591◀n 128640▶n 128767🍇🍎👎🍉🍉🍎👍🍉

एक कॉल करने योग्य जो एक स्ट्रिंग लेता है और एक बूलियन देता है।

इसे ऑनलाइन आज़माएं!

अनगढ़ और समझाया गया

👴 A callable that takes a 🔡 called input and returns a 👌
🍇 input 🔡 ➡ 👌
 👴 For each character in input
 🔂 character 🍡 input 🍇
  👴 Create a frozen called n containing the unicode codepoint of character
  🍦 n 🚂 character
  👴 If the value is in one of specific ranges, return 👎 (if the current character is not an emoji)
  🍊🎉🎉◀n 9728🎊▶n 10175◀n 65024🎉🎉🎊▶n 65039◀n 127744🎊▶n 128591◀n 128640▶n 128767🍇
   🍎 👎
  🍉
 🍉
 👴 Since we're here, all characters are an emoji, so return 👍
 🍎👍
🍉

इसे ऑनलाइन आज़माएं!


1

जावास्क्रिप्ट, 83 61 बाइट्स

-22 बाइट्स @ शुग्गी को धन्यवाद

s=>(s.match(/\ud83d[\ude00-\ude4f]/g)||"").length==s.length/2

डेमो

f=s=>(s.match(/\ud83d[\ude00-\ude4f]/g)||"").length==s.length/2

document.writeln(f("🔹code-golf🔹")) //false
document.writeln(f("😮 😥 😨 😩 😪")) //false
document.writeln(f("I have no fancy emojis :(")) //false
document.writeln(f("😎")) //true
document.writeln(f("😊😘")) //true


1
61 बाइट्स:s=>(s.match(/\ud83d[\ude00-\ude4f]/g)||"").length==s.length/2
झबरा

उह, यह कैसे काम करता है? रेगेक्स किसी भी इमोजी के
कोडपॉइंट्स को

@NieDzejkob मेरा मानना ​​है कि जेएस यूनिकोड के लिए यूटीएफ -16 का उपयोग करता है, इसलिए मुझे लगता है कि ये यूटीएफ -16 बाइट का प्रतिनिधित्व करते हैं। इस सवाल का जवाब अधूरा यह है इसके लिए विफल रहता है, 🛂🚀, ♔☺☠, 🏐🎅🌝, आदि जो सभी के truthy होना चाहिए। ऐसा लगता है कि ओपी का उल्लेख है कि छह में से केवल एक सीमा के लिए जाँच करें।
सूंदर -

1

पायथन, 87 बाइट्स

lambda x:re.match('^[😀-🙏🌀-🗿🚀-🛿☀-➿︀-︀️]*$',x)and 1
import re

इसे ऑनलाइन आज़माएं!

1सत्य मूल्य के Noneरूप में और नकली मूल्य के रूप में लौटाता है ।


मैं अपने regex "उधार लिया", आशा है कि आप बुरा नहीं
मानते

चूंकि मैंने इसके बारे में वैल्यू इंक को बताया था, इसलिए मैं आपको भी बताऊंगा - रेगेक्स में पहले दो समूहों को निकटवर्ती 🌀-🙏
कोडपॉइंट्स के

1

प्रोटॉन , 54 बाइट्स

map(/[🌀-🙏🚀-🛿☀-➿︀-︀️]/.match)+all

इसे ऑनलाइन आज़माएं!

-9 बाइट्स (3 वर्ण) NieDzejkob के लिए धन्यवाद

"उधार लेना" उरीएल का रेगेक्स: पी यह प्रोटॉन की अस्पष्ट विशेषताओं और रेगेक्स लीटर के लिए धन्यवाद है।


जैसा कि मैंने वैल्यू इंक को बताया, रेगेक्स में पहले दो समूहों को निकटवर्ती 🌀-🙏
कोडपॉइंट्स के

@NieDzejkob बिल्कुल कैसे? यह मुझे त्रुटियां देता है: tio.run/##KyjKL8nP@59m@z83sUBDP/rD/BkNuh/mT9//Yf4sEGP2/…
HyperNutrino


0

QuadR , 47 बाइट्स

''≡⍵
[🌀-🙏🚀-🛿☀-➿︀-︀️]

इसे ऑनलाइन आज़माएं!

है…

''≡⍵ परिणाम के समान रिक्त स्ट्रिंग ...

[🌀-🙏🚀-🛿☀-➿︀-︀️] सभी इमोजीस…

 कुछ भी नहीं के साथ बदल दिया

?

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.