ব্যাকহেন্ডেড কমপ্লিমেন্টস


13

এই চ্যালেঞ্জটি আমার প্রথম রহস্যময় ভাষা উদযাপনে তৈরি হয়েছে, ব্যাকহ্যান্ড !

ব্যাকহ্যান্ড একটি অ-রৈখিক পয়েন্টার প্রবাহ সহ একটি মাত্রিক ভাষা। পয়েন্টারটি একবারে তিনটি পদক্ষেপ সরায়, কেবলমাত্র প্রতিটি তৃতীয় নির্দেশকে সম্পাদন করে।

প্রোগ্রামটি 1..1..+..O..@সমাপ্তির আগে 1 + 1 এবং আউটপুট 2 যোগ করবে। মধ্যবর্তী নির্দেশাবলী এড়ানো হয়, 1<>1()+{}O[]@ঠিক একই প্রোগ্রাম।

যখন পয়েন্টারটি টেপের সমাপ্তি ছাড়তে চলেছে তখন এটি পরিবর্তে দিকটি বিপরীত করে এবং অন্যভাবে পদক্ষেপ নেয়, 1.@1.O+.একই প্রোগ্রামটি। মনে রাখবেন এটি একবারে শেষ নির্দেশনা গণনা করে। এটি আমাদের বেশিরভাগ রৈখিক প্রোগ্রামগুলি সঙ্কুচিত করতে দেয়, যেমন as1O+1@

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

তবে অপেক্ষা করুন , এতটা না! যখন আপনার প্রোগ্রামটি নিজেই এই ফ্যাশনে ব্যাখ্যা করা হয়, ফলস্বরূপ কোডটি নীচের একটিটির আউটপুট দেয়:

  • (Mostly) works
  • Turing complete
  • 'Recreational' (উদ্ধৃতিগুলি উভয় 'বা না হতে পারে ")
  • Perfectly okay
  • Only a few bugs

উদাহরণস্বরূপ, যদি আপনার উত্স কোড হয় code 2 backhandতবে প্রোগ্রামটির এই বাক্যগুলির মধ্যে ce cankb od2ahdএকটি আউটপুট হওয়া উচিত।

পরীক্ষার কেস:

"1  1  +  O  @"  -> "11+O@"
"1O+1@"          -> "11+O@"
"HoreWll dlo!"   -> "Hello World!"
"abcdefghijklmnopqrstuvwxyz" -> "adgjmpsvyxurolifcbehknqtwz"
"0123456789"     -> "0369"  (not "0369630369")
"@"              -> "@"
"io"             -> "io"  (Cat program in Backhand)
"!?O"            -> "!?O" (Outputs random bits forever in Backhand)
"---!---!"       -> "-!-----!"

এবং একটি রেফারেন্স প্রোগ্রাম লিখিত আছে অবশ্যই, ব্যাকহ্যান্ড ( এটি কিছুটা বগি হতে পারে ঠিক আছে, আমি মনে করি এটি ঠিক করেছি)।

নিয়ম।

  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ
  • প্রথম প্রোগ্রামটির ইনপুটটিতে কেবল প্রিন্টযোগ্য এএসসিআইআই এবং নিউলাইনগুলি (এটি বাইটস 0x20- 0x7Eপাশাপাশি 0x0A) থাকবে
  • আপনার দ্বিতীয় প্রোগ্রামটি আপনার প্রথম থেকে বাইট বা UTF-8 টি অক্ষর দ্বারা রূপান্তরিত হয়েছে তা চয়ন করতে পারেন।
  • দ্বিতীয় প্রোগ্রাম:
    • কেস কিছু যায় আসে না , তাই pErFectLy OKayআপনি চাইলে আপনার আউটপুট হতে পারে ।
    • যেকোন পরিমাণ ট্রেলিং / শীর্ষস্থানীয় শ্বেতস্পেস (নিউলাইন, ট্যাব, স্পেসস) ঠিক আছে।
    • দ্বিতীয় প্রোগ্রামটি প্রথমটির মতো একই ভাষা হওয়া উচিত, যদিও অগত্যা একই ফর্ম্যাটটি নয় (প্রোগ্রাম / ফাংশন)
    • অতিরিক্ত বাক্যাংশগুলিতে মন্তব্যগুলির পরামর্শগুলি অন্তর্ভুক্ত করে আমি খুশি (যতক্ষণ না সেগুলি খুব কম না হয়)
  • যেহেতু এটি , আপনার লক্ষ্য আপনার ভাষার সংক্ষিপ্ত উত্তর পাওয়া!
  • দুই সপ্তাহের মধ্যে, আমি সংক্ষিপ্ততম ব্যাকহ্যান্ড উত্তরের জন্য 200 বন্টি দেব।


1
প্রস্তাবিত টেস্টকেস: "---!---!"(বা যে কোনও স্ট্রিং যেখানে শেষ চরিত্রটি একাধিকবার প্রদর্শিত হবে)
টিফিল্ড

যখন আপনার প্রোগ্রামটি নিজেই এই ফ্যাশনে ব্যাখ্যা করা হয় - কোনটি দ্বারা ব্যাখ্যা করা হয়?
এনজিএম

4
সুতরাং আসুন আমি বলি যে আমি একটি আর প্রোগ্রাম লিখছি (কারণ এটি আমি প্রায় সব কিছু করি)) আমার আর প্রোগ্রামটিকে ব্যাকহ্যান্ডযুক্ত কোডটিকে ব্যাকহ্যান্ড নির্দেশাবলী অনুসারে রূপান্তর করতে হবে। উপরন্তু, আমার আর প্রোগ্রাম যখন মধ্যে নিজেই মধ্যে ইনপুট পরিণত হয়েছে আরেকটি আর প্রোগ্রাম যে স্ট্রিং উপর আউটপুট যখন চালানো (রাঃ ক্ষেত্রে, একটি r- ব্যাখ্যাকারী ব্যাখ্যা)। এটা কি সঠিক?
এনজিএম

1

উত্তর:


4

আর , 187 বাইট

 # c  a  t  (  '  P  e  r  f  e  c  t  l  y     o  k  a  y  '  )  #
g=function(x,n=nchar(x),i=c(1:n,(n-1):1,2:n),j=seq(1,3*n-2,3),k=i[j][1:which(i[j]==n)[1]])cat(substring(x,k,k),sep='') 

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

শেষে একক স্থানের প্রয়োজন হয় যাতে \nপ্রোগ্রামটি নিজেরাই প্রয়োগ করা হলে কখনই মুদ্রিত হয় না।

ব্যাখ্যা

অংশ 1:

Ungolfed:

 # c  a  t  (  '  P  e  r  f  e  c  t  l  y     o  k  a  y  '  )  #
g <- function(x) {
  n <- nchar(x)                      # number of characters in string
  i <- c(1:n, (n - 1):1, 2:n)        # index: 1 to n, n-1 back to 1, 2 to n
  j <- seq(1, 3 * n - 2, 3)          # every third element of i
  k <- i[j][1:which(i[j] == n)[1]]   # the elements of i at indices j, up to the first appearance of n
  cat(substring(x, k, k), sep = "")  # extract from x the characters at indices k, and paste them together
}

অংশ ২:

পুরো প্রোগ্রামটিতে কাজ করে ফাংশনটি এটিকে উত্পাদন করে:

cat('Perfectly okay')#=ni(ncr)=1,-:2)=q,n,,i]:i(j=[]assi(k)e' 


3

পার্ল 6 , 101 86 বাইট

বাহ, -২৫ বাইটস প্রথম প্রোগ্রামকে তাত্পর্যপূর্ণভাবে উন্নতি করে নয়েলহোফকে ধন্যবাদ জানায়

##
{S:g/(.).?.?/$0/}o{.comb%3-1??.chop~.flip~S/.//!!$_} #
#}{ "" s( kM ro os wt  l )y.

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

আমি আশা করছি আরও লোকেরা এইভাবে রিবাউন্ডের সদ্ব্যবহার করবে। ব্যাকহ্যান্ডেড প্রোগ্রামটি হ'ল

#{g.?//{o%1.o.iS/!}
{"(Mostly) works"}#_!.~l~h?-bco0?.(:
#S/).$}.m3?cpfp//$ #        .

যা শুধু মন্তব্য {"(Mostly) works"}


3

05AB1E , 43 40 38 37 বাইট

-2 বাইট (40 → 38) @ এমিগানাকে ধন্যবাদ ।

„€€Ã€„Ѐ€µ'€Ý)\[ûDN3*©è  ?®IgD#<ÖNĀ*#

এটি অনলাইনে চেষ্টা করুন । (দ্রষ্টব্য: থেকে ভাষা পরিবর্তন করুন 05AB1E (লেগাসি) থেকে 05AB1E পরীক্ষা ক্ষেত্রে জন্য 0123456789উত্তরাধিকার সংস্করণ দ্রুত, কিন্তু এটা বসানো শূন্যগুলি সঙ্গে সংখ্যা ইনপুট জন্য ভুল ফলাফল দেখায়।।)

'ব্যাকহ্যান্ডেড' প্রোগ্রামটি হয়ে উঠবে:

„ÃеÝ[N© I#N#

যা perfectly okayসম্পূর্ণ ছোট হাতের আউটপুট হবে ।

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

ব্যাখ্যা বেস প্রোগ্রাম:

„€€Ã€           # Push the string "the pointed"
„Ѐ€µ           # Push the string "dm one"
'€Ý            '# Push the string "been"
     )          # Wrap the entire stack in a list
      \         # And remove that list from the stack again
[               # Start an infinite loop
 û              #  Palindromize the string at the top of the stack
                #   i.e. "1O+1@" becomes "1O+1@1+O1" the first iteration,
                #        and "1O+1@1+O1O+1@1+O1" the next iteration, etc.
  D             #  Duplicate the palindromized string
 N3*            #  0-indexed index of the loop multiplied by 3
    ©           #  Save it in the register (without popping)
     è?         #  Index into the string and print the character
  Ig            #  If the length of the input is exactly 1:
     #          #   Stop the infinite loop
 ®  D         #  If the value from the register is divisible by the length - 1
          *     #  And
        NĀ      #  The 0-indexed index of the loop is NOT 0:
           #    #   Stop the infinite loop

ব্যাখ্যা 'ব্যাকহ্যান্ডেড' প্রোগ্রাম:

„ÃÐµÝ           # Push the string "perfectly okay"
     [          # Start an infinite loop
      N©        #  Push the index, and store it in the register (without popping)
          I     #  Push the input (none given, so nothing happens)
           #    #  If the top of the stack is 1, stop the infinite loop
            N   #  Push the index again
             #  #  If the top of the stack is 1, stop the infinite loop

ধাপে ধাপে নিম্নলিখিতটি ঘটে:

  1. „ÃеÝ: স্ট্যাক হয়ে যায় ["perfectly okay"]
  2. [: অসীম লুপ শুরু করুন
  3. (প্রথম লুপ পুনরাবৃত্তি) : স্ট্যাক হয়ে যায়["perfectly okay", 0]
  4. (প্রথম লুপ পুনরাবৃত্তি) I: ["perfectly okay", 0]কোনও ইনপুট না থাকায় স্ট্যাক রয়ে গেছে
  5. (প্রথম লুপ পুনরাবৃত্তি) #: স্ট্যাক হয়ে যায় ["perfectly okay"]এবং লুপটি অবিরত থাকে
  6. (প্রথম লুপ পুনরাবৃত্তি) N: স্ট্যাক হয়ে যায়["perfectly okay", 0]
  7. (প্রথম লুপ পুনরাবৃত্তি) #: স্ট্যাক হয়ে যায় ["perfectly okay"]এবং লুপটি অবিরত থাকে
  8. (দ্বিতীয় লুপ পুনরাবৃত্তি) : স্ট্যাক হয়ে যায়["perfectly okay", 1]
  9. (দ্বিতীয় লুপ পুনরাবৃত্তি) I: ["perfectly okay", 1]কোনও ইনপুট না থাকায় স্ট্যাক রয়ে গেছে
  10. (দ্বিতীয় লুপ পুনরাবৃত্তি) #: স্ট্যাক হয়ে যায় ["perfectly okay"]এবং 1(সত্যবাদী) এর কারণে লুপটি ভেঙে যায়
  11. স্পষ্টভাবে স্ট্যাকের শীর্ষস্থানীয়টি STDOUT এ মুদ্রণ করে: perfectly okay

টিআইও সক্ষম হওয়াতে ডিবাগার দিয়ে এখানে পদক্ষেপগুলি দেখুন।

আমার এই 05AB1E ডগা দেখুন (অধ্যায় কিভাবে অভিধান ব্যবহার করতে হয়? ) কেন বুঝতে „€€Ã€„Ѐ€µ'€Ýহয় the pointed, dm oneএবং beenএবং „ÃеÝহয় perfectly okay


পুরানো 38-বাইট সংস্করণ:

„€€Ã€„Ѐ€µ'€Ý)\ giqë¬?[ûDN>3*©è?®Ig<Ö#

এটি অনলাইনে চেষ্টা করুন । (দ্রষ্টব্য: থেকে ভাষা পরিবর্তন করুন 05AB1E (লেগাসি) থেকে 05AB1E পরীক্ষার বিষয় জন্য 0123456789এবং @উত্তরাধিকার সংস্করণ দ্রুত, কিন্তু এটা বসানো শূন্যগুলি বা একক-অক্ষর ইনপুট সঙ্গে সংখ্যা ইনপুট জন্য ভুল ফলাফল দেখায়।।)

'ব্যাকহ্যান্ডেড' প্রোগ্রামটি হয়ে উঠবে:

„ÃÐµÝ q?D3èIÖ<®©>û¬i\€€„€€€€')gë[N*?g#

(যেখানে qপ্রোগ্রামটি প্রস্থান করে এবং সমস্ত কিছুতে কোনও বিকল্প নেই)

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


অবশ্যই /`\` হওয়া উচিত?
এমিগানা

1
সংরক্ষণাগুলির N>3*©পরিবর্তে 2 ব্যবহার করে XUআমারও মনে হয় লুপে সমস্ত প্রিন্টিংয়ের কোনও উপায় থাকা উচিত যা আরও বেশি বাইট সংরক্ষণ করতে পারে।
এমিগানা

@ এমিগনা হ্যাঁ, / হওয়া উচিত ছিল \ .. এবং -২ এর জন্য ধন্যবাদ। আমি সত্যিই এটি আরও গল্ফ করা যেতে পারে অনুভূতি আছে। এটি ফিরে বাউন্স সহ প্রতিটি তৃতীয় মানের মুদ্রণের বেস কার্যকারিতা জন্য অত্যধিক দীর্ঘ বলে মনে হচ্ছে।
কেভিন ক্রুজসসেন

@ এমিগনা খুব কুরুচিপূর্ণ তবে [ûDN3*©è?®IgD#<ÖNĀ*#এটি যদি আগে-আগে হয় তবে এটি লুপযুক্ত ইফ-অন্যের চেয়ে 2 বাইট ছোট। দুর্ভাগ্যক্রমে, আমাদের এখনও qব্যাকহেন্ডেড প্রোগ্রামের প্রয়োজন, তাই এটি 38 বাইটও হবে । তবে আমার অনুভূতি আছে যে একসাথে একক-চর ইনপুট, সূচক 0 এবং দৈর্ঘ্য -১ এর একই সাথে একযোগে
বিভাজনকে আরও


1

জাভাস্ক্রিপ্ট (ES6), 130 বাইট

প্রাথমিক প্রচেষ্টা। খুব সন্তোষজনক নয়।

f  =/*>  "  P  e  r  f  e  c  t  l  y     o  k  a*/y=>""+/**/(g=p=>(c=y[p])?m++%3?g(p+d):y[p+1]?c+g(p+d):c:g(p-d-d,d=-d))(m=0,d=1)

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

কোডটি নিজে থেকে প্রক্রিয়া করা হয়, নিম্নলিখিত অক্ষরগুলি বিচ্ছিন্ন করা হয়:

f  =/*>  "  P  e  r  f  e  c  t  l  y     o  k  a*/y=>""+/**/…
^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^

যা দেয়:

f=>"Perfectly okay"//…

1

জেলি , 34 বাইট

JŒḄȧ`ȯ“”NNŒḄ2¡3s@”]ȧZỴḢḢ»`Qị⁸ȧ@11€

অক্ষরগুলির একটি তালিকা গ্রহণ করে একটি সম্পূর্ণ প্রোগ্রাম বা মোনাডিক লিঙ্ক যা প্রিন্ট করে বা ফলন করে (যথাক্রমে)।

এটি অনলাইন চেষ্টা করুন! অথবা পরীক্ষা-স্যুটটি দেখুন

ব্যাকহ্যান্ড-পার্সড কোডটি তখন:

Jȧ“N2s]Ỵ»ị@€

একটি সম্পূর্ণ প্রোগ্রাম বা নীলাদিক লিঙ্ক মুদ্রণ বা ফলন (যথাক্রমে) টিউরিং সম্পূর্ণ

কিভাবে?

JŒḄȧ`ȯ“”NNŒḄ2¡3s@”]ȧZỴḢḢ»`Qị⁸ȧ@11€ - Main Link: list of characters   e.g. 'abcd'
J                                  - range of length                      [1,2,3,4]
 ŒḄ                                - bounce                         [1,2,3,4,3,2,1]
    `                              - use as both arguments of:
   ȧ                               -   logical AND [x AND x = x]
      “”                           - literal empty list of characters
     ȯ                             - logical OR [when x is truthy: x OR y = x]
        N                          - negate  }
         N                         - negate  } together a no-op
             ¡                     - repeat this...
            2                      - ... two times:
          ŒḄ                       -   bounce                       [1,2,3,4,3,2,1,2,3,4,3,2,1,2,3,4,3,2,1,2,3,4,3,2,1]
              3                    - literal three
               s@                  - split into (threes)            [[1,2,3],[4,3,2],[1,2,3],[4,3,2],[1,2,3],[4,3,2],[1,2,3],[4,3,2],[1]]
                 ”]                - literal ']' character
                   ȧ               - logical AND [']' is truthy so a no-op]
                    Z              - transpose                      [[1,4,1,4,1,4,1,4,1],[2,3,2,3,2,3,2,3],[3,2,3,2,3,2,3,2]]
                     Ỵ             - split at new lines [no newline characters exist in this list of ints so effectively wrap in a list]
                      Ḣ            - head [undo that wrap]
                       Ḣ           - head [get the first of the transposed split indices]
                                   -                                [1,4,1,4,1,4,1,4,1]
                         `         - use as both arguments of:
                        »          -   maximum [max(x, x) = x]
                          Q        - de-duplicate                   [1,4]
                            ⁸      - chain's left argument (the input)
                           ị       - index into it                  "ad"
                               11€ - literal eleven for €ach (of input)
                             ȧ@    - logical AND with swapped args [[11,11,...,11] is truthy]
                                   -                                "ad"
                                   - (as a full program implicit print)

ব্যাকহ্যান্ড-পার্সড কোডটি তখন:

Jȧ“N2s]Ỵ»ị@€ - Main Link: no arguments
J            - range of length (of an implicit 0, treated as [0]) -> [1]
  “N2s]Ỵ»    - compression of "Turing complete"
 ȧ           - logical AND [[1] is truthy] -> "Turing complete"
           € - for each character in the list of characters:
          @  -   with swapped arguments (an implicit 0 is on the right, so f(0, "Turing complete"))
         ị   -     index into
             - (as a full program implicit print)

1

রুনিক এনেক্যান্টমেন্টস , 294 বাইট

>; "  O  n  l  y     a     F  e  w     B  u  g  s  "  @
                                  /{\!?   =ka:{;!?=ka\
v   R                         R {{R:ak=?!\:$:'@=?!;{:/
v/?!/:$:'@=?!;}:ak= ?!;}:ak=?!\}\        }
y\=ka:L                      }{ /        }
\iuakrU      y<<              !  }}}L {{{L

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

সঙ্কুচিত (এবং প্রায় পঠনযোগ্য) সংস্করণ:

>; "  O  n  l  y     a     F  e  w     B  u  g  s  "  @
                               ;           /                                 \
/y<<         R                         R {{R:ak=?!\:$:'@=?!;{:ak=?!\{:ak=?!\{/
RiuakrR:ak=?!/:$:'@=?!;}:ak= ?!/}:ak=?!\}\        }                ;
\y<<  U                               }{ /        }
      \                                !          L                     }}}L

অনলাইনে চেষ্টা করে দেখুন!

এটি ... আমি যতটা কাছাকাছি পেতে পারি প্রায় কাছাকাছি।

এটিকে আরও সংকুচিত করার জন্য বিভিন্ন স্টুপের সাথে সংঘর্ষ না করে বিভিন্ন লুপের অদলবদল পয়েন্টগুলি পরিচালনা করার উপায় খুঁজে বের করতে হবে। প্রথম লাইনটি (যা কেবলমাত্র অংশটি নিজের কাছে ইনপুট হিসাবে পাস করতে হবে) আলাদা থাকার প্রয়োজন: সম্পূর্ণ স্ট্রিংটি সমস্যা তৈরি না করেই দ্বিতীয় লাইনে ফিট করতে পারে না ( _প্রয়োজনীয় জায়গাগুলির জন্য):

Needed string:
>; "  O  n  l  y  _  a  _  F  e  w  _  B  u  g  s
Best fit:
>; "  O  n  l  y  _  a  _  F  e  w/{_\!?   =ka:{;!?=ka\
Collision:                             ↑

যে ?থেকে দূরে সরানো যাবে না !হয় নিজেই থেকে দূরে সরানো যাবে না \এবং অনুমোদিত বার্তা কোনটাই এই অবস্থানে এই তিনটি অক্ষরের কোনো অনুমতি দেয়।

বিকল্পটি হ'ল প্রবাহ পুনর্নির্দেশটি ব্যবহার করা, তবে এটি নিম্ন লাইনে একটি সমস্যা বাড়ে:

Last usable character:
            ↓
>"Only a Few Bugs"@
/.../
ur         }{L
              ↑
Earliest available free space:

যেহেতু আমাদের মূল প্রোগ্রামটিতে লুপ সুইচ এড়াতে হবে।

জ্ঞাত সমস্যা:

  • অত্যন্ত বড় ইনপুট। রুনিকের আইপি স্ট্যাকের সীমাবদ্ধতার কারণে খুব বড় ইনপুট স্ট্রিংগুলি ধাক্কা দেওয়ার ফলে আইপিটি শেষ হওয়ার আগেই শেষ হয়ে যাবে। অতিরিক্ত আইপি তৈরি করে এবং সেগুলিকে মার্জ করে এটিকে হ্রাস করা যেতে পারে (উদাহরণস্বরূপ, এটি পরিচালনা করে abcdefghijklmnopqrstuvwxyzতবে তার নিজস্ব উত্সের সম্পূর্ণতা নয়)। এবং কতগুলি মার্জ ঘটে তা নির্বিশেষে একটি সীমা রয়েছে। যেমনটি হয় তেমন 58 বাইট পর্যন্ত ইনপুট হ্যান্ডেল করতে পারে (অতিরিক্তভাবে, আইপি সংখ্যা বাড়ানোর জন্য কীভাবে আরও স্থান ব্যবহার না করে মার্জ করতে হবে তা নির্ধারণের প্রয়োজন)। লুপ-রিটার্ন লাইনে আরও দুটি আইপি এন্ট্রি ফিট করতে পারে ( সঙ্কুচিত সংস্করণে Uশুরু হওয়া লাইনের ডানদিকে \y<<, বা y<<সংকোচিত সংস্করণে উপরের লাইনের উপরে একটি বাম ) ইনপুট সর্বাধিক দৈর্ঘ্য 78৮ এ বাড়িয়ে তুলতে পারে।
  • স্পেসগুলির সাথে ইনপুট স্ট্রিংগুলিতে ফাঁকা স্থানগুলি পালাতে হবে (উদাঃ 1\ \ 1\ \ +\ \ O\ \ @)। এটি ভাষার ইনপুট পার্সিংয়ের একটি সীমাবদ্ধতা।
  • যে সংখ্যক 0গুলি দিয়ে শুরু হওয়া পূর্ণসংখ্যার মতো দেখতে স্ট্রিংগুলি যুক্ত ইনপুট সরবরাহ করতে পারে না (স্ট্যাকের কোনও সংখ্যায় পরিণত হওয়ার পরে, এটি 0হারিয়ে যায়)। আবার, ভাষার ইনপুট পার্সিংয়ের সীমাবদ্ধতা।

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

এণ্ট্রি:

  1. 4 নির্দেশ পয়েন্টার একত্রিত করুন
  2. ইনপুট পড়ুন, অক্ষরগুলি ভাঙ্গুন, একটি নতুন লাইন যুক্ত করুন, বিপরীত করুন, প্রধান লুপটি প্রবেশ করুন enter

প্রধান লুপ (যে কোনও কিছু স্ট্যাককে পপ করে তোলে তার আগে ডুপ) হয়:

  1. স্ট্যাকের শীর্ষ মুদ্রণ করুন
  2. নতুন লাইনের সাথে তুলনা করুন। সত্য: লুপগুলি স্যুইচ করুন এবং স্ট্যাক বামদিকে দু'বার ঘোরান।
  3. তুলনা @। সত্য: সমাপ্ত (সমাপ্ত কমান্ড কার্যকর করা হয়েছে)
  4. স্ট্যাক ডানদিকে ঘোরান
  5. নতুন লাইনের সাথে তুলনা করুন। সত্য: সমাপ্ত (সর্বনিম্ন কমান্ড কার্যকর করা হয়েছে)
  6. স্ট্যাক ডানদিকে ঘোরান
  7. নতুন লাইনের সাথে তুলনা করুন। সত্য: লুপগুলি স্যুইচ করুন এবং স্ট্যাক বামদিকে তিনবার ঘোরান।
  8. স্ট্যাক ডানদিকে ঘোরান
  9. লুপের শীর্ষে ফিরে আসুন

মাধ্যমিক লুপ:

  • মূল লুপের মতো, কেবল বামদিকে ঘোরান right

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

আপনার দ্বিতীয় প্রোগ্রামটি কিছু মুদ্রণ করে না। এটি কেবল ত্রুটি
জো কিং

আমি আপনার আসল প্রোগ্রামে রূপান্তরটি প্রয়োগ করার সময় এটিই পাই। এরপরে একটি বাক্যাংশ মুদ্রণ করা উচিত। হতে পারে আপনার প্রশ্নের দ্বিতীয় বার পড়া উচিত, বা অন্যান্য উত্তরগুলি একবার দেখুন
জো কিং

* এটি আবার পড়ার চেষ্টা করে * * ... নাহ, এটি এখনও দেখেনি ... * আরেকবার চেষ্টা করে * ওহ! খ্রিস্ট, আমি এটিকে মোটেও বুঝতে পারি নি । আমি এটিকে "যখন আপনার প্রোগ্রামের নিজস্ব উত্স কোডটি ইনপুট হিসাবে পাঠ করে " হিসাবে
পড়েছি

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