इमोजी मठ में नंबर परिवर्तित करें [बंद]


13

इमोजी मठ में, एक उपयोगकर्ता ने वीडियो गेम के लिए मॉड्यूल बनाए रखा है टॉकिंग और कोई भी विस्फोट नहीं होता है, नंबर इमोटिकॉन्स के तारों के रूप में लिखे जाते हैं, जहां प्रत्येक इमोटिकॉन 10 अंकों के आधार का प्रतिनिधित्व करता है। नीचे अंकों और इमोटिकॉन्स के बीच रूपांतरण तालिका है।

Digit | Emoticon
  0   |    :) 
  1   |    =(  
  2   |    (: 
  3   |    )=  
  4   |    :(    
  5   |    ):  
  6   |    =)  
  7   |    (= 
  8   |    :|  
  9   |    |: 

एक संख्या को देखते हुए, इसे इमोजी मठ एन्कोडिंग में आउटपुट करें। आप गैर-संख्यात्मक वर्णों की अनुपस्थिति मान सकते हैं।

यह , इसलिए बाइट्स में सबसे कम उत्तर जीतता है।


4
क्या हमें इनपुट नंबर को एक स्ट्रिंग के रूप में लेने की अनुमति है?
ताऊ

3
... या अंकों की एक सरणी।
झबरा

1
@ ताऊ को लगता है कि इरादा एक स्ट्रिंग को स्वीकार करना था - "आप गैर-संख्यात्मक वर्णों की अनुपस्थिति मान सकते हैं।" हमें पूछा जाना चाहिए "क्या हम एक पूर्णांक के रूप में इनपुट ले सकते हैं?"
जोनाथन एलन

1
मैंने अस्पष्ट के रूप में बंद करने के लिए मतदान किया है जब तक कि उपरोक्त बिंदुओं को संबोधित नहीं किया जाता है। लेकिन यह तय होने के बाद मुझे पिंग करने में संकोच न करें ताकि मैं अपने वोट या वोट को फिर से खोल सकूं।
अरनौलद

1
@ ताऊ मैं इस वजह से पूछ रहा था । ओपी को जवाब देने की जरूरत है।
mbomb007

जवाबों:


5

जाप , 29 24 बाइट

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

s":)=((:)=:():=)(=:||:"ò

एक स्ट्रिंग के रूप में इनपुट लेता है

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


जाप में आपका स्वागत है :) एक बाइट को बचाने के लिए इसके m@साथ प्रतिस्थापित किया जा सकता है £। लेकिन बेस रूपांतरण का उपयोग करके इसे 24 बाइट्स में किया जा सकता है ।
झबरा

ओह, ऐसा लगता है कि यह वास्तव में आपका पहला Japt समाधान नहीं है! आप अभी भी इस इनाम के लिए योग्य हैं , हालांकि, यदि आप इसके लिए प्रयास करना चाहते हैं।
झबरा


5

05AB1E , 26 बाइट्स

"|:(=):)=:)"2ôºJ2ô`Šr)sSèJ

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


यह कई अंकों वाले संख्याओं के लिए काम नहीं कर रहा है।
izlin

1
@izlin: वास्तव में। मुझे एहसास नहीं था कि चुनौती का हिस्सा था। हालांकि अब तय हो गया है। धन्यवाद :)
एमिगा


4

टीआई-बेसिक, 79 बाइट्स

Ans→Str1:" :For(I,1,length(Str1:Ans+sub(":)=((:)=:():=)(=:||:",1+2expr(sub(Str1,I,1)),2:End:sub(Ans,2,length(Ans)-1

इनपुट अंकों की एक स्ट्रिंग है Ans
आउटपुट इमोजी मैथ-एनकोडेड नंबर है।

उदाहरण:

"134
134
prgmCDGF1C
:)(:)=
"2213894
2213894
prgmCDGF1C
(:(:=()=:||::(

स्पष्टीकरण:

Ans→Str1                                                 ;store the input in Ans
"                                                        ;leave " " in Ans
For(I,1,length(Str1                                      ;loop over each character in the
                                                         ; input string
Ans+sub(":)=((:)=:():=)(=:||:",1+2expr(sub(Str1,I,1)),2  ;convert the current character
                                                         ; to a number and use it as the
                                                         ; index into the encoding string
                                                         ; then append the encoded digit
End
sub(Ans,2,length(Ans)-1                                  ;remove the prepended space and
                                                         ; store the result in Ans
                                                         ;implicit print of Ans

वैकल्पिक रूप से, यहां 94 बाइट समाधान है जो एक स्ट्रिंग के बजाय इनपुट के रूप में एक संख्या लेता है:

int(10fPart(Ans₁₀^(seq(⁻X-1,X,0,log(Ans→L₁:" :For(I,dim(L₁),1,-1:Ans+sub(":)=((:)=:():=)(=:||:",1+2L₁(I),2:End:sub(Ans,2,length(Ans)-1

उदाहरण:

134
             134
prgmCDGF1C
:)(:)=
2213894
         2213894
prgmCDGF1C
(:(:=()=:||::(

स्पष्टीकरण:

int(10fPart(Ans₁₀^(seq(⁻X-1,X,0,log(Ans→L₁     ;generate a list of the input's digits
                                             ; reversed and store it in L₁
"                                            ;leave " " in Ans
For(I,dim(L₁),1,-1                            ;loop over L₁ backwards
Ans+sub(":)=((:)=:():=)(=:||:",1+2L₁(I),2     ;use the value of the I-th element in L₁ as
                                              ; the index into the encoding string then
                                              ; append the encoded digit
End
sub(Ans,2,length(Ans)-1                       ;remove the prepended space and store the
                                              ; result in Ans
                                              ;implicit print of Ans

टिप्पणियाँ:



3

जावा 8, 80 बाइट्स

n->n.forEach(i->System.out.print(":)=((:)=:():=)(=:||:".split("(?<=\\G..)")[i]))

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

स्पष्टीकरण:

n->                           // Method with IntStream parameter and no return-type
  n.forEach(i->               //  For each digit `i` in the input:
    System.out.print(         //   Print without newline:
      ":)=((:)=:():=)(=:||:"  //    Push this String
        .split("(?<=\\G..)")  //    Split into parts of size 2
          [i]))               //    And print the `i`'th part

3

जेएस ईएस 6, 77 66 बाइट्स

66 से नीचे @Charlie हार्डिंग और @asgallant के सुझावों के लिए धन्यवाद

अंत में कोडगोल्फ पर एक खाता बनाना था क्योंकि यह इस तरह की एक छोटी सी चुनौती थी!

स्ट्रिंग-केवल इनपुट की अपेक्षा करते समय मूल उत्तर का सबसे न्यूनतम रूप:

n=>[...n].map(c=>":)=((:)=:():=)(=:||:".match(/../g)[c]).join("")

दूसरे, मेरा मूल उत्तर जो एक लंबे रेगेक्स का उपयोग करता है और पहले इनपुट को एक स्ट्रिंग में ले जाता है, यह संख्या प्रकार इनपुट और अंकों के इनपुट के स्ट्रिंग दोनों के साथ काम करता है।

मैं पहली बार इनपुट को एक स्ट्रिंग में जमा करता हूं, जो तब es6 स्प्रेड का उपयोग करके एक सरणी में नष्ट हो जाता है। फिर मैं इसे एक मिलानकर्ता cb के माध्यम से मैप करता हूं जो कि रेगेक्स के साथ बनाई गई एक सरणी से सही इमोटिकॉन को पकड़ लेता है /.{1,2}/g। अंत में इमोटिकॉन्स के परिणामस्वरूप सरणी वापस एक स्ट्रिंग में शामिल हो जाती है।

n=>[...(""+n)].map(c=>":)=((:)=:():=)(=:||:".match(/.{1,2}/g)[c]).join("")

जेएस सरणी सामान मजेदार है। मुझे यकीन है कि अभी भी अनुकूलन के लिए कुछ जगह है, इस regex से हर लूप पर मेल खाता है map

क्रैपीली निम्नलिखित के साथ परीक्षण किया गया:

let emoticonize = n=>[...(""+n)].map(c=>":)=((:)=:():=)(=:||:".match(/../g)[c]).join("")

let test = arr => 
console.log(arr.map(x => ({ask:x, ans: emoticonize(x)})))

test([1,40,3697, 2330])
test(["1","40","3697", "2330"])


1
=>नक्शे में तीर के चारों ओर रिक्त स्थान क्यों हैं ? यह दो बाइट्स बचा सकता है, यह नहीं कर सका?
चार्ली हार्डिंग

1
और मेरा मानना ​​है कि रेगेक्स /../gएक ही काम करता है, एक और चार बाइट्स बचाता है
चार्ली हार्डिंग

अंत में, यदि इनपुट आवश्यक रूप से एक स्ट्रिंग है तो एक और पाँच बाइट्स को सहेजते हुए [...(""+n)]सरलीकृत किया जा सकता है[...n]
चार्ली हार्डिंग

1
mapऔर रेगेक्स खोज वास्तव में आपको यहां पात्रों की कीमत दे रही है; replaceऔर substrकम पात्रों के साथ ही काम करें: 58 बाइट्स:, n=>n.replace(/./g,c=>':)=((:)=:():=)(=:||:'.substr(2*c,2))इनपुट को अंकों की एक स्ट्रिंग के रूप में मानते हुए।
asgallant

यार, यह replace@asgallant का उपयोग करने का एक अच्छा तरीका है ! लगता है कि मुझे मेरे स्ट्रिंग फंक्शन के बारे में भी पता चल जाएगा :)
Roope

3

हास्केल, 64 56 लाईकोनी बाइट्स

((words":) =( (: )= :( ): =) (= :| |: "!!).read.pure=<<)

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

Ungolfed

समारोह लागू करें wordsहमारे प्रतीकों में से अंतरिक्ष से अलग की गई स्ट्रिंग के लिए ":) =( (: )= :( ): =) (= :| |: "एक सूची प्राप्त है, और प्राप्त करने के लिए n वें तत्व (!!)हर के लिए n हमारे इनपुट स्ट्रिंग में, परिणाम के संयोजन। nb इस मामले में (=<<)समतुल्य है concatMap, एक स्ट्रिंग को स्ट्रिंग की सूची में मैप करना और परिणामों को संक्षिप्त करना। read . pureकिसी कैरेक्टर को एक इंट में कनवर्ट करता है, एक कैरेक्टर को एक स्ट्रिंग में उठाकर, फिर readएक इंट को इंग करता है।

f x = ((words ":) =( (: )= :( ): =) (= :| |: " !!) . read . pure) =<< x


3

[आर], ५ ९ ४ R बाइट्स

अलग दृष्टिकोण:

 substr(":)=((:)=:():=)(=:||:",n<-2*scan()+1,n+1)

मुझे फिर से निर्देशित करने के लिए @ हारून का धन्यवाद :)

मूल:

 el(strsplit(":)x=(x(:x)=x:(x):x=)x(=x:|x|:","x",T))[scan()]

धड़कता है

 c(":)","=(","(:",")=",":(","):","=)","(=",":|","|:")[scan()]

1 बाइट द्वारा


1
अलग-अलग दृष्टिकोण थोड़ा बंद है, आपको एक डबल स्कैन्ड संख्या में जोड़ने की आवश्यकता है 2*scan()+1, थोड़ा पुनर्व्यवस्था के साथ हालांकि आप अभी भी इसे 48 बाइट्स के रूप में रख सकते हैं। इसे ऑनलाइन आज़माएं!
एरोन हेमैन


2

पॉवरशेल , 64 60 59 बाइट्स

-1 बाइट धन्यवाद mazzy के लिए

-join($args|% t*y|%{':)=((:)=:():=)(=:||:'|% S*g(2*"$_")2})

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

एक स्ट्रिंग लेता है, इसे अंदर विभाजित करता है toCharArrayऔर फिर इमोजी कुंजी में इसके संख्यात्मक मान को कास्टिंग करके अनुक्रमित करता है, इसे दोगुना कर देता है क्योंकि प्रत्येक इमोजी दो चौड़ा होता है, और फिर substringउस स्थान से प्लस एक अधिक होता है। अंत में यह सब एक तार में जुड़ जाता है और इसे आउटपुट में धकेल देता है।



@ mazzy हाँ, मैं कैसे ASCII मूल्य प्राप्त करने के बिना इंट करने के लिए डाली पर धन्यवाद, धन्यवाद।
विस्कह


2

सी # (विज़ुअल सी # इंटरएक्टिव कंपाइलर) , 87 , 86 , 82 , 67 बाइट्स

ऑप्टिमाइज़ करने में मदद के लिए @Artholl और @someone को सहारा देता है

n=>$"{n}".SelectMany(x=>":)=((:)=:():=)(=:||:".Substring(x*2-96,2))

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


1
आप 2 बाइट्स बचा सकते हैं । 1 बाइट यदि आप & के Substringबजाए 1 बाइट का उपयोग करते हैं यदि आप शून्य चार मान को हार्डकोड करते हैं। SkipTake
आर्थोल

@Artholl धन्यवाद! क्या आप मुझे दिखा सकते हैं कि जीरो चार मूल्य का हार्डकॉक करने से आपका क्या मतलब है?
इनात 3

जैसा कि आप उदाहरण में देख सकते हैं। के 48बजाय बस लिखें '0'
आर्थोल

कई सरल अनुकूलन; 67 बाइट्स। इसे ऑनलाइन आज़माएं!
मेरा सर्वनाम

1
@someone को यह पता नहीं था कि फंक्शन के बाहर आउटपुट के प्रकार को बदलने की अनुमति थी
Innat3

1

जावास्क्रिप्ट (ईएस 6), 87 बाइट्स

n=>{for(s=":)=((:)=:():=)(=:||:",i=0;i<20;)n=n.split(i/2).join(s[i++]+s[i++]);return n}

यह आउटपुट ):के बजाय (:के लिए3
हरमन एल

@ हर्मन एल हां, धन्यवाद!
नारायकोको


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