নম্বরগুলি ইমোজি ম্যাথে রূপান্তর করুন [বন্ধ]


13

ইমোজি ম্যাথে, একজন ব্যবহারকারী ভিডিও গেমটির জন্য মডিউল তৈরি করেছেন টকিং রাখুন এবং কেউই বিস্ফোরিত হয় না, সংখ্যাগুলি ইমোটিকনের স্ট্রিং হিসাবে লেখা হয়, যেখানে প্রতিটি ইমোটিকন একটি বেস 10 অঙ্কের প্রতিনিধিত্ব করে। নীচে অঙ্ক এবং ইমোটিকনগুলির মধ্যে রূপান্তর সারণি রয়েছে।

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

একটি নম্বর দেওয়া হয়েছে, এটি ইমোজি ম্যাথ এনকোডিংয়ে আউটপুট করুন। আপনি সংখ্যাসূচক অক্ষরের অনুপস্থিতি ধরে নিতে পারেন।

এটি , তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর ins


4
আমরা কি স্ট্রিং হিসাবে ইনপুট নম্বর নিতে অনুমতি দেওয়া হয়?
তাউ

3
... বা অঙ্কের একটি অ্যারে।
শেগি

1
@ টাউ মনে হচ্ছে উদ্দেশ্যটি একটি স্ট্রিং গ্রহণ করা ছিল - "আপনি অ-সংখ্যাসূচক অক্ষরের অনুপস্থিতি ধরে নিতে পারেন" "; আমাদের জিজ্ঞাসা করা উচিত "আমরা কি পূর্ণসংখ্যা হিসাবে ইনপুটটি নিতে পারি?"
জনাথন অ্যালান

1
উপরের পয়েন্টগুলি সুস্পষ্ট না হওয়া পর্যন্ত আমি অস্পষ্ট হিসাবে বন্ধ করার পক্ষে মত দিয়েছি তবে এটি স্থির হয়ে গেলে আমাকে পিং করতে দ্বিধা করবেন না যাতে আমি আমার ভোটটি প্রত্যাহার করতে বা পুনরায় খুলতে ভোট দিতে পারি।
আরনাউল্ড

1
@Tau আমি কারণ জিজ্ঞাসা ছিল এই । ওপিকে উত্তর দেওয়া দরকার।
mbomb007

উত্তর:


5

জাপট , 29 24 বাইট

-5 বাইট @ শ্যাগিজিকে ধন্যবাদ

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

স্ট্রিং হিসাবে ইনপুট নেয়

এটি অনলাইন চেষ্টা করুন!


জাপটে স্বাগতম: :) বাইট সংরক্ষণ করার জন্য m@এটি প্রতিস্থাপন করা £যেতে পারে। তবে এটি বেস রূপান্তর ব্যবহার করে 24 বাইটে করা যেতে পারে ।
শেগি

উফফ, মনে হচ্ছে এটি আসলে আপনার প্রথম জাপট সমাধান নয়! আপনি যদি এখনও এর জন্য চেষ্টা করতে চান তবে আপনি এই অনুগ্রহের যোগ্যতা অর্জন করতে পারেন।
শেগি


5

এটি একাধিক সংখ্যা সহ সংখ্যাগুলির জন্য কাজ করছে না।
ইজলিন

1
@ আইজলিন: আসলেই। আমি বুঝতে পারি নি যে এটি চ্যালেঞ্জের অংশ। স্থির যদিও এখন। ধন্যবাদ :)
এমিগনা


4

টিআই-বেসিক, by৯ বাইট

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 66 জনকে ধন্যবাদ

শেষ পর্যন্ত কোডগল্ফে একটি অ্যাকাউন্ট তৈরি করতে হয়েছিল কারণ এটি এত মজার একটি ছোট চ্যালেঞ্জ ছিল!

কেবলমাত্র স্ট্রিং-এর ইনপুট আশা করার সময় মূল উত্তরের সর্বাধিক ন্যূনতম ফর্ম:

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

দ্বিতীয়ত, আমার আসল উত্তর যা একটি দীর্ঘ রেইগেক্স ব্যবহার করে এবং প্রথমে ইনপুটটিকে স্ট্রিংয়ে জোর করে দেয়, এটি উভয় সংখ্যার ধরণের ইনপুট এবং অঙ্কের ইনপুটগুলির একটি স্ট্রিংয়ের সাথে কাজ করে।

আমি প্রথমে ইনপুটটিকে স্ট্রিংয়ে জোর করেছিলাম, যা পরে এস 6 স্প্রেড ব্যবহার করে একটি অ্যারেতে ধ্বংস হয়ে যায়। তারপরে আমি এটি ম্যাচারের সিবি দিয়ে মানচিত্র করি যা রেজেক্সের সাহায্যে তৈরি অ্যারে থেকে সঠিক ইমোটিকন ধরে /.{1,2}/g। অবশেষে ইমোটিকনের ফলাফলযুক্ত অ্যারেটি আবার একটি স্ট্রিংয়ে যোগ হয়।

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

জেএস অ্যারে স্টাফ মজাদার। আমি নিশ্চিত যে এখনও অপ্টিমাইজেশনের জন্য আরও কিছু জায়গা রয়েছে, এটি প্রতিটি লুপের রেগেক্সের সাথে আবার মেলে 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))ইনপুটটিকে অঙ্কের একটি স্ট্রিং হিসাবে ধরে নিয়ে কাজ করুন।
অ্যাসাল্যান্ট

ম্যান, এটি replace@ স্প্যান্টল্যান্ট ব্যবহারের একটি পরিষ্কার উপায় ! দেখে মনে হচ্ছে আমার স্ট্রিং ফাংশনগুলিও জানতে হবে :)
রূপটি

3

হাস্কেল, 64 56 লাইকনি বাইট

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

এটি অনলাইনে চেষ্টা করুন

Ungolfed

একটি তালিকা পেতে wordsআমাদের স্পেস-বিভক্ত চিহ্নগুলির স্ট্রিংটিতে ফাংশনটি প্রয়োগ করুন এবং ফলাফলগুলিকে সংমিশ্রণ করে আমাদের ইনপুট স্ট্রিংয়ে প্রতিটি এন এর জন্য এন এন তম উপাদানটি পান । এনবি এই ক্ষেত্রে সমতুল্য , স্ট্রিংয়ের তালিকার সাথে একটি স্ট্রিংকে ম্যাপিং এবং ফলাফলকে সম্মতি জানাতে। একটি অক্ষরকে একটি স্ট্রিংয়ে তুলে, তারপরে কোন ইনট-এ যুক্ত করে একটি অক্ষরকে একটি ইন্টারে রূপান্তরিত করে ।":) =( (: )= :( ): =) (= :| |: "(!!) (=<<)concatMapread . pureread

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


3

[আর], 59 48 বাইট

বিভিন্ন পদ্ধতির:

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

আমাকে আবার নির্দেশ দেওয়ার জন্য @ অ্যারনকে ধন্যবাদ :)

মূল:

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

beats

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

1 বাইট দ্বারা


1
ভিন্ন পদ্ধতিটি কিছুটা বন্ধ, আপনাকে 2*scan()+1পুনরায় সাজানোর একটি দ্বিগুণ স্ক্যান সংখ্যায় একটি যুক্ত করতে হবে যদিও আপনি এখনও এটি 48 বাইট হিসাবে রাখতে পারেন। এটি অনলাইন চেষ্টা করুন!
অ্যারন হেইম্যান


2

পাওয়ারশেল , 64 60 59 বাইট

-1 বাইট ধন্যবাদ ম্যাজি

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

এটি অনলাইন চেষ্টা করুন!

একটি স্ট্রিং নেয়, এটিকে বিভক্ত করে toCharArrayতোলে এবং তারপরে ইমোজি কীতে অক্ষরটিকে তার সংখ্যাগত মানতে ফেলে সূচিগুলিকে দ্বিগুণ করে কারণ প্রতিটি ইমোজি দুটি প্রশস্ত, এবং তারপরে substringসেই স্থানটি থেকে আরও উচ্চতর করে নিয়ে যায়। অবশেষে এটি এগুলিকে এক স্ট্রিংয়ের সাথে যুক্ত করে এবং আউটপুট এ পুশ করে।



@ মমজি হ্যাঁ, আমি ASCII মান না পেয়ে কীভাবে কাস্ট করতে পারি তার জন্য আমি ব্যবধান রেখেছিলাম, ধন্যবাদ।
ভেস্কাহ


2

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 87 , 86 , 82 , 67 বাইট

অনুকূলিতকরণে সহায়তার জন্য @ আর্থল এবং @ সামোনে প্রপস

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

এটি অনলাইন চেষ্টা করুন!


1
আপনি 2 বাইট সংরক্ষণ করতে পারেন । আপনি & এর Substringপরিবর্তে 1 বাইট ব্যবহার করেন এবং 1 টি বাইট যদি আপনি শূন্য চর মানটি হার্ডকোড করেন। SkipTake
আর্থোল

@ আর্থল ধন্যবাদ! শূন্য চর মানটি হার্ডকড করে আপনি কী বোঝাতে চেয়েছেন?
ইন্নাত 3

যেমন আপনি উদাহরণে দেখতে পারেন। শুধু 48পরিবর্তে লিখুন '0'
আর্থল

বেশ কয়েকটি সহজ অপ্টিমাইজেশন; 67 বাইট। এটি অনলাইন চেষ্টা করুন!
আমার সর্বনাম ic

1
@ সোনা কেউ জানতেন না আউটপুট ধরণের পরিবর্তনের জন্য ফাংশনের বাইরে অনুমতি দেওয়া হয়েছিল
ইনাত 3



আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.