স্ট্রিংটি ডিকোড করুন


41

এটি পিপিসিগিতে আমার প্রথম চ্যালেঞ্জ!

ইনপুট

দুটি পৃথক আসকি অক্ষর সমন্বিত একটি স্ট্রিং। উদাহরণ স্বরূপ

ABAABBAAAAAABBAAABAABBAABA

চ্যালেঞ্জ

কাজটি এই নিয়মগুলি অনুসরণ করে এই স্ট্রিংটি ডিকোড করা হয়:

  1. প্রথম দুটি অক্ষর এড়িয়ে যান
  2. বাকী স্ট্রিংটি 8 টি অক্ষরের গ্রুপে বিভক্ত করুন
  3. প্রতিটি গ্রুপে, প্রতিটি অক্ষরটি প্রতিস্থাপন করুন 0যদি সেই অক্ষরটি মূল স্ট্রিংয়ের প্রথম চরিত্রের সাথে একই রকম হয় এবং 1অন্যথায়
  4. এখন প্রতিটি গ্রুপ একটি বাইট উপস্থাপন করে। বাইট চর কোড থেকে প্রতিটি গ্রুপকে অক্ষরে রূপান্তর করুন
  5. সমস্ত অক্ষর প্রতিরোধ

উদাহরণ

উপরের স্ট্রিং ডিকোড করা যাক।

 AB  AABBAAAA  AABBAAAB  AABBAABA
 ^^     ^         ^         ^
 |      |         |         |
 |      \---------|---------/
 |                |
Skip      Convert to binary

লক্ষ্য করুন যে Aএটি মূল স্ট্রিংয়ের প্রথম অক্ষর এবং Bদ্বিতীয়টি। অতএব, প্রতিটি প্রতিস্থাপন Aসঙ্গে 0এবং প্রতিটি Bসঙ্গে 1। এখন আমরা প্রাপ্ত:

00110000  00110001  00110010

[0x30, 0x31, 0x32]বাইনারি হয় যা । এই মানগুলি ["0", "1", "2"]যথাক্রমে অক্ষরের প্রতিনিধিত্ব করে, সুতরাং চূড়ান্ত আউটপুট হওয়া উচিত 012

স্কোরিং

এটি অবশ্যই , যার অর্থ আপনার কোডটি যতটা সম্ভব সংক্ষিপ্ত করে তুলুন। স্কোরটি বাইটে পরিমাপ করা হয়।

সীমাবদ্ধতা এবং আইও ফর্ম্যাট

স্ট্যান্ডার্ড বিধি প্রয়োগ। এখানে কিছু অতিরিক্ত নিয়ম রয়েছে:

  • আপনি বৈধ ইনপুট ধরে নিতে পারেন
    • ইনপুট স্ট্রিংয়ে ঠিক দুটি পৃথক অক্ষর থাকে
    • প্রথম দুটি চরিত্র আলাদা
    • ইনপুট স্ট্রিংয়ের সর্বনিম্ন দৈর্ঘ্য 2 টি অক্ষর
    • দৈর্ঘ্য সর্বদা 2 টি মডেল 8 দেবে
  • আপনি ধরে নিতে পারেন স্ট্রিংটিতে সর্বদা কেবল মুদ্রণযোগ্য ASCII অক্ষর থাকবে
    • উভয় ইনপুট এবং ডিকোডেড স্ট্রিংয়ে
  • শীর্ষস্থানীয় এবং পশ্চাদগামী শ্বেতস্পেসের আউটপুটটিতে অনুমোদিত (সমস্ত কিছু যা মেলে /\s*/)

5
মানুষ বলতে হবে, প্রথম চ্যালেঞ্জের জন্য, এটি আমার দেখা আরও ভাল ফর্ম্যাটেড চ্যালেঞ্জগুলির মধ্যে একটি। একটি FYI হিসাবে, সম্প্রদায় স্যান্ডবক্স পোস্ট করার আগে প্রতিক্রিয়া জন্য দুর্দান্ত জায়গা যাতে আপনি জানতেন না এমন একটি নিয়মের জন্য এলোমেলোভাবে বোমা ফাটাবেন না।
যাদু অক্টোপাস উরন

@MagicOctopusUrn। ধন্যবাদ! স্যান্ডবক্স সম্পর্কে জানতাম না, আমি পরের বার সেখানে পোস্ট করব :)

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

1
দুর্দান্ত প্রথম চ্যালেঞ্জ! আরও কিছু পরীক্ষার মামলা ঝরঝরে হবে।
লিন

সত্যিই চমৎকার প্রথম চ্যালেঞ্জ। এই এক সাথে খেলা মজা ছিল।
এলপেড্রো

উত্তর:


13

ব্রেনফাক , 76 71 65 বাইট

-6 বাইট ধন্যবাদ নাইট্রডনকে!

,>>,,[>>++++++++[-[->+<]<<<<[->+>-<<]>>[[-]>>+<<]>[->++<],>>]<.<]

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

পাইথনকে মারধর করার বিষয়টি অদ্ভুত মনে হচ্ছে ...


1
যদি বিএফ-তে 8 টি কীওয়ার্ড তাদের পাইথন অংশ হিসাবে দীর্ঘ না হয়।
ব্যবহারকারী 202729

এটি সহায়তা করে যে বিএফ স্বয়ংক্রিয়ভাবে ইউনিকোডকে রূপান্তর করে।
লাস্টস্টার 700


8

স্ট্যাক্স , 15 11 বাইট

ó║¥U⌂½íèäöñ

এটি চালান এবং এটি স্ট্যাক্সএল.এক্সজে ডিবাগ করুন!

দ্রুত 'এন' নোংরা পদ্ধতির। এটির উন্নতি করার জন্য কাজ করা। এটি উন্নত!

প্যাকযুক্ত (13 বাইট) এবং ব্যাখ্যা

2:/8/{{[Im:bm
2:/              Split at index 2. Push head, then tail.
   8/            Split into length-8 segments.
     {      m    Map block over each segment:
      {  m         Map block over each character:
       [             Copy first two elements (below) in-place.
        I            Index of character in first two characters.
          :b       Convert from binary.
                 Implicit print as string.

আহহহ ... আমি জানতাম এটি আমাদের মারবে।
ম্যাজিক অক্টোপাস উরন

6

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

s=>s.replace(/./g,x=(c,i)=>(x=x*2|c==s[1],Buffer(i<3|i&7^1?0:[x])))

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

কিভাবে?

আমরা Bufferকনস্ট্রাক্টরের দুটি পৃথক বাক্য গঠন ব্যবহার করেছি :

  • Buffer([n])একমাত্র বাইট এন ধারণকারী একটি বাফার উত্পন্ন করে এবং এটি ASCII অক্ষরের সাথে জোর করা হয়। শুধুমাত্র এন এর 8 টি সর্বনিম্ন উল্লেখযোগ্য বিট বিবেচনা করা হয়।
  • Buffer(n)এন বাইটের একটি বাফার উত্পন্ন করে । অতএব, Buffer(0)একটি খালি বাফার তৈরি করে, যা একটি খালি স্ট্রিংয়ে জোর করে।

দ্রষ্টব্য: তারা উভয়ই সাম্প্রতিক নোড সংস্করণে অবচিত হয়েছে। Buffer.from([n])এবং Buffer.alloc(n)পরিবর্তে ব্যবহার করা উচিত।

মন্তব্য

s =>                   // given the input string s
  s.replace(/./g, x =  // initialize x to a non-numeric value (will be coerced to 0)
    (c, i) => (        // for each character c at position i in s:
      x = x * 2 |      //   shift x to the left
          c == s[1],   //   and append the new bit, based on the comparison of c with s[1]
      Buffer(          //   invoke the constructor of Buffer (see above):
        i < 3 |        //     if i is less than 3
        i & 7 ^ 1 ?    //     or i is not congruent to 1 modulo 8:
          0            //       replace c with an empty string
        :              //     else:
          [x]          //       replace c with the ASCII char. whose code is the LSB of x
      )                //   end of Buffer constructor
  ))                   // end of replace(); return the new string

6

bash, 59 58 52 বাইট

tr -t "$1" 01 <<<$1|cut -c3-|fold -8|sed 'i2i
aP'|dc

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

গরুর 6 টি বাইট সংরক্ষণের জন্য ধন্যবাদ

এই চ্যালেঞ্জটি একটি সিরিজ কোরিউটিলগুলি (এবং dcশেষে রূপান্তর এবং আউটপুটটি করতে) সাথে উল্লেখযোগ্যভাবে ভাল কাজ করে । প্রথমত, আমরা ব্যবহার করি

tr -t "$1" 01 <<<$1

ইনপুটতে দুটি অক্ষরকে শূন্য এবং অন্যগুলিতে প্রতিলিপি করতে। -tপতাকা, দ্বিতীয় দৈর্ঘ্য প্রথম যুক্তি কাটছাঁট করে তাই এই ইনপুট প্রথম দুটি অক্ষর transliterating করার হ্রাস 0এবং 1, যা আমরা কি চাই। তারপর,

cut -c3-

প্রথম দুটি অক্ষর সরিয়ে দেয় এবং

fold -8

প্রতি লাইনে 8 টি অক্ষরের আউটপুট দেয়। অবশেষে, sedকমান্ডটি প্রতিটি লাইনকে একটি dcস্নিপেটে পরিণত করে যা সংখ্যাটিকে বাইনারি হিসাবে পাঠ করে এবং সেই বাইটকে আউটপুট দেয়।


বাশ উত্তরটি দেখতে সর্বদা চমৎকার :) আপনি প্রতিটি লাইনকে ডিসি কোডে রূপান্তর করে ডিসি কোডিও সরল করতে সিড ব্যবহার করতে পারেন যা প্রতিটি অক্ষর ছাপিয়ে দেয় এবং তারপরে এটি ডিসি টিও.আরুন / ## এস0oszvj/… (এবং স্পেসের পরে cut -cঅপসারণ করা যেতে পারে)
ক্রিটসি লিথোস

6

একটি আমস্ট্রাদ সিপিসিতে জেড 80 মেশিন কোড, 32 31 30 বাইট

000001  0000  (9000)        ORG &9000
000002  9000  EB            EX DE, HL
000003  9001  46            LD B, (HL)
000004  9002  23            INC HL
000005  9003  5E            LD E, (HL)
000006  9004  23            INC HL
000007  9005  56            LD D, (HL)
000009  9006  1A            LD A, (DE)
000010  9007  05            DEC B
000011  9008  13            INC DE
000012  9009  4F            LD C, A
000014  900A                Light
000015  900A  26 01         LD H, &01
000016  900C                Last
000017  900C  13            INC DE
000018  900D  05            DEC B
000019  900E  C8            RET Z
000021  900F                Loop
000022  900F  1A            LD A, (DE)
000023  9010  B9            CP C
000024  9011  28 01         JR Z, Lable
000025  9013  37            SCF
000026  9014                Lable
000027  9014  ED 6A         ADC HL, HL
000028  9016  30 F4         JR NC, Last
000029  9018  7D            LD A, L
000030  9019  CD 5A BB      CALL &BB5A
000032  901C  18 EC         JR Light

কোডটি প্রতিটি চরিত্রটিকে 0মূল স্ট্রিংয়ের প্রথম চরিত্রের মতো একই সাথে এবং 1অন্যথায় আক্ষরিক অর্থে নির্দেশ দেয় এবং কোনও অক্ষর ইনপুট স্ট্রিংয়ের সাথে দ্বিতীয় চরিত্রের সাথে মেলে কিনা তা পরীক্ষা করে বিরক্ত করে না। এটি কেবলমাত্র প্রথম-চরিত্রের এবং প্রথম-চরিত্রের থেকে পৃথক হিসাবে পরীক্ষা করে।

আমি রেজিস্টার (Z80 মাত্র 7 সহজে ব্যবহারযোগ্য 8-বিট রেজিস্টার বিশ্রাম প্রয়োজন আর নির্দেশাবলী আছে,) তাই আমি করা পরিমাণ স্বল্প &01মধ্যে Hব্যবহার সহ Lহওয়া ASCII অক্ষর বিল্ড আপ (আমি শুধু বুঝতে পেরেছি এটা ইনিশিয়ালাইজ অপ্রয়োজনীয় L, এক বাইট সংরক্ষণ )। যখন Hক্যারি পতাকাটিতে উপচে পড়ে যায়, তখন অক্ষরটি Lআউটপুট হওয়ার জন্য প্রস্তুত। ভাগ্যক্রমে, একটি 16-বিট রয়েছে ADC( সি ডি অ্যারের সাথে অ্যাড ডি ) যা বাম-শিফ্ট নির্দেশের কাজ করে।

(DE)যে কোনও 8-বিট রেজিস্টারে পড়তে পারা যায় Aতবে (HL)এটিই পড়তে পারে, সুতরাং এটি কোনও আপত্তি ছিল যা ব্যবহার করা উচিত। আমি তুলনা করতে পারেনি (DE)সঙ্গে Cসরাসরি তাই আমি মধ্যে এক লোড করতে ছিল Aপ্রথম। লেবেলগুলি কেবল এলোমেলো শব্দ যা দিয়ে শুরু হয় L(একত্রকের প্রয়োজন)।

  • A একিউমুলেটর - একমাত্র নিবন্ধ যা তুলনা করতে পারে
  • Bকাউন্টার রেজিস্টার শিক্ষার নিমিত্তে DJNZ: D: ecrement ( B) এবং জে UMP যদি এন উপর জেড ERO । কোডটি পুনরায় সাজানোর মাধ্যমে আমি DJNZআরও কিছু কম বাইট দিয়ে কাজটি করতে সক্ষম হয়েছি
  • C ইনপুট স্ট্রিংয়ের প্রথম অক্ষর
  • D, বর্তমান ইনপুট চরিত্রের ঠিকানা EহিসাবেDE
  • H ক্যারি ট্রিগার (প্রতি 8 ম লুপ)
  • L আউটপুট অক্ষর নির্মিত হচ্ছে

এখানে চিত্র বর্ণনা লিখুন


6

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

¦¦Sk8ôJCçJ

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

-3 এমিনগা ধন্যবাদ।


Ù             # Unique letters, in order they appear.
 v            # For each...
  yN:         # Push letter and index, replace in input.
     }        # End loop.
      ¦¦      # Remove first x2.
        8ô    # Split into eighths.
          C   # Convert to integer.
           ç  # Convert to char.
            J # Join together entire result.

1
আপনি 01‡লুপের পরিবর্তে ব্যবহার করতে পারেন । সম্পাদনা: বা আরও উন্নত:¦¦Sk8ôJCçJ
এমিগানা


5

জে, 17 13 বাইট

u:_8#.\2}.1{=

-4 ফ্রাউনফ্রোগকে ধন্যবাদ

পুরাতন রুপ:

u:_8#.\2&({.i.}.)

ব্যাখ্যা:

u:_8#.\2}.1{=
            =  | Self classify, for each unique element x of y, compute x = y, element-wise
          1{   | Second row
       2}.     | Drop 2
  _8#.\        | Convert non-intersecting subarrays of length 8 from binary
u:             | Convert to characters

উদাহরণ:

   = 'ABAABBAAAAAABBAAABAABBAABA'
1 0 1 1 0 0 1 1 1 1 1 1 0 0 1 1 1 0 1 1 0 0 1 1 0 1
0 1 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 1 0 0 1 0

   2}.1{= 'ABAABBAAAAAABBAAABAABBAABA'
0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 1 0 0 1 0

   _8#.\2}.1{= 'ABAABBAAAAAABBAAABAABBAABA'
48 49 50

   u:_8#.\2}.1{= 'ABAABBAAAAAABBAAABAABBAABA'
012

1
2}.1{=4 বাইট সংরক্ষণ
ফ্রাউনফ্রোগ

ওহ আমার, বাঁধা ... আমি আর কোনও বাইট খুঁজে পাচ্ছি না।
ম্যাজিক অক্টোপাস উরন

1
@ ম্যাজিক অ্যাক্টপাস আসলে এটি একটি স্নিপেট, এটি [:শুরুতে হওয়া উচিত :)
ফ্রাউনফ্রগ


5

আর , 71 বাইট

function(s)intToUtf8(2^(7:0)%*%matrix((y=utf8ToInt(s))[-1:-2]==y[2],8))

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

অবাক গল্ফ!

প্রথমে স্ট্রিংটিকে ascii কোড-পয়েন্টে রূপান্তর করে utf8ToIntএটি সংরক্ষণ করে y। নেগেটিভ ইনডেক্সিং সহ প্রথম দুটি অক্ষর অপসারণ করা ব্যবহারের চেয়ে কম tail

অ্যারেটি y[-1:-2]==y[2]বিটগুলির সমান %*%(ম্যাট্রিক্স গুণ) যখন প্রয়োগ করা হয় তবে প্রথমে আমরা সেই অ্যারেটিকে পুনরায় আকার matrixদিয়ে nrow=8একটি লিনিয়ার অ্যারে থেকে বাইট গ্রুপিংয়ে রূপান্তর করি। ফলস্বরূপ, আমরা তারপরে 2 এর উপযুক্ত শক্তির সাথে ম্যাট্রিক্স গুণনটি ব্যবহার করে ascii কোড পয়েন্টগুলিতে 2^(7:0)রূপান্তর করতে পারি এবং তারপরে আমরা কোড পয়েন্টগুলি আবার স্ট্রিংয়ে রূপান্তর করি intToUtf8



4

পিএইচপি, 73 71 বাইট

while($s=substr($argn,-6+$i+=8,8))echo~chr(bindec(strtr($s,$argn,10)));

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

golfings:

  • সূচক শুরু করুন -6এবং পূর্ব-বর্ধিত দ্বারা8
  • strtrলম্বা প্যারামিটারে অতিরিক্ত অক্ষর উপেক্ষা করে এমন শোষণ করুন ( substrপ্রয়োজন নেই)
  • অনুবাদ করে 10এবং তারপরে উল্টানোর জন্য কোনও উদ্ধৃতি দরকার নেই -> -1 বাইট
  • ascii কোডের পরিবর্তে অক্ষরটি উল্টান -> ~শব্দের সীমানা হিসাবে ব্যবহার করে -> -1 বাইট।

3
কমপক্ষে আপনার ব্রেনফাকের সাথে মিল থাকা উচিত:for(;$s=substr($argn,2+8*$i++,8);)echo~chr(bindec(strtr($s,$argn,10)));
ক্রিস্টোফ

2
@ ক্রিসটফ আমি পছন্দ করি কিভাবে ব্রেইনফাক হঠাৎ যুক্তিসঙ্গত উত্তরের দৈর্ঘ্যের মান।
নাইট

4

পাইথ, 20 9 বাইট

CittxLQQ2

FryAmTheEggman কে 11 বাইট সংরক্ষণ করা হয়েছে।

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

ব্যাখ্যা

CittxLQQ2
    xLQQ    Find the index of each character in the string.
  tt        Exclude the first 2.
 i      2   Convert from binary.
C           Get the characters.

@ ফ্রাইআম দ্য এজম্যান ধন্যবাদ স্পষ্টতই আমি পাইথ সম্পর্কে এখনও অনেক কিছু শিখতে পেরেছি।
মনমোনিক

হাহাহ, তাই আমি কি! এটি একটি খুব জটিল গল্ফিং ভাষা। আমি আশা করি আপনি এতে গলফ চালিয়ে
যাবেন

3

রুবি , 82 79 বাইট

->s{s[2..-1].tr(s[0,2],'01').chars.each_slice(8).map{|s|s.join.to_i(2).chr}*''}

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


1
পিপিসিজিতে আপনাকে স্বাগতম! আমি দেখতে পাইনি ইতিমধ্যেই রুবি কোন উত্তর আগে আমি খনি পোস্ট করা হয়েছে যে, কিন্তু কিছু টিপিক্যাল golfing ঠাট আপনার পদক্ষেপ খুব ক্ষেত্রে প্রযোজ্য - যেমন, গত .joinদ্বারা প্রতিস্থাপিত হতে পারে *'', এবং s[0..1]দ্বারা s[0,2]
কিরিল এল।

3

জাপট, 11 বাইট

¤£bXÃò8 ®Íd

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


ব্যাখ্যা

¤               :Slice from the 3rd character
 £  Ã           :Map over each X
  bX            :  Get the first 0-based index of X in the input
     ò8         :Split to an array of strings of length 8
        ®       :Map
         Í      :  Convert from base-2 string to base-10 integer
          d     :  Get the character at that codepoint

s2শর্টকাটের খুব চালাক ব্যবহার , দুর্দান্ত।
নিত

3

পিএইচপি + জিএনইউ একাধিক যথার্থ, 63 61

<?=gmp_export(gmp_init(substr(strtr($argn,$argn,"01"),2),2));

দুঃখজনকভাবে GMP এক্সটেনশন ডিফল্ট সক্রিয় করা হয়নি (তবে প্রেরণ করা হয়েছে)।

এভাবে চালান:

echo "ABABABAAAAABABAAAAAABAABBAABAAAABBABAAABBB" | php -F a.php

<?=2 বাইট এবং সম্ভবত দিনটি সঞ্চয় করে। ;-)
তিতাস

টাইটাস হ্যাঁ তবে দুঃখজনকভাবে এটি কাজ করে না -R(আমি চেষ্টা করেছি)।
ক্রিস্টোফ

1
-Fপরিবর্তে চেষ্টা করুন
টাইটাস


3

জাভা 8, 143 142 141 বাইট

s->{char i=47;for(;++i<50;)s=s.replace(s.charAt(i%2),i);for(i=2;i<s.length();)System.out.print((char)Long.parseLong(s.substring(i,i+=8),2));}

-1 বাইট @ অলিভিগ্রগ্রোয়ারকে ধন্যবাদ ।

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

ব্যাখ্যা:

s->{                            // Method with String parameter and no return-type
  char i=47;                    //  Index character, starting at 47
  for(;++i<50;)                 //  Loop 2 times
    s.replace(s.charAt(i%2),i)  //   Replace first characters to 0, second characters to 1
  for(i=2;i<s.length();)        //  Loop `i` from 2 upwards over the String-length
    System.out.print(           //   Print:
     (char)                     //    As character:
      Long.parseLong(           //     Convert Binary-String to number
       s.substring(i,i+=8)      //      The substring in range [i,i+8),
      ,2));}


2

পাইথন 3 , 99 86 বাইট

lambda s:[chr(int(str(list(map(s.find,s[i:i+8])))[1::3],2))for i in range(2,len(s),8)]

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

মূলত পুরোপুরি সত্যই সত্যিকারের জন্য ASCII- কে ধন্যবাদ


দুর্দান্ত, তবে এটি এখানে ব্যর্থ

86, পাইথন 2 পদ্ধতি বন্দর । তালিকা হিসাবে ফিরে আসে তবে কমপক্ষে এটি কাজ করে
ASCII- কেবল

2

এপিএল + উইন, 30 বাইট

সূচক উত্স 0. স্ট্রিং ইনপুট জন্য অনুরোধ

⎕av[2⊥¨(+\0=8|⍳⍴b)⊂b←2↓s≠↑s←⎕]

ব্যাখ্যা:

s≠↑s←⎕ prompts for string and creates binary vector not equal to first character

b←2↓s drops first two elements of binary

(+\0=8|⍳⍴b)⊂ splits binary into groups of 8

2⊥¨ converts each group to decimal

⎕av[...] displays decoded characters

আমি ধরে নিয়েছি কোপাল-এভি এপিএল + উইন এর জন্য এএসসিআইআই-এর সাথে ইন-লাইন?
জাকারি

@ জ্যাচারý হ্যাঁ প্রথম 128 টি অক্ষরের জন্য। বিশেষ এপিএল অক্ষরগুলি বর্ধিত ASCII অক্ষর সেটটিতে কিছু অক্ষরকে প্রতিস্থাপন করে।
গ্রাহাম

2

লাল , 110 বাইট

func[s][t: 0 i: 128 foreach c next next s[if c = s/2[t: t + i]i: i / 2 if i = 0[prin to-char t t: 0 i: 128]]] 

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

ব্যাখ্যা:

একটি সরল সরল সমাধান, কোনও বিল্টিন নেই।

f: func [s] [                      ; s is the argument (string)
    t: 0                           ; total - initially 0
    i: 128                         ; powers of 2, initially 0
    b: s/2                         ; b is the second charachter
    foreach c next next s [        ; for each char in the input string after the 2nd one
        if c = b [t: t + i]        ; if it's equal to b than add the power of 2 to t
        i: i / 2                   ; previous power of 2
        if i = 0 [                 ; if it's 0 
            prin to-char t         ; convert t to character and print it
            t: 0                   ; set t to 0
            i: 128                 ; i to 128
        ]
    ]
] 

2

গুগল শিটস, 123 বাইট

=ArrayFormula(Join("",IfError(Char(Bin2Dec(Substitute(Substitute(Mid(A1,3+8*(Row(A:A)-1),8),Left(A1),0),Mid(A1,2,1),1))),""

ইনপুটটি ঘরে রয়েছে A1। গুগল স্বয়ংক্রিয়ভাবে )))সূত্রের শেষে যুক্ত হবে ।

ব্যাখ্যা:

  • Mid(A1,3+8*(Row(A:A)-1),8) তৃতীয়টি দিয়ে শুরু করে একসাথে 8 টি অক্ষরের অংশকে ধরে ফেলে।
  • Substitute(Mid(~),Left(A1),0) প্রথম অক্ষরের প্রতিটি উদাহরণকে 0 দিয়ে প্রতিস্থাপন করে।
  • Substitute(Substitute(~),Mid(A1,2,1),1) 1 এর সাথে দ্বিতীয় চরিত্রটি প্রতিস্থাপন করে।
  • Char(Bin2Dec(Substitute(~))) দশকে দশমিক এবং তারপরে ASCII তে রূপান্তর করে।
  • IfError(Char(~,""))সমস্ত ত্রুটিগুলি সংশোধন করে যা সত্যের তুলনায় আমাদের থেকে অনেক বেশি মান Row(A:A)ফিরিয়ে দেয় যা আমাদের শূন্যের অনেকগুলি মান এবং ত্রুটিগুলি দেয়।Bin2DecChar
  • ArrayFormula(Join("",IfError(~)))সমস্ত Charফলাফলের সাথে একত্রিত ArrayFormulaহয় এবং এটিই Row(A:A)প্রত্যাশাকে প্রথম মানটির পরিবর্তে মানগুলির একটি অ্যারে করে তোলে ।

2

রুবি , 61 42 বাইট

-19 বাইট ধন্যবাদ benj2240

->s{[s[2..-1].tr(s[0,2],"01")].pack("B*")}

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


packঅনুপ্রাণিত পছন্দ, তবে এই মুহুর্তে আপনি দীর্ঘ পথ ঘুরে দেখছেন। এটি আপনার জন্য আরও কাজ করতে পারে।
বেনজ 2240

1
হ্যাঁ, এটি আমার দিক থেকে মোটামুটি ব্লক ছিল ...
কিরিল এল।



2

পাইথন 2 , 88 বাইট

i=input()
f=''.join('10'[x==i[0]]for x in i[2:])
while f:print chr(int(f[:8],2));f=f[8:]

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

সংক্ষিপ্ততম নয় - কেবল একটি বিকল্প উপায়।

নিম্নলিখিত সংস্করণটি 98 বাইটের জন্য এক লাইনে আউটপুট প্রিন্ট করে যদিও নিয়ম অনুসারে হোয়াইটস্পেসকে অনুসরণ করার অনুমতি দেওয়া হয় .:

i=input();f=''.join('10'[x==i[0]]for x in i[2:]);o=""
while f:o+=chr(int(f[:8],2));f=f[8:]
print o

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


চূড়ান্ত আউটপুট তিনটি নয়, এক লাইনে হওয়া উচিত।
idrougge

ওপি থেকে: "আউটপুটে (শীর্ষস্থানীয় এবং পেছনের শ্বেত স্পেসের অনুমতি দেওয়া হয় (/ \ s * /) এর সাথে মেলে এমন সমস্ত কিছুই)"। নিউলাইন মিলছে /\s*/
এলপেড্রো

1
দুঃখিত, আমি রেজেক্স স্বরলিপি সম্পর্কে যথেষ্ট পারদর্শী নই। : /
idrougge

কেউই আমি নই তবে আমি এটি নিশ্চিত
করেই গুগলড করেছি




1

হাস্কেল , 124 105 93 বাইট

f(x:_:y)=fromEnum.(/=x)<$>y
g[]=[]
g s=(toEnum.sum.zipWith((*).(2^))[7,6..0])s:g(drop 8s)
g.f

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

fস্ট্রিংটিকে প্রতিটি অক্ষরকে প্রথমটির সাথে তুলনা করে বিটগুলির তালিকায় রূপান্তর করে, গুলিটিকে Boolজিরো এবং এর সাথে রূপান্তর করে fromEnumgএই তালিকাটিকে 8 টি গ্রুপে বিভক্ত করে, দশমিক রূপে রূপান্তর করে এবং ফলাফল সংখ্যার মানটিকে একটি হিসাবে গ্রহণ করে Enum, যা Charএকটি উদাহরণ।

পরিবর্তন করুন:

  • -19 বাইটস @ লাইকোনিকে ধন্যবাদ (আমদানি সরিয়ে, mapফাংশনে এম্বেড করা)
  • @ লিনের উত্তরে অনুপ্রাণিত -১২ বাইট ( takeসংক্ষিপ্ত তালিকার সাথে জিপ করে মুক্তি দেওয়া )

2
আপনি এর toEnumপরিবর্তে ব্যবহার করতে chrএবং আমদানি বাদ দিতে পারেন । এছাড়াও mapঅন্তর্ভুক্ত করা যেতে পারে g। এর মধ্যে স্থানটি 8 sসরানো যেতে পারে।
লাইকনি

1

ফোরথ (গফার্থ) , 83 বাইট

: f over c@ 0 rot 2 do 2* over i 4 pick + c@ <> - i 8 mod 1 = if emit 0 then loop ;

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

ইনপুট স্ট্যান্ডআউটে মুদ্রিত একটি স্ট্যান্ডার্ড ফোর স্ট্রিং (ঠিকানা এবং দৈর্ঘ্য) আউটপুট

ব্যাখ্যা

over c@          \ get the value of the first character in the string
0 rot            \ add a starting "byte" value of 0 and put the length on top of the stack
2 do             \ start a loop from 2 to length-1
   2*            \ multiply the current byte value by 2 (shift "bits" left one)
   over          \ copy the reference char to the top of the stack
   i 4 pick +    \ add the index and the starting address to get address of the current char
   c@ <>         \ get the char at the address and check if not equal to the reference char
   -             \ subtract the value from our bit count, -1 is default "true" value in forth
   i 8 mod 1 =   \ check if we are at the last bit in a byte
   if            \ if we are
      emit 0     \ print the character and start our new byte at 0
   then          \ and end the if statement
loop             \ end the loop
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.