চলুন একটি বিআইবাবোবিউ ডিকোডার গল্ফ করি


53

আমি ভবিষ্যতে যাত্রা করল, তখন আমি 2275. প্রায় কিডস মধ্যে একটি মজার খেলা লক্ষ্য তারা তাদের মহান-মহান-মহান-মহান-গ্র্যান্ড বাবা বুঝতে তারা কী বলছে তা না চান, তখন তারা ব্যবহার BIBABOBU কথা বলতে । স্পষ্টতই, আমি আমার প্রাক-সাইবার্গ যুগের মস্তিষ্কের সাথে কিছুই বুঝতে পারি না এবং আমি অনুভব করেছি (বা প্রযুক্তিগতভাবে: আমি অনুভব করব ) সত্যিই নির্বোধ। সুতরাং, আমার আমার পরবর্তী দর্শনটির জন্য একটি ডিকোডার লাগবে।

BIBABOBU?

এটি একটি দীর্ঘ সময়ের জন্য অবচিত করা হয়েছে, যদিও ASCII এখনও 2275 এর পপ সংস্কৃতিতে সাধারণত ব্যবহৃত হয় এবং এই ভাষাটি এর উপর ভিত্তি করে।

একটি স্ট্রিংটি বিআইবিএবোবিউ-এনকোড করা হয়েছে:

  • সমস্ত অক্ষরকে তাদের ASCII কোডগুলিতে রূপান্তর করুন।
  • প্রতিটি কোডের 2-অঙ্কের হেক্সাডেসিমেল উপস্থাপনা নিন এবং নীচের টেবিলটি ব্যবহার করে এগুলিকে রূপান্তর করুন:

    0: BI  4: BIDI  8: BADI  C: BODI
    1: BA  5: BIDA  9: BADA  D: BODA
    2: BO  6: BIDO  A: BADO  E: BODO
    3: BU  7: BIDU  B: BADU  F: BODU
    

উদাহরণ

"Hello!" → 48 65 6C 6C 6F 21 → "BIDIBADI BIDOBIDA BIDOBODI BIDOBODI BIDOBODU BOBA"

যাইহোক, সংশ্লিষ্ট ইনপুট একঘেয়ে স্বরভঙ্গি বাচ্চাদের রোপন ছাড়া বুঝতে এই এমনকি কঠিন করে তুলতে ব্যবহার করছেন অনুকরণ করতে কোন স্থান ছাড়া দেওয়া হবে:

"BIDIBADIBIDOBIDABIDOBODIBIDOBODIBIDOBODUBOBA"

ব্যাখ্যা এবং বিধি

  • মনে রাখবেন যে আমার একটি এনকোডার নয়, একটি ডিকোডার দরকার ।
  • ডিকোড করা অক্ষরগুলি অবশ্যই সীমার মধ্যে থাকার গ্যারান্টিযুক্ত [32 ... 126]
  • ইনপুটটিতে বিআইবিবাবিবিউ-এনকোডড হেক্সাডেসিমাল সংখ্যা এমনকি এন সংখ্যা থাকা নিশ্চিত।
  • আপনি পুরো ছোট ছোট হাতের বা সম্পূর্ণ বড় হাতের ইনপুট নিতে পারেন। মিশ্র কেসগুলি অনুমোদিত নয়।
  • কারণ কোনও সময়ের ভ্রমণের সময় বিট ফ্লিপগুলি বেশ সাধারণ, তাই ঝুঁকিগুলি হ্রাস করার জন্য এটি

পরীক্ষার মামলা

নোট: লাইনফিডগুলি কেবল ফর্ম্যাট করার উদ্দেশ্যে ব্যবহৃত হয়। আপনার এগুলি পরিচালনা করার কথা নয়

Input:
BIDABIDIBIDOBIDABIDUBUBIDUBIDI

Output:
Test

Input:
BIDABIDUBIDOBIDABIDOBODIBIDOBUBIDOBODUBIDOBODABIDOBIDABOBIBIDUBIDIBIDOBODUBOBIBUBOBUBOBUBI
DUBUBIDABOBA

Output:
Welcome to 2275!

Input:
BIDIBADIBIDOBIDABIDOBODIBIDOBODIBIDOBODUBOBODIBOBIBIDABIDIBIDOBADABIDOBODABIDOBIDABOBIBIDA
BIDIBIDUBOBIDOBABIDUBIDOBIDOBIDABIDOBODIBIDOBIDABIDUBOBOBABOBIBIDABADABIDOBODUBIDUBIDABOBI
BIDOBODIBIDOBODUBIDOBODUBIDOBADUBOBIBIDUBUBIDOBODUBOBIBIDOBIDOBIDUBIDABIDOBODOBIDOBODOBIDU
BADABOBA

Output:
Hello, Time Traveler! You look so funny!

Input:
BIDIBABIDOBODOBIDOBIDIBOBIBIDUBADABIDOBODUBIDUBIDABOBIBIDOBIDIBIDOBODUBIDOBODOBOBIDUBIDUBI
DIBOBIBIDUBIDABIDOBODOBIDOBIDIBIDOBIDABIDUBOBIDUBUBIDUBIDIBIDOBABIDOBODOBIDOBIDIBOBIBIDUBI
DUBIDOBADIBIDOBABIDUBIDIBOBIBIDIBADABOBIDUBIDOBODABOBIBIDUBUBIDOBABIDUBADABIDOBADABIDOBODO
BIDOBIDUBOBODIBOBIBIDOBIDIBIDOBODUBOBIBIDUBADABIDOBODUBIDUBIDABUBODUBOBIBIDIBADIBIDOBABOBI
BIDOBADIBIDOBABOBIBIDOBADIBIDOBABOBA

Output:
And you don't understand what I'm saying, do you? Ha ha ha!

4
@ স্টিভি গ্রিফিন এই জঘন্য বাচ্চাগুলি দু: খজনক ...: - /
আর্নল্ড

12
যাইহোক, আমি গল্পটি সত্যিই অসম্ভব বলে মনে করি! আমি যদি অবাক হয়ে দেখি যে এটি যদি আপনার কেবল স্বপ্ন ছিল ... আপনার বাড়িতে কোনও সিও ফাঁস হতে পারে?
স্টিভি গ্রিফিন

12
আহ ... এটি আমার বসার ঘরে রেইনবোজে চড়া পনিগুলিও ব্যাখ্যা করবে!
আর্নৌল্ড

9
কেউ তর্ক করতে পারে যে গল্ফড কোডটি একটি বিট-ফ্লিপের তীব্রতা বাড়ায় (কোডের মধ্যে কম রিডানডেন্সি) এমনকি যদি এটি একটি বিট-ফ্লপের ফ্রিকোয়েন্সি হ্রাস করে ... তবে যাই হোক না কেন :) - চমৎকার চ্যালেঞ্জ!
জেকে

4
পছন্দ করুন আমি লাইনগুলিতে আরও চিন্তা করছিলাম: কোডটি যত কম হবে, একাধিক অনুলিপিগুলি সংরক্ষণ করে আপনি আরও বেশি পরিমাণে রিন্ডান্সি পাবেন।
আর্নল্ড

উত্তর:


15

05AB1E , 36 35 33 বাইট

মিস্টার এক্সকোডারকে 1 বাইট ধন্যবাদ সংরক্ষণ করা হয়েছে কেভিনক্রুইজসেনকে
ধন্যবাদ 2 বাইট সংরক্ষণ করা

ć©¡®ì®D…IAO©â'D«‚˜®'U«âJskh2ôJHçJ

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

ব্যাখ্যা

ć©¡                                 # extract the head ("B") and split input on it
   ®ì                              # prepend "B" to each
     ®D                            # push 2 copies of "B"
       …IAO©â                      # cartesian product with "IAO"
             'D«                   # append "D" to each
                ‚˜                 # add the leftover "B" to the list
                  ®'U«â            # cartesian product with "IAOU"
                       J           # join each to string
                        sk         # get the index of each word of the input in this list
                          h        # convert each to hex
                           2ôJ     # format as pairs of chars
                              H    # convert to int
                               çJ  # convert from ascii-codes to string

আমি বিশ্বাস করি 'B©¡¦®ì®D…IAO©â'D«‚˜®'U«âJskh2ôJHçJ35 বাইটের জন্য কাজ করে।
মিঃ এক্সকোডার

@ মিঃ এক্সকোডার: আহ, অবশ্যই ভাল পুনঃব্যবহার ©। ধন্যবাদ :)
Emigna

-2 বাইট নেতৃস্থানীয় পরিবর্তন 'Bকরতে ćএবং সরিয়েছে ¦, যেহেতু ইনপুট সবসময় একটি 'বি' দিয়ে শুরু হবে।
কেভিন ক্রুইজসেন 29:25

@ কেভিন ক্রুজসেন: ওহ, ভাল ধারণা। আমি বিবেচনা করিনি ć। ধন্যবাদ!
এমিগানা

9
এখন আসুন সেই বাচ্চাদের কাছে ফিরে আসি এবং তারা বুঝতে পারে কিনা তা দেখুন!
হারুন

14

জেলি , 26 24 23 22 20 17 15 বাইট

ṣḢO^1%9%4Ḅḅ⁴b⁹Ọ

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

কিভাবে এটা কাজ করে

ṣḢO^1%9%4Ḅḅ⁴b⁹Ọ  Main link. Argument: s (string)

 Ḣ               Head; remove and yield the first character of s.
ṣ                Split s at occurrences of the result ('B').
  O              Ordinal; map "IAOUD" to A1 := [73, 65, 79, 85, 68].
   ^1            Bitwise XOR 1; map A1 to A2 := [72, 64, 78, 84, 69].
     %9          Modulo 9; map A2 to A3 := [0, 1, 6, 3, 6].
       %4        Modulo 4; map A3 to A4 := [0, 1, 2, 3, 2].
                 So far, we've mapped "BX" to [x] and "BXDY" to [x, 2, y],
                 where x/y = 0, 1, 2, 3 when X/Y = I, A, O, U.
         Ḅ       Unbinary; map [x] to x and [x, 2, y] to 4x + 2×2 + y = 4(x + 1) + y.
          ḅ⁴     Convert the resulting array from base 16 to integer.
            b⁹   Convert the resulting integer to base 256.
              Ọ  Unordinal; replace code points with their characters.

13

পার্ল 6 , 58 বাইট

{S:g{(B.[D.]?)**2}=chr :16[$0».&{:2[.ords»³X%87 X%4]}]}

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

ডেনিসের জেলি সমাধান দ্বারা ভারীভাবে অনুপ্রাণিত। একটি ভিন্ন যাদু ফাংশন ব্যবহার x³ % 87 % 4যা মানচিত্রের ASCII কোড IAOUBDথেকে 012302

বিকল্প 75 74 বাইট সংস্করণ

-1 বাইট জো কিংকে ধন্যবাদ

{pack('H',.trans((<B BID BAD BOD>X~ <I A O U>)=>(^16)».base(16))).decode}

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

বিকল্প 85 বাইট সংস্করণ

{S:g[....]=chr :4(~$/)*2+|221+^:4(~$/)+^238}o{TR:d/UIAOBD/0123/}o{S:g[B.<![D]>]=0~$/}

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


(^16)>>.base(16)-1 বাইটের জন্য কীভাবে
জো কিং



6

05AB1E (উত্তরাধিকার), 68 65 60 59 বাইট

.•5Ç¿ÆΓ•2ô.•1ÒKá ¸ΓìŸÆt`ô_zTºγ„KRI‰ι놽òι•4ô«I¬©¡®ìkh2ôJHçJ

ইনপুট ছোট হাতের অক্ষরে আছে।

-3 বাইট পরোক্ষভাবে ধন্যবাদ @Emigna পরিবর্তন 'b¡εg>}s£করতে 'b©¡®ì

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

এছাড়াও, বিশাল সংকীর্ণ স্ট্রিংগুলির চেয়ে স্মার্ট কিছু দিয়ে স্পষ্টতই গল্ফ করা যেতে পারে। পরে অন্য চেহারা নেবে। ইতিমধ্যে @ এমিগনা দ্বারা সরবরাহিত সংক্ষিপ্ত উত্তর , সুতরাং তাকে উর্ধ্বমুখী করা নিশ্চিত করুন!

ব্যাখ্যা:

.•5Ç¿ÆΓ•      # Compressed string "bibabobu"
        2ô    # Split in parts of 2
              #  → ["bi","ba","bo","bu"]
.•1ÒKá ¸ΓìŸÆt`ô_zTºγ„KRI‰ι놽òι•
              # Compressed string "bidibidabidobidubadibadabadobadubodibodabodobodu"
        4ô    # Split in parts of 4
              #  → ["bidi","bida","bido","bidu","badi","bada","bado","badu","bodi","boda","bodo","bodu"]
«             # Merge both lists together
              #  → ["bi","ba","bo","bu","bidi","bida","bido","bidu","badi","bada","bado","badu","bodi","boda","bodo","bodu"]
I¬©¡          # Take the input and split on the head (always 'b')
              #  i.e. "bidibadibidobidabidobodibidobodibidoboduboba"
              #   → ["idi","adi","ido","ida","ido","odi","ido","odi","ido","odu","o","a"]
    ®ì        # And prepend a 'b' to each item again
              #  i.e. ["idi","adi","ido","ida","ido","odi","ido","odi","ido","odu","o","a"] 
              #   → ["bidi","badi","bido","bida","bido","bodi","bido","bodi","bido","bodu","bo","ba"]
k             # Map each item to the index of the first list
              #   i.e. ["bidi","badi","bido","bida","bido","bodi","bido","bodi","bido","bodu","bo","ba"]
              #    → [4,8,6,5,6,12,6,12,6,15,2,1]
 h            # Convert everything to hexadecimal
              #  i.e. [4,8,6,5,6,12,6,12,6,15,2,1]
              #   → ["4","8","6","5","6","C","6","C","6","F","2","1"]
  2ôJ         # Split it in parts of 2 and join them together
              #  i.e. ["4","8","6","5","6","C","6","C","6","F","2","1"]
              #   → ["48","65","6C","6C","6F","21"]
     H        # Convert that from hexadecimal to an integer
              #  i.e. ["48","65","6C","6C","6F","21"] → [72,101,108,108,111,33]
      ç       # And take its ASCII value
              #  i.e. [72,101,108,108,111,33] → ["H","e","l","l","o","!"]
       J      # Then join everything together (and output implicitly)
              #  i.e. ["H","e","l","l","o","!"] → "Hello!"


5

আর , 141 135 বাইট

function(x,y="I":"A":"O")intToUtf8(matrix(match(el(strsplit(gsub("D","",x),"B"))[-1],paste0(rep("":y,e=4),y:"U"))-1,,2,T)%*%16:1)
":"=c

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

জাইসকে 6 বাইট বাঁচানোর জন্য ধন্যবাদ !

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


1
সুন্দর! আমার প্রিয় কৌশলটি 6 টি বাইট সংরক্ষণ করে - অন্য দিন আমার একটি উত্তরের জন্য আপনার মন্তব্যে অনুপ্রাণিত হয়েছে।
জেসি

@ জয়সি খুব সুন্দর এবং ঝরঝরে! এমনকি %*%আমি দেখতে অগ্রাধিকার সঙ্গে এটি ব্যবহার করে । :-) আপনি `:`যদি অন্য কোনও কিছুর সাথে তাল মিলিয়ে এটি ব্যবহার করতে চান তবে আপনি একটি ফাংশন যুক্তি হিসাবেও রাখতে পারেন !
জিউসেপে

এটি ঠিক - আমি সর্বদা ব্যাককোটিসগুলি ভুলে যেতে চাই।
জেসি

5

জাপট, 43 29 28 বাইট

আশ্চর্যজনকভাবে, ডেনিসের জেলি সমাধানের একটি বন্দরটি আরও খাটো কাজ করে।

অক্ষরের অ্যারে আউটপুট করে।

Åqbu)®¬®c ^1 %9%4Ãì2Ãò ®ìG d

চেষ্টা করে দেখুন


আসল, 42 বাইট

Åqb £`bbidbad¾d`ò3n)ï`ia`q)m¬bXibÃò ®ìG d

চেষ্টা করে দেখুন

ব্যাখ্যা

Åqb £`bbidbad¾d`ò3n)ï`ia`q)m¬bXibÃò ®ìG d
Å                                              :Slice off the first character
 qb                                            :Split on "b"
    £                                          :Map
     `bbidbad¾d`                               :  Compressed string "bbidbadbod"
                ò3n)                           :  Partition at every 3rd character from the end (["b","bid","bad","bod"])
                    ï                          :  Cartesian product
                     `ia`                      :   Compressed string "iaou"
                          q                    :   Split
                           )                   :  End Cartesian product
                            m                  :  Map
                             ¬                 :   Join
                              b                :  Index of
                               X               :   Current element
                                ib             :   Prepend "b"
                                  Ã            :End map
                                   ò           :Partition at every second element
                                     ®         :Map
                                      ìG       :  Convert from base-16 digit array to base-10 integer
                                         d     :  Get the character at that codepoint

5

সি (জিসিসি) , 181 138 136 বাইট

আশা করি এটি সংকলন করতে ভবিষ্যতে কোনও সি সংকলক থাকবে! :-)

পরামর্শগুলির জন্য ম্যাক্স ইয়েখলাভ এবং সিলিংক্যাটকে ধন্যবাদ।

v,t,c,d;f(char*s){for(v=t=c=0;d=*s++;)t+=d==66?v=v*16+t,++c>2?v=!putchar(v),c=1:0,-t:d-65?d-79?d-68?d-85?0:3:4+t*3:2:1;putchar(v*16+t);}

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


ভবিষ্যতের সি সংকলক কেবল বিআইবিবাবু-আইফাইড এএসসিআইআই বুঝতে পারে :-)

BIDUBIDOBOBODIBIDUBIDIBOBODIBIDOBUBUBADUBIDOBIDOBOBADIBIDOBUBIDOBADIBIDOBABIDUBOBOBADOBIDUBUBOBADABIDUBADUBIDOBIDOBIDOBODUBIDUBOBOBADIBIDUBIDOBUBODABIDUBIDIBUBODABIDOBUBUBODABUBIBUBADUBOBADOBIDUBUBUBADUBIDUBUBOBADUBOBADUBOBADABIDUBIDIBOBADUBUBODABOBADOBIDUBUBUBODABUBODABUBIDOBUBIDOBUBODUBIDUBIDOBUBODABIDUBIDOBOBADOBUBABUBIDOBOBADUBIDUBIDIBOBODIBOBADUBOBADUBIDOBUBUBODOBUBOBUBODUBIDUBIDOBUBODABOBABIDUBIBIDUBIDABIDUBIDIBIDOBUBIDOBADIBIDOBABIDUBOBOBADIBIDUBIDOBOBADABOBODIBIDOBUBUBODABUBABUBADOBUBIBOBODIBOBODABIDUBIDIBUBADOBOBADOBIDUBUBOBODABUBIDOBUBIDABUBODUBOBADOBIDUBUBOBODABUBIDUBUBADABUBODUBOBADOBIDUBUBOBODABUBIDOBUBADIBUBODUBOBADOBIDUBUBOBODABUBADIBUBIDABUBODUBUBIBUBADOBUBUBUBADOBUBIDIBOBADUBIDUBIDIBOBADOBUBUBUBADOBUBOBUBADOBUBABUBADUBIDUBIBIDUBIDABIDUBIDIBIDOBUBIDOBADIBIDOBABIDUBOBOBADIBIDUBIDOBOBADOBUBABUBIDOBOBADUBIDUBIDIBOBADABUBADUBIDUBODA

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



সুপারিশ c=printf(&v),v=0পরিবর্তেv=!putchar(v),c=1
ceilingcat

4

জাভাস্ক্রিপ্ট (নোড.জেএস) , 131 128 বাইট

s=>unescape(s.replace(/B.(D.)?/g,(f,s)=>(-~g(f[1])*4*!!s+g((s||f)[1])).toString(16),g=c=>'IAOU'.search(c)).replace(/../g,'%$&'))

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। বিকল্প সংস্করণ, এছাড়াও 131 বাইট:

s=>unescape(s.replace(/B.(D.)?/g,s=>(-~g(s[1])*4*!!s[3]+g(s[3]||s[1])).toString(16),g=c=>'IAOU'.search(c)).replace(/../g,'%$&'))

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। সম্পাদনা: @ শ্যাগিকে ধন্যবাদ 3 বাইট সংরক্ষণ করুন।


1
ব্যবহার unescape()করা একটি দুর্দান্ত ধারণা।
আর্নল্ড

indexOf-> searchএকটি বাইট সংরক্ষণ করুন।
শেগি

এছাড়াও, আপনার কাছে RegEx বরাদ্দ করার মতো মনে হচ্ছে না r
শেগি

@ শেগি ওফস, এটি পূর্ববর্তী পুনরাবৃত্তি থেকে একটি বাম ওভার। ধন্যবাদ!
নীল


4

স্কালা , 305 বাইট

ভাল, আমি নিশ্চিত যে এটি গল্ফ করা যেতে পারে। কিন্তু এখনও, এটি বিদ্যমান। ছোট হাতের ইনপুট নেয়। fstdout মধ্যে ফলাফল মুদ্রণ।

সম্পাদনা: -8 অক্ষর আমাকে আর বোবা না হওয়ার জন্য ধন্যবাদ (স্পেস); -13 অক্ষর crater2150 ধন্যবাদ

var k=Seq("bi","ba","bo","bu")
k++=k.init.flatMap(a=>Seq("di","da","do","du").map(a+_))//Putting "bu" here instead of at line 1, and in place of using init, would be interesting... if it did not cause a typing problem
var m=Seq[String]()
def g(a:Seq[String],b:Int)=k.indexOf(a(b)).toHexString
def f(a:String){a.split('b').drop(1).foreach(x=>m:+="b"+x)
var i=0
while(i<m.length){print(Integer.parseInt(g(m,i)+g(m,i+1),16).toChar)
i+=2}}

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


আপনি প্রতিস্থাপন করতে পারেন dropRight(1)সঙ্গে init, Seq("").drop(1)সঙ্গে Seq[String](), এবং map(b=>a+b)সঙ্গেmap(a+_)
crater2150

@ ক্রেটার 2150 ধন্যবাদ! আমার সংকলকটি কাজ করতে চায় নি map(a+_)তবে আমি জানতাম যে আমি এটি করতে পারি। অন্যান্য টিপস জন্য ধন্যবাদ!
ভি। কুর্তোইস




3

ডায়ালগ এপিএল, 74 72 বাইট

ডায়ালগ এপিএল-এর প্রাথমিক স্তরের সমাধান (কয়েক দিন আগে এটি শিখতে শুরু করে!)। একটি dfn সংজ্ঞায়িত করে যা একটি সঠিক যুক্তি (ইনপুট) নেয়। ডায়ালগ এনকোডিং ব্যবহার করার সময় 72 টি অক্ষর, 72 বাইট 72 05AB1E এ এমিগানার সমাধানের ভিত্তিতে।

{⎕UCS 16⊥¨(1 0⍴⍨≢t)⊂1-⍨(,('B',('B'∘.,'IAO'),¨'D')∘.,'IAOU')⍳t←('B'⍷⍵)⊂⍵}

পিপিসিজি এবং এপিএল গল্ফিংয়ের বিশ্বে আপনাকে স্বাগতম। এটি মাত্র কয়েক দিন এপিএল শেখার পরে আশ্চর্যজনক। আপনি এপিএল গল্ফিং টিপস উপভোগ করতে পারেন । এপিএল অর্খার্ডেও নির্দ্বিধায় অংশগ্রহণ করুন !
অ্যাডম


2

ব্রেন-ফ্লাক , 178 বাইট

{(([((((()()()()){}){}){}()){}]{}){{}<>(({}){}){}(<>)}{}<({}(<>))(<>)((()()()())({})()){{(({})){({}[()])<>}{}}<>({}<>)<>{}}{}><>{}{})<>}<>([]){{}({}(((({}){}){}){}){}<>)<>([])}<>

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

ব্যাখ্যা

# Step 1: convert to hex.
# For each pair of letters in the input:
{

  (

    # Compare first letter to B
    ([((((()()()()){}){}){}()){}]{})

    # If not B, pop previous output, multiply by 4, and put on third stack.
    # 4 is added automatically from pushing/popping the difference
    # between the letters B and D.
    {{}<>(({}){}){}(<>)}{}

    <

      # Push second letter in pair to other stack
      ({}(<>))

      # Push 4 and 9
      (<>)((()()()())({})())

      # Compute 3-((8-(n mod 9)) mod 4)
      # (same as (n-1) mod 9 mod 4)
      {{(({})){({}[()])<>}{}}<>({}<>)<>{}}{}

    >

    # Add result to third stack (either 0 or 4*previous+4)
    <>{}{}

  # Push onto second stack
  )

<>}

# Step 2: Pair up hex digits.
# While digits remain on right stack:
<>([]){{}

  # Push top of stack + 16*second on stack to left stack
  ({}(((({}){}){}){}){}<>)<>

([])}

# Switch to left stack for output.
<>

2

05 এ বি 1 ই , 30 বাইট

ć¡Ç1^9%4%εDg≠i421øP]€OžvβžzвçJ

@ ডেনিসের উন্মাদ জেলি উত্তরটির পোর্ট (কেবলমাত্র কম সুবিধাজনক বিল্টিন সহ)। সুতরাং তাকে উঁচুতে নিশ্চিত করুন!

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

ć¡             # Split the input-string on its first character ('B')
               #  i.e. "BIDABIDIBIDOBIDABIDUBUBIDUBIDI"
               #   → ["IDA","IDI","IDO","IDA","IDU","U","IDU","IDI"]
  Ç            # Convert each character to it's ordinal value
               #  → [[73,68,65],[73,68,73],[73,68,79],[73,68,65],[73,68,85],85,[73,68,85],[73,68,73]]
   1^          # XOR it by 1
               #  → [[72,69,64],[72,69,72],[72,69,78],[72,69,64],[72,69,84],84,[72,69,84],[72,69,72]]
     9%        # Take modulo-9
               #  → [[0,6,1],[0,6,0],[0,6,6],[0,6,1],[0,6,3],3,[0,6,3],[0,6,0]]
       4%      # Take Modulo-4
               #  → [[0,2,1],[0,2,0],[0,2,2],[0,2,1],[0,2,3],3,[0,2,3],[0,2,0]]
ε         ]    # Now map it to:
 Dgi          # If the length is not 1:
               #  i.e. [0,2,1] → 3 → 1 (truthy)
               #  i.e. 3 → 1 → 0 (falsey)
     421øP     # Multiply the first number by 4, second by 2, and third by 1
               #  i.e. [0,2,1] and [4,2,1] → [[0,4],[2,2],[1,1]] → [0,4,1]
           O  # Then sum every inner list
               #  [[0,4,1],[0,4,0],[0,4,2],[0,4,1],[0,4,3],3,[0,4,3],[0,4,0]]
               #   → [5,4,6,5,7,3,7,4]
žvβ            # Convert this list from base-16 to base-10
               #  → 1415934836
   žzв         # Convert this integer from base-10 to base-256
               #  → [84,101,115,116]
      ç        # Convert this number to ASCII characters
               #  → ["T","e","s","t"]
       J       # Join the characters together (and output implicitly)
               #  → "Test"

আপনি কীভাবে তিনটি এমিনগ্যাস স্কোর ছিটকে গেলেন তা অবাক করে দিয়েছিলেন? জেবাস এটি বন্দরের প্রচেষ্টার জন্য জটিল +1 - এর আগে কখনও এক্সওআর বা সেই বেস রূপান্তর ব্যবহৃত হয়নি! এখন থেকে মনে রাখবে!
ম্যাজিক অক্টোপাস উরান

@ ম্যাজিক অ্যাক্টোপাস উর্ন হ্যাঁ, ডেনিসের উত্তর এমন কিছু যা আমি কখনই নিজের সাথে সামনে আসতে পারতাম না .. এবং জেলির ক্ষেত্রে এটি আরও কার্যকরভাবে করা হয়েছে, যেহেতু তার উত্তর 15 বাইট এবং আমার 30 বছর। যদিও এটি একটি বন্দর আমি নিজেই একবার এক্সওআর এবং বেস রূপান্তরটি প্রায়শই ব্যবহার করেছি।
কেভিন ক্রুইজসেন

2

জাভা (জেডিকে 10) , 199 বাইট

s->{var z="";for(var x:s.substring(1).split("B")){int d=-1;for(var y:x.split("D"))d=-~d*4+"IAOU".indexOf(y);z+=(char)(d>9?d+55:d+48);}return new String(new java.math.BigInteger(z,16).toByteArray());}

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

ক্রেডিট


1
আপনি কি -~dপরিবর্তে ব্যবহার করতে পারেন (d+1)?
আর্নৌল্ড

হ্যাঁ, ধন্যবাদ! আমার প্রথম সংস্করণে সেগুলি ছিল, তারপরে আমি charএর পরিবর্তে গুলি ব্যবহার করার ধারণাটি দিয়েছিলাম এবং যখন আমি আমার প্রথম সংস্করণে ফিরে আসি, আমি একেবারে আবার ভুলে গিয়েছিলাম। ;)
অলিভিয়ার গ্রাগোয়ার

2

ভিবিএ (এক্সেল), আশ্চর্যজনক 322 244 বাইট সহ

হ্যাঁ, এবং আমি হেক্সাডেসিমালকে ভালবাসি । (এখনও কোনও ব্যঙ্গাত্মক ফন্ট নেই, তাই আমি আপাতত ইটালিক ব্যবহার করছি) কেউ চাইলে আমি মন্তব্য যুক্ত করব, তবে আমার মনে হয় এটি স্ব-বর্ণনামূলক। গল্ফিং হয়েছে।

Sub b(s)
For Each c In Split(Replace(s,"D",""),"B")
c=Application.Match(c,Array("I","A","O","U","II","IA","IO","IU","AI","AA","AO","AU","IO","OA","OO","OU"),0)
If Not IsError(c)Then d=d &c-1:If Len(d)=2Then e=e &Chr("&h"&d):d=""
Next
Debug.?e
End Sub

মন্তব্য সহ:

Sub b(s)
  'For each string between B's (Remove the D's first)
  For Each c In Split(Replace(s,"D",""),"B")
    'Get the index of the element in the array (Can cause error if empty)
    c = Application.Match (c,Array("I","A","O","U","II","IA","IO","IU","AI","AA","AO","AU","IO","OA","OO","OU"),0)
    'If c isn't an error
    If Not IsError(c) Then
      'Subtract 1 from c and add to d  --> Array index is 1 based
      d = d & (c-1)
      'If d is 2 characters
      If Len(d)=2 Then
        'Add the char from the hex value of d   --> &h forces Hex
        e = e & Chr("&h" & d)
        'Reset d
        d = ""
      End if
    End if
  Next
  'Print the output
  Debug.Print e
End Sub

আমি সত্যিই এটি ভিবি তাত্ক্ষণিক উইন্ডোতে প্রবেশ করার চেষ্টা করেছি, তবে এটি সেখানে কাজ করবে বলে মনে হচ্ছে না ... যা আমার মনে হয় 11 টি অক্ষরকে কাটাবে। আমি ম্যাচ স্টেটমেন্টটি বন্ধনীতেও রাখতে চেয়েছিলাম, তবে এটি প্রতিবার একটি নীরব ত্রুটির কারণ হয়ে থাকে। সহায়তা প্রশংসা করা হয়: ডি


পিপিসিজিতে আপনাকে স্বাগতম!
আর্নৌল্ড

ধন্যবাদ! আমি কিছুক্ষণের জন্য এখানে এসেছি, কিছুই কখনও পোস্ট করতে সক্ষম হইনি :)
seadoggie01

Array("I","A","O","U","II","IA","IO","IU","AI","AA","AO","AU","IO","OA","OO","OU")-> Split("I A O U II IA IO IU AI AA AO AU IO OA OO OU")এবং Not IsError(c)->IsError(c)=0
টেলর স্কট

1

Haxe , 228 বাইট

s->{var l=(u,i)->((i=u.charCodeAt(i))&8==8?0:1)|((i>>1)&2),p=s.split("B"),i=-1,q,o;[while((i+=2)<p.length)String.fromCharCode(l(q=p[i+1],o=q.length-1)+((o>1?l(q,0)+1:0)+((l(q=p[i],o=q.length-1)+o*(l(q,0)+1)*2)*4))*4)].join("");}

সেরা নয়, স্ট্যান্ডার্ড লাইব্রেরির ফাংশন নামগুলি খুব বড় :(

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


1

পাইথ, 35 বাইট

mCid16cm+4imx"IAOU"k.[N2d4tc-Q\D\B2

অক্ষরের তালিকা হিসাবে আউটপুট।
এখানে চেষ্টা করুন

ব্যাখ্যা

mCid16cm+4imx"IAOU"k.[N2d4tc-Q\D\B2
                          tc-Q\D\B   Get the vowels associated with each digit.
       m            .[N2d            Pad with a quote.
           mx"IAOU"k                 Find each character's position.
        +4i              4           Convert to base 4 and add 4.
      c                           2  Split the result into pairs.
mCid16                               Get the associated ASCII characters.

1

কাঠকয়লা , 36 বাইট

FS≡ιB⊞υ⁰D⊞υ×⁴⊕⊟υ⊞υ⁺⊟υ⊕⌕AOUι⭆⪪υ²℅↨ι¹⁶

এটি অনলাইন চেষ্টা করুন!লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

FS≡ι

প্রতিটি ইনপুট চরিত্রের উপর লুপ করুন এবং স্যুইচ করুন।

B⊞υ⁰

যদি এটি হয় Bতবে ধাক্কা0 পূর্বনির্ধারিত খালি লিস্টে।

D⊞υ×⁴⊕⊟υ

যদি এটি হয় Dতবে সর্বশেষ মানটি পপ করুন, এটিকে বাড়িয়ে দিন, গুণ করুন4 এবং আবার চাপ দিন।

⊞υ⁺⊟υ⊕⌕AOUι

অন্যথায়, স্ট্রিংয়ের মধ্যে সূচকটি সন্ধান করুন AOU , এটি বৃদ্ধি করুন এবং শেষ মানটিতে যুক্ত করুন।

⭆⪪υ²℅↨ι¹⁶

তালিকাটিকে জোড়া মানগুলিতে বিভক্ত করুন, বেস 16 হিসাবে ডিকোড করুন, এএসসিআইআইতে রূপান্তর করুন এবং স্পষ্টভাবে মুদ্রণ করুন।


1

পরিষ্কার , 145 134 বাইট

import StdEnv                   // import things like addition and comparison
?c=(743rem(toInt c))/16         // magical formula that maps ['IAOU'] to [0,1,2,3]
@[_,b,'D',d:t]=[?d+ ?b*4+4: @t] // convert B#D#
@[_,b:t]=[?b: @t]               // convert "B#"
@_=[]                           // handle base case
$[u,v:t]=[u<<4+v: $t]           // turn the digits into 2-digit numbers
$e=e                            // handle base case

toString o$o@                   // convert to string (make numbers (make digits))

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

ব্যাখ্যা:


1

পিএইচপি, 119 বাইট

foreach(explode(B,$argn)as$i=>$m)($v=$v*16+4*strpos(XIAO,$m[-3]?:B)+strpos(IAOU,$m[-1]?:B))?$i&1||print chr($v&=255):0;

বড় হাতের ইনপুট ধরে। পাইপ হিসাবে চালনা করুন-nR বা এটি অনলাইনে চেষ্টা করুন


পুরানো পিএইচপি জন্য পিএইচপি 7.1 প্রয়োজন , ব্যবহার করুন substr($m,-3,1)এবং substr($m,-1)পরিবর্তে $m[-<x>](+16 বাইট);
অল্প বয়স্ক পিএইচপি জন্য B, সতর্কতা বার্তা (+10 বাইট) এড়ানোর জন্য , রাখুন , XIAOএবং IAOUউদ্ধৃতিতে।



0

পিএইচপি, 163 বাইট

function f($s){$t=[I=>0,A=>1,O=>2,U=>3];for($q=explode(B,$s);$a=&$q[++$i];){$a=($a[1]?($t[$a[0]]+1)*4:0)+$t[$a[2*($a[1]==D)]];$i%2?:print(chr(($q[$i-1]<<4)+$a));}}

f(string $s)বিবাবো-এনকোডেড অক্ষরের উপযুক্ত স্ট্রিং সহ কল করুন এবং এটি ডিকোডড স্ট্রিংটি মুদ্রণ করবে।


0

পাইথন 3, 199 বাইট

import re
lambda s:''.join(eval(re.sub(r'(\d+), (\d+)',r'chr(16*\1+\2)',str(eval(s.replace('I','1').replace('A','2').replace('O','3').replace('U','4').replace('B',',-1+').replace('D','*4+')[1:])))))

সবচেয়ে কম নয় তবে লুপগুলি ছাড়াই।

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