গল্ফ আপনি দুর্দান্ত জন্য একটি কুইন!


204

আপনার পছন্দের ভাষাটি ব্যবহার করে, একটি কুইন গল্ফ করুন ।

একটি কুইন হ'ল একটি খালি কম্পিউটার প্রোগ্রাম যা কোনও ইনপুট নেয় না এবং এটির একমাত্র আউটপুট হিসাবে নিজস্ব উত্স কোডের একটি অনুলিপি তৈরি করে।

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

কোনও ত্রুটি কুইন নেই - ত্রুটি কুইনের জন্য ইতিমধ্যে পৃথক চ্যালেঞ্জ রয়েছে

জন্য পয়েন্ট:

  • সবচেয়ে ছোট কোড (বাইটে)
  • সর্বাধিক অস্পষ্ট / অস্পষ্ট সমাধান
  • অস্পষ্ট / অস্পষ্ট ভাষা ব্যবহার করা
  • গল্ফ করা কঠিন এমন ভাষাগুলি সফলভাবে ব্যবহার করা

নিম্নলিখিত স্ট্যাক স্নিপেট প্রতিটি ভাষার বর্তমান স্কোরের দ্রুত দৃষ্টিভঙ্গি পেতে এবং কোন ভাষার বিদ্যমান উত্তর রয়েছে এবং আপনার কী ধরণের লক্ষ্যবস্তুতে পরাজিত করতে হবে তা জানতে ব্যবহার করা যেতে পারে:


4
আপনার অর্থ কি এই নয়, "গল্ফ আপনি আরও বৃহত্তর ভালোর জন্য!"?
মতিন উলহাক

50
@ মন্টু এটি "গ্রেট গুডের জন্য একটি হাস্কেল শিখুন" শীর্ষক একটি নাটক।
রাফ কেটলার

উত্তর:


106

হেক্সাগনি , সাইড-দৈর্ঘ্য 17 16, 816 705 বাইট

180963109168843880558244491673953327577233938129339173058720504081484022549811402058271303887670710274969455065557883702369807148960608553223879503892017157337685576056512546932243594316638247597075423507937943819812664454190530214807032600083287129465751195839469777849740055584043374711363571711078781297231590606019313065042667406784753422844".".>.@.#.#.#.#.#.#.#.>.(...........................<.".......".".>./.4.Q.;.+.<.#.>...........................<.".....".".>.#.#.>.N.2.'.\.>.............=.=......._.<.".....".".>.>.;.'.=.:.\.>.......................<."...".".>.\.'.%.'.<.#.>..............._.....<."...".".>.#.#.>.<.#.>...............=.=.<.".".".>.#.\.'.R./.>.................<.".!.........../.>.

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

এটি এটি উন্মোচিত মত দেখাচ্ছে:

                1 8 0 9 6 3 1 0 9 1 6 8 8 4 3 8
               8 0 5 5 8 2 4 4 4 9 1 6 7 3 9 5 3
              3 2 7 5 7 7 2 3 3 9 3 8 1 2 9 3 3 9
             1 7 3 0 5 8 7 2 0 5 0 4 0 8 1 4 8 4 0
            2 2 5 4 9 8 1 1 4 0 2 0 5 8 2 7 1 3 0 3
           8 8 7 6 7 0 7 1 0 2 7 4 9 6 9 4 5 5 0 6 5
          5 5 7 8 8 3 7 0 2 3 6 9 8 0 7 1 4 8 9 6 0 6
         0 8 5 5 3 2 2 3 8 7 9 5 0 3 8 9 2 0 1 7 1 5 7
        3 3 7 6 8 5 5 7 6 0 5 6 5 1 2 5 4 6 9 3 2 2 4 3
       5 9 4 3 1 6 6 3 8 2 4 7 5 9 7 0 7 5 4 2 3 5 0 7 9
      3 7 9 4 3 8 1 9 8 1 2 6 6 4 4 5 4 1 9 0 5 3 0 2 1 4
     8 0 7 0 3 2 6 0 0 0 8 3 2 8 7 1 2 9 4 6 5 7 5 1 1 9 5
    8 3 9 4 6 9 7 7 7 8 4 9 7 4 0 0 5 5 5 8 4 0 4 3 3 7 4 7
   1 1 3 6 3 5 7 1 7 1 1 0 7 8 7 8 1 2 9 7 2 3 1 5 9 0 6 0 6
  0 1 9 3 1 3 0 6 5 0 4 2 6 6 7 4 0 6 7 8 4 7 5 3 4 2 2 8 4 4
 " . " . > . @ . # . # . # . # . # . # . # . > . ( . . . . . .
  . . . . . . . . . . . . . . . . . . . . . < . " . . . . . .
   . " . " . > . / . 4 . Q . ; . + . < . # . > . . . . . . .
    . . . . . . . . . . . . . . . . . . . . < . " . . . . .
     " . " . > . # . # . > . N . 2 . ' . \ . > . . . . . .
      . . . . . . . = . = . . . . . . . _ . < . " . . . .
       . " . " . > . > . ; . ' . = . : . \ . > . . . . .
        . . . . . . . . . . . . . . . . . . < . " . . .
         " . " . > . \ . ' . % . ' . < . # . > . . . .
          . . . . . . . . . . . _ . . . . . < . " . .
           . " . " . > . # . # . > . < . # . > . . .
            . . . . . . . . . . . . = . = . < . " .
             " . " . > . # . \ . ' . R . / . > . .
              . . . . . . . . . . . . . . . < . "
               . ! . . . . . . . . . . . / . > .
                . . . . . . . . . . . . . . . .

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

সাধারণ পদ্ধতির পরিবর্তন না করেই পার্শ্ব-দৈর্ঘ্য 1 বা 2 দ্বারা হ্রাস করা সম্ভব হতে পারে তবে এটি শক্ত হতে চলেছে (কেবলমাত্র সেই ঘরগুলি #বর্তমানে অব্যবহৃত এবং ডিকোডারের জন্য উপলব্ধ)। এই মুহূর্তে আমার কাছে আরও কার্যকর ধারণা কীভাবে পাওয়া যায় তা সম্পর্কে আমার কাছে কোনও ধারণা নেই, তবে আমি নিশ্চিত যে এর একটি বিদ্যমান। আমি পরের কয়েকদিন এই বিষয়ে কিছু চিন্তা করব এবং আমি ব্যাখ্যা এবং সমস্ত কিছু যুক্ত করার আগে সম্ভবত এক দিকের দৈর্ঘ্যের দিকে গল্ফ দেওয়ার চেষ্টা করব।

কমপক্ষে, আমি প্রমাণ করেছি যে এটি সম্ভব ...

আমার নিজের ভবিষ্যতের রেফারেন্সের জন্য কয়েকটি সিজেএম স্ক্রিপ্ট:


50
প্রিয় পিট এটি কি।
কনর ও'ব্রায়েন

2
এটি তৈরি করতে কতক্ষণ সময় লাগল?
আদনান

3
@ অ্যান্ডএন গতকাল থেকে আমি সাধারণ "টেমপ্লেট" এর জন্য ধারণাগুলি নিয়ে খেলছি এবং এর মধ্যে (এতে কোনও আসল পরীক্ষার জড়িত ছিল না ... কেবল 7x7 গ্রিডে কিছু স্টাফ লিখে টাইপ করছে যে এটি কার্যকর কিনা .. আমি ইতিমধ্যে সেখানে প্রায় অর্ধ ডজন পন্থা ত্যাগ করেছি)। আসল কোডিংটি এই সন্ধ্যায় নিয়েছে ... সম্ভবত 3 ঘন্টা, আমি বলতে পারি।
মার্টিন এন্ডার

9
এসোটেরিক আইডিই ধাপে ধাপে ক্রিয়াকলাপে এটি দেখার সময় আমি কী আশ্চর্য হয়েছি তা শব্দগুলি ব্যাখ্যা করতে পারে না ... কাদের কাছে এটি বুঝতে ইচ্ছুক হতে পারে, এই হেক্সাগনটি "ডিকোডার" অংশটি একটি পূর্ণসংখ্যার সাথে এনকোড করে যা মুদ্রিত হয় !এবং তারপরে একটি দিয়ে /২ য় শেষ লাইনে মিরর এটি ডিকোডারকে কোয়েনটি সম্পূর্ণ করতে ডিকোডার কোড প্রিন্ট করতে প্রবেশ করে। এটির একটি অলৌকিক ব্যবহার রয়েছে <এবং >এটি মাল্টলাইনটি খুব বড় পূর্ণসংখ্যা পড়ে এবং ডিকোডার সংরক্ষণের জন্য অঞ্চলটি তৈরি করে। "ডজনখানেক পদ্ধতির" কী বিবেচনা করা হচ্ছে তা আমি সত্যিই জানতে আগ্রহী?
সানি পুন

3
ব্যাখ্যা? ---
এমডি এক্সএফ


72

গল্ফস্ক্রিপ্ট, 2 বাইট

1

(দ্রষ্টব্য ট্রেলিং নিউলাইন) এটি স্ট্যাকের উপরে 1 নম্বরটি ধাক্কা দেয়। প্রোগ্রামের শেষে, গল্ফস্ক্রিপ্ট স্ট্যাকের সমস্ত আইটেম (এর মধ্যে কোনও ফাঁকা স্থান নেই) প্রিন্ট করে, তারপরে একটি নতুন লাইন প্রিন্ট করে।

এটি একটি সত্য কুইন (যেমন প্রশ্নটিতে তালিকাবদ্ধ), কারণ এটি আসলে কোডটি কার্যকর করে; এটি কেবল "উত্স ফাইলটি পড়ে এটি মুদ্রণ করে না" (পিএইচপি জমা দেওয়ার মতো নয়)।


অন্য উদাহরণের জন্য, এখানে মুদ্রণের জন্য একটি গল্ফস্ক্রিপ্ট প্রোগ্রাম রয়েছে 12345678:

9,(;
  1. 9: স্ট্যাক 9 টিপুন
  2. ,: 9 টি আর্গুমেন্ট হিসাবে গ্রাস করুন, অ্যারেটিকে [0 1 2 3 4 5 6 7 8]স্ট্যাকের দিকে ধাক্কা
  3. (: অ্যারেটিকে আর্গুমেন্ট হিসাবে গ্রাস করুন, অ্যারে [1 2 3 4 5 6 7 8]এবং আইটেমটিকে 0স্ট্যাকের দিকে ধাক্কা
  4. ;: স্ট্যাকের শীর্ষ আইটেমটি বাতিল করুন

স্ট্যাকটিতে এখন অ্যারে রয়েছে [1 2 3 4 5 6 7 8]। এটি উপাদানগুলির মধ্যে কোনও ফাঁকা স্থান ছাড়াই স্ট্যান্ডার্ড আউটপুটে লিখিত হয়, তার পরে একটি নতুন লাইন থাকে।


18
বা পাওয়ারশেল, বা পিএইচপি :-)
জয়ে

6
আপনি সময়মতো ফিরে যান নি এবং আবিষ্কারককে গল্ফস্ক্রিপ্ট আবিষ্কার করার ধারণাটি দিয়েছিলেন, তাই না?
মতিন উলহাক

77
প্রযুক্তিগতভাবে, 1গল্ফস্ক্রিপ্টে কোনও কুইন নয়: এটি আউটপুট দেয় 1\n, যেখানে \nএকটি নিউলাইন বোঝায়। যাইহোক, দুই গৃহস্থালির কাজ প্রোগ্রাম 1\n হয় একটি quine।
ইলমারি করোনেন

17
ওয়ান-চর প্রোগ্রামটিও \nসম্ভবত?
লিন

10
@ ছদ্মনাম একটি কুইন আক্ষরিক একটি প্রোগ্রাম যা এটি নিজস্ব উত্স মুদ্রণ করে। আমি মনে করি না "কাঠামোর" উপর কোনও স্বেচ্ছাচারী বিধিনিষেধ আছে।
হুগো জিংক

71

মস্তিষ্ক-ফ্লাক , 9.8e580 1.3e562 9.3e516 12818 11024 4452 4332 4240 4200 4180 3852 3656 3616 3540 2485 + 3 = 2488 বাইট

এখন পর্যবেক্ষণযোগ্য মহাবিশ্বে ফিট!

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

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


ব্যাখ্যা

এই কুইন বেশিরভাগ কুইনদের মতো ছদ্মবেশী ভাষায় কাজ করে; এটির দুটি অংশ একটি এনকোডার এবং একটি ডিকোডার রয়েছে। এনকোডারটি শুরুতে সমস্ত প্রথম বন্ধনী হয় এবং ডিকোডারটি একেবারে শেষে আরও জটিল অংশ complex

প্রোগ্রামটি এনকোডিংয়ের একটি সহজ উপায় হ'ল ডিকোডারের প্রতিটি অক্ষরের ASCII মান স্ট্যাকের মধ্যে রাখাই। এটি খুব ভাল ধারণা নয় কারণ ব্রেন-ফ্ল্যাক কেবলমাত্র 8 টি অক্ষর ব্যবহার করে ( ()<>[]{}) সুতরাং আপনি খুব অল্প তথ্য এনকোড করতে বেশ কয়েকটি বাইট প্রদান করে শেষ করেন। একটি স্মার্ট ধারণা, এবং এখন অবধি ব্যবহৃত একটি হ'ল 8 টি ধনুর্বন্ধকের প্রতিটিকে একটি খুব ছোট সংখ্যায় (1-8) অর্পণ করা এবং এটিকে আমাদের ডিকোডার দিয়ে ASCII মানগুলিতে রূপান্তর করা। এটি দুর্দান্ত কারণ এর আগে 252 এর বিপরীতে কোনও অক্ষর এনকোড করতে 18 বাইটের বেশি খরচ হয় না।

তবে এই প্রোগ্রামটি না। এটি নির্ভর করে যে ব্রেন-ফ্লাক প্রোগ্রামগুলি 5 টি পর্যন্ত সংখ্যা সহ 8 টি ব্রেসকে এনকোড করার জন্য সুষম। এটি নীচে হিসাবে তাদের এনকোড করে।

(       -> 2
<       -> 3
[       -> 4
{       -> 5
),>,],} -> 1

সমস্ত নিকটস্থ বন্ধনী 1 অর্পণ করা হয়েছে কারণ আমরা নির্দিষ্ট দৃশ্যে আমাদের মধ্যে কোনটি ব্যবহার করা দরকার তা নির্ধারণ করতে আমরা প্রসঙ্গটি ব্যবহার করতে পারি। এটি মস্তিষ্ক-ফ্ল্যাক প্রোগ্রামের জন্য একটি কঠিন কাজ বলে মনে হতে পারে, তবে এটি আসলে তা নয়। উদাহরণস্বরূপ নিন খোলা ধনুর্বন্ধনী ডিকোডযুক্ত নীচের এনকোডিংগুলি এবং নিকটে বন্ধনীগুলি একটি দ্বারা প্রতিস্থাপন করা হয়েছে .:

(.
((..
<([.{...

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

নিম্ন স্তরের ব্যাখ্যা

কাজ চলছে


25
আমি মনে করি আপনি একটি কোড-গল্ফ চ্যালেঞ্জের দীর্ঘতম সমাধানের জন্য
জিতেছেন

18
সবেমাত্র পিপিসিজি নপের ইতিহাসে বৃহত্তম একক গল্ফ তৈরি করেছে 9.8e580 এখনও চিত্তাকর্ষক।
ডেনিস

19
পর্যবেক্ষণযোগ্য মহাবিশ্বে ফিট করার জন্য +1। এছাড়াও, টিআইও নেক্সাসের সাথে, পারমালিঙ্কটি উত্তরের সাথে মাপসই করা উচিত। tio.run/nexus/…
ডেনিস

3
... খুব বড় গল্ফ ...
ধ্বংসাত্মক লেবু

3
আমার মনে হয় আপনি বেশিরভাগ বাইট কেটে
ক্রিস্টোফার

68

উপস্থাপিকা , 5157 4514 2348 1761 1537 664 569 535 423 241 214 184 178 175 169 148 142 136 133 বাইট

3 বাইট সংরক্ষণের জন্য Sp3000 ধন্যবাদ।

এই বরং দীর্ঘ ... হয় (অন্তত ঠিক আছে, এটা এখনও দীর্ঘ ... এটা সবচেয়ে কম প্রহার এর পরিচিত Brainfuck এখন এই চ্যালেঞ্জ C # এর quine) কিন্তু এটি প্রথম quine আমি নিজেকে আবিষ্কৃত এর (আমার অ্যাপ্লিকেশন Lua এবং জুলিয়া জমা সত্যিই মাত্র অনুবাদের হয় অন্যান্য ভাষাগুলিতে স্ট্যান্ডার্ড কুইন কৌশলগুলি) এবং যতদূর আমি জানি যে প্রিলিলেড এ পর্যন্ত কেউ একটি কুইন লিখেনি, তাই আমি আসলে এটি সম্পর্কে বেশ গর্বিত। :)

7( -^^^2+8+2-!( 6+ !
  ((#^#(1- )#)8(1-)8)#)4337435843475142584337433447514237963742423434123534455634423547524558455296969647344257)

সেই বৃহত সংখ্যার মূল কোডটি কেবল একটি এনকোডিং, এ কারণেই কোয়েনটি এত দীর্ঘ is

এই সিজেএম স্ক্রিপ্টের সাথে কুইনকে এনকোডিং করা অঙ্কগুলি তৈরি করা হয়েছে ।

এর জন্য একটি স্ট্যান্ডার্ড-কমপ্লায়েন্ট ইন্টারলিটার প্রয়োজন, যা অক্ষর মুদ্রণ করে (মানগুলি চরিত্রের কোড হিসাবে ব্যবহার করে)। সুতরাং আপনি যদি পাইথন দোভাষী ব্যবহার করছেন তবে আপনাকে সেট করতে হবে NUMERIC_OUTPUT = False

ব্যাখ্যা

প্রথমে প্রিলিওড সম্পর্কে কয়েকটি শব্দ: প্রিলিওডের প্রতিটি লাইন একটি পৃথক "ভয়েস" যা নিজস্ব স্ট্যাকটি পরিচালনা করে। এই স্ট্যাকগুলি 0s এর অসীম সংখ্যায় সূচনা করা হয়। প্রোগ্রামটি কলাম দ্বারা কলাম কার্যকর করা হয়, যেখানে কলামের সমস্ত কমান্ড পূর্ববর্তী স্ট্যাকের অবস্থার উপর ভিত্তি করে "একযোগে" কার্যকর করা হয়। অঙ্কগুলি পৃথকভাবে স্ট্যাকের উপরে ঠেলাঠেলি করা হয়, সুতরাং 42এটিকে ধাক্কা দেবে 4, তারপরে ক 2। বড় সংখ্যক সরাসরি ধাক্কা দেওয়ার কোনও উপায় নেই, আপনাকে সেগুলি যোগ করতে হবে। মান সঙ্গে সংলগ্ন স্ট্যাকগুলি থেকে অনুলিপি করা যেতে পারে vএবং ^। ব্রেনফাক-স্টাইলের লুপগুলি প্রথম বন্ধনীগুলির সাথে প্রবর্তন করা যেতে পারে। আরও তথ্যের জন্য শিরোনামে লিঙ্কটি দেখুন।

এখানে কুইনের প্রাথমিক ধারণাটি রয়েছে: প্রথমে আমরা স্ট্যাকের উপরে প্রচুর পরিমাণে অঙ্ক চাপি যা কোয়েনের মূলটি এনকোড করে। সিড কোর তারপরে সেই অঙ্কগুলি নিয়ে যায়, সেগুলি নিজেই মুদ্রণের জন্য ডিকোড করে এবং তারপরে কোডগুলিতে প্রদর্শিত (এবং পিছনের )) অঙ্কগুলি মুদ্রণ করে ।

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

এনকোডিং

যেহেতু কোডটিতে কেবল দুটি স্বর রয়েছে এবং সংলগ্নতাটি চক্রীয় ^এবং vসমার্থক। এটি ভাল কারণ vএখন পর্যন্ত বৃহত্তম চরিত্রের কোডটি রয়েছে, তাই সর্বদা ব্যবহার করে এড়ানো ^এন্ডোডিংকে সহজ করে তোলে। এখন সমস্ত অক্ষর কোডগুলি 10 থেকে 94 এর মধ্যে রয়েছে lusive এর অর্থ আমি প্রতিটি অক্ষরকে ঠিক দুটি দশমিক অঙ্ক সহ এনকোড করতে পারি। যদিও একটি সমস্যা রয়েছে: কিছু অক্ষর, বিশেষত লাইনফিডের দশমিক উপস্থাপনায় শূন্য থাকে। এটি একটি সমস্যা কারণ শূন্যগুলি স্ট্যাকের নীচ থেকে সহজে পার্থক্যযোগ্য নয়। ভাগ্যক্রমে এটির একটি সহজ ফিক্স রয়েছে: আমরা অক্ষর কোডগুলি অফসেট করি 2, তাই আমাদের অন্তর্ভুক্ত রয়েছে 12 থেকে 96 এর মধ্যে, যেটি এখনও স্বাচ্ছন্দ্যে দুটি দশমিক অঙ্কগুলিতে ফিট করে। প্রিলিওড প্রোগ্রামে উপস্থিত সমস্ত অক্ষরগুলির মধ্যে এখন,0এর উপস্থাপনে একটি 0 রয়েছে (50) তবে আমাদের সত্যিই মোটেই প্রয়োজন নেই 0। সুতরাং যে এনকোডিং আমি ব্যবহার করছি, প্রতিটি অঙ্ক পৃথক পৃথকভাবে।

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

...9647344257

জোড়ায় বিভক্ত হয়ে বিপরীত করুন, তারপরে দুটি বিয়োগ করুন এবং তারপরে অক্ষর কোডগুলি সন্ধান করুন:

57 42 34 47 96
55 40 32 45 94
 7  (     -  ^

যেখানে 32স্পেসের সাথে মিল রয়েছে। মূলটি ঠিক এই রূপান্তরটি করে এবং তারপরে অক্ষরগুলি মুদ্রণ করে।

কেন্দ্র

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

আমরা ঠিক দু'বার কোডটি চালাতে চাই - প্রথমবার, আমরা কোরটি এড়িয়ে গেলাম এবং শেষে সমস্ত সংখ্যাটি পুশ করব, দ্বিতীয়বার আমরা কোর চালাচ্ছি। প্রকৃতপক্ষে, আমরা কোরটি চালানোর পরে, আমরা আবার এই সমস্ত সংখ্যাটি পুশ করব, তবে যেহেতু লুপটি পরে শেষ হয়, এটি অপ্রাসঙ্গিক। এটি নিম্নলিখিত কঙ্কাল দেয়:

7(
  (                   )43... encoding ...57)

প্রথমত, আমরা 7প্রথম কণ্ঠে একটি চাপ দেই - যদি আমরা এটি না করি, আমরা কখনই লুপটিতে প্রবেশ করতাম না (কঙ্কালের জন্য এটি কেবল গুরুত্বপূর্ণ যে এটি শূন্য নয় ... কেন এটি বিশেষত 7আমরা পরে দেখব) । তারপরে আমরা মূল লুপটি প্রবেশ করি। এখন, দ্বিতীয় ভয়েসে অন্য লুপ রয়েছে। প্রথম পাসে, এই লুপটি এড়িয়ে যাবে কারণ দ্বিতীয় স্ট্যাকটি খালি / কেবল 0 টি রয়েছে। সুতরাং আমরা সোজা এনকোডিংয়ে লাফিয়ে those সমস্ত অঙ্কগুলি স্ট্যাকের দিকে ঠেলাচ্ছি। দ্য7আমরা প্রথম স্ট্যাক সম্মুখের ধাক্কা এখনও আছে, তাই লুপ পুনরাবৃত্তি করে।

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

এর পরে, আসল কোরের প্রথম লুপটি দেখি। একটি (বা একসাথে জিনিস )করা বেশ আকর্ষণীয়। আমি এখানে লুপ বডি চিহ্নিত করেছি =:

-^^^2+8+2-!
(#^#(1- )#)
 ==========

এর অর্থ হ'ল কলামটি (লুপের অংশ হিসাবে বিবেচনা করা হয় না (সেখানে অক্ষরগুলি কেবল একবার কার্যকর করা হয়, এবং লুপটি এড়িয়ে যায় এমনকি যদি)। কিন্তু কলাম ধারণকারী ) হয় লুপ অংশ এবং প্রতিটি পুনরাবৃত্তির একবার দৌড়ে করা হয়।

সুতরাং আমরা একটি একক দিয়ে শুরু করি -, যা 7প্রথম স্ট্যাকটিকে -7আবার ... এ আরও পরিণত করে। আসল লুপ হিসাবে ...

লুপটি অবিরত থাকে যখন অঙ্কগুলির স্ট্যাক খালি হয় না। এটি একবারে দুটি অঙ্ক প্রক্রিয়া করে,। এই লুপটির উদ্দেশ্য হ'ল এনকোডিংটি ডিকোড করা, চরিত্রটি মুদ্রণ করা এবং একই সাথে অঙ্কগুলির স্ট্যাকটিকে প্রথম ভয়েসে স্থানান্তর করা। সুতরাং এই অংশ প্রথম:

^^^
#^#

প্রথম কলামটি 1-সংখ্যাকে প্রথম ভয়েসে স্থানান্তরিত করে। দ্বিতীয় কলামটি প্রথম ভয়েসে 10-সংখ্যার অনুলিপি করে দ্বিতীয় ভয়েসে 1 সংখ্যার পিছনে অনুলিপি করে। তৃতীয় কলামটি সেই কপিটি প্রথম ভয়েসে ফিরে যায়। তার মানে এখন প্রথম ভয়েসটিতে দুইবার 1-অঙ্ক এবং এর মধ্যে 10-অঙ্ক রয়েছে। দ্বিতীয় ভয়েসে 10-সংখ্যার আরও একটি অনুলিপি রয়েছে। এর অর্থ আমরা স্ট্যাকের শীর্ষে থাকা মানগুলি নিয়ে কাজ করতে পারি এবং নিশ্চিত হতে পারি যে পরবর্তী স্তরের দুটি কপি পরে রয়েছে।

এখন আমরা দুটি অঙ্ক থেকে অক্ষর কোডটি পুনরুদ্ধার করি:

2+8+2-!
(1- )#

নীচে একটি ছোট লুপ যা কেবলমাত্র 10-অঙ্কটি শূন্যে হ্রাস করে। প্রতিটি পুনরাবৃত্তির জন্য আমরা শীর্ষে 10 যুক্ত করতে চাই। মনে রাখবেন যে প্রথমটি 2লুপের অংশ নয়, সুতরাং লুপের বডিটি আসলে +8+210 যোগ করে ( 2পূর্বে ধাক্কা ব্যবহার করে ) এবং অন্যটি ধাক্কা দেয় So সুতরাং যখন আমরা লুপটি সম্পন্ন করি, তখন প্রথম স্ট্যাকটি আসলে বেস - 10 মান এবং অন্যটি 2. আমরা -এনকোডিংটিতে অফসেটের জন্য অ্যাকাউন্টটি জমা করতে 2 টি বিয়োগ করে অক্ষরটি দিয়ে মুদ্রণ করি !। কেবল #নীচের লুপের শেষে শূন্যটি ছাড়ছে।

এই লুপটি সম্পূর্ণ হয়ে গেলে, দ্বিতীয় স্ট্যাকটি খালি এবং প্রথম স্ট্যাকটি সমস্ত সংখ্যাকে বিপরীত ক্রমে (এবং -7নীচে একটি) ধারণ করে । বাকিগুলি মোটামুটি সহজ:

( 6+ !
8(1-)8)#

এটি মূলটির দ্বিতীয় লুপ, যা এখন সমস্ত অঙ্ক পিছনে মুদ্রণ করে। এটি করার জন্য আমাদের সঠিক সংখ্যার কোডটি পেতে প্রতিটি সংখ্যার 48 টি প্রয়োজন। আমরা এটি একটি সরল লুপ দিয়ে করি যা 8বার বার চালায় এবং 6প্রতিটি সময় যুক্ত করে। ফলাফলটি মুদ্রিত হয় !এবং 8শেষটি পরবর্তী পুনরাবৃত্তির জন্য।

তাহলে কি -7? হ্যাঁ, 48 - 7 = 41যা এর চরিত্র কোড )। ম্যাজিক!

অবশেষে, যখন আমরা সেই লুপটি সম্পন্ন করেছি তখন আমরা দ্বিতীয় ভয়েসে বাইরের লুপটি ছেড়ে যাব তা নিশ্চিত করার জন্য 8আমরা কেবল ধাক্কা দিয়ে #ফেলেছি। আমরা সমস্ত অঙ্কগুলি আবার চাপি এবং প্রোগ্রামটি শেষ হয়।



19
মার্টিন, তুমি কোথাও থামতে হবে।
21

3
আমি ভালবাসি যে এটিতে সামগ্রিকভাবে 5000 বাইট গল্ফ হয়েছে, এর সাথে 3 টি সংরক্ষণের জন্য স্প 3000 এর কাছে একটি স্বীকৃতি।
কামিল দ্রাকারী

2
@ কামিলড্রাকারি যদিও এটি সর্বশেষ 3 বাইট ছিল, তাই এটি বেশ বড় বিষয়। ;)
মার্টিন এন্ডার

57

হেক্সাগনি , পাশের দৈর্ঘ্য 11, 314 বাইট

164248894991581511673077637999211259627125600306858995725520485910920851569759793601722945695269172442124287874075294735023125483.....!/:;.........)%'=a':\....................\...................\..................\.................\................\...............\..............\..$@.........\$><>'?2='%.<\:;_;4Q

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


পুরানো সংস্করণ:

হেক্সাগনি , পাশের দৈর্ঘ্য 11, 330 বাইট

362003511553420961423766261426252539048636523959468260999944549820033581478284471415809677091006384959302453627348235790194699306179..../:{;+'=1P'%'a{:..\.....................\...................\..................\.................\................\...............\..............\.............\!$><........\..@>{?2'%<......:;;4Q/

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

এনকোডার: এটি অনলাইনে চেষ্টা করে দেখুন!

প্রোগ্রামটি এই পাইথন কোডের সমান পরিমাণে: এটি অনলাইনে চেষ্টা করে দেখুন!

অনাবৃত কোড:

           3 6 2 0 0 3 5 1 1 5 5
          3 4 2 0 9 6 1 4 2 3 7 6
         6 2 6 1 4 2 6 2 5 2 5 3 9
        0 4 8 6 3 6 5 2 3 9 5 9 4 6
       8 2 6 0 9 9 9 9 4 4 5 4 9 8 2
      0 0 3 3 5 8 1 4 7 8 2 8 4 4 7 1
     4 1 5 8 0 9 6 7 7 0 9 1 0 0 6 3 8
    4 9 5 9 3 0 2 4 5 3 6 2 7 3 4 8 2 3
   5 7 9 0 1 9 4 6 9 9 3 0 6 1 7 9 . . .
  . / : { ; + ' = 1 P ' % ' a { : . . \ .
 . . . . . . . . . . . . . . . . . . . . \
  . . . . . . . . . . . . . . . . . . . \ 
   . . . . . . . . . . . . . . . . . . \  
    . . . . . . . . . . . . . . . . . \   
     . . . . . . . . . . . . . . . . \    
      . . . . . . . . . . . . . . . \     
       . . . . . . . . . . . . . . \      
        . . . . . . . . . . . . . \       
         ! $ > < . . . . . . . . \        
          . . @ > { ? 2 ' % < . .         
           . . . . : ; ; 4 Q / .          

দুই .s এর 1 বিট লাগে। অন্য কোনও অক্ষর 1 বিট এবং একটি বেস -99 সংখ্যার লাগে।

ব্যাখ্যা

বড় আকারের জন্য ছবিতে ক্লিক করুন। প্রতিটি ব্যাখ্যা অংশে পাইথন কোডটি বোঝার জন্য সহায়তা করে।

তথ্য অংশ

জটিল কিছু অন্যান্য উত্তর না (এর সাথে ব্যবহার করা কাঠামো বদলে <, "এবং কিছু অন্যান্য বিষয়), আমি শুধু আইপি নীচে অর্ধেক মধ্য দিয়ে পাস করা যাক।

উপাত্ত

প্রথমত, আইপি প্রচুর সংখ্যা এবং কোনও অপ-এর ( .) এবং আয়না ( \) দিয়ে চলে। প্রতিটি ডিজিট মেমরির সংখ্যায় সংযোজন করে, তাই শেষদিকে মেমরির মান প্রোগ্রামটির শুরুতে সংখ্যার সমান হয়।

mem = 362003511...99306179

! এটি মুদ্রণ,

stdout.write(str(mem))

এবং $পরের মাধ্যমে লাফ দেয় >

থেকে শুরু <। যদি মেমরির মানটি memমিথ্যা হয় ( <= 0যেমন, শর্তটি mem > 0সন্তুষ্ট নয়), আমরা প্রোগ্রামটি প্রিন্ট করে নিয়েছি এবং প্রস্থান করা উচিত। আইপি উপরের পথ অনুসরণ করবে।

বাহির

(আইপি হিট করার আগে প্রায় 33 কমান্ডের জন্য বিশ্বজুড়ে চলুক @(যা প্রোগ্রামটি সমাপ্ত করে) কারণ অন্য কোথাও এটি রাখলে কিছু অতিরিক্ত বাইট লাগবে)

যদি এটি সত্য হয় তবে আমরা নীচের পথটি অনুসরণ করি, কয়েকবার পুনঃনির্দেশিত হয়েছি এবং অন্য শর্তযুক্তকে আঘাত করার আগে আরও কয়েকটি কমান্ড কার্যকর করি।

# Python                    # Hexagony
# go to memory cell (a)     # {
a = 2                       # ?2
# go to memory cell (b)     # '
b = mem % a                 # %

এখন স্মৃতিটি এরকম দেখাচ্ছে:

Mem1

মান সত্যবাদী হলে:

if b > 0:

নিম্নলিখিত কোডটি কার্যকর করা হয়েছে:

# Python                    # Hexagony
b = ord('Q')                # Q
b = b*10+4                  # 4
# Note: now b == ord('.')+256*3
stdout.write(chr(b%256))    # ;
stdout.write(chr(b%256))    # ;

এর বিস্তারিত ব্যাখ্যা দেখুন Q4MartinEnder এর HelloWorld Hexagony উত্তর । সংক্ষেপে, এই কোডটি .দু'বার মুদ্রণ করে।

মূলত আমি .একবার এটি মুদ্রণের জন্য পরিকল্পনা করেছি । যখন আমি এটি নিয়ে এসেছি ( .দু'বার মুদ্রণ করব ) এবং এটি প্রয়োগ করলাম তখন প্রায় 10 টি সংখ্যা সংরক্ষণ করা হয়েছিল।

তারপর,

b = mem // a                # :

এখানে একটি গুরুত্বপূর্ণ সত্য আমি বুঝতে পেরেছিলাম যে আমাকে প্রায় 14 টি সংখ্যা বাঁচিয়েছে: আপনি যেখানে শুরু করেছিলেন সেখানে যাওয়ার দরকার নেই।


আমি কী বলছি তা বুঝতে, আসুন একটি বিএফ উপমা রাখি। (যদি আপনি ইতিমধ্যে বুঝতে পেরে থাকেন তবে এড়িয়ে যান)

কোড দেওয়া হয়েছে

while a != 0:
    b, a = a * 2, 0
    a, b = b, 0
    print(a)

ধরে নিই আমরা aবর্তমান কক্ষের bমান হতে পারি এবং ডান ঘরের মান হতে পারি, বিএফ-এ এটির একটি সরল অনুবাদ হ'ল:

[             # while a != 0:
    [->++<]       # b, a = a * 2, 0
    >[-<+>]       # a, b = b, 0
    <.            # print(a)
]

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

[             # while a != 0:
    [->++<]       # b, a = a * 2, 0
                  # implicitly let (a) be at the position of (b) now
    .             # print(a)
]

যা বেশ কয়েকটি বাইট ছোট।


এছাড়াও, কোণার মোড়কের আচরণটি আমাকে \সেখানে আয়না রাখার হাত থেকে বাঁচায় - এটি ছাড়া আমি অঙ্কগুলি ( \নিজের জন্য +2 সংখ্যা .এবং ডানদিকে অপরিশোধিত জন্য +2 অঙ্কগুলি ফিট করতে সক্ষম হব না, উল্লেখ করার জন্য না ফ্ল্যাগ)

(বিবরণ:

  • আইপি নীচে-বাম কোণে প্রবেশ করে, বাম দিকের শিরোনাম
  • এটি ডান কোণে warped পেতে, এখনও মাথা বাম দিকে
  • এটি এমন একটি মুখোমুখি হয় \যা এটি প্রতিফলিত করে, এখন এটি ডান-আপের দিকে
  • এটি কোণে যায় এবং নীচের বাম কোণে আবার warped হয়

)


মান (উপরে 2 মোড অপারেশনের) যদি মিথ্যা (শূন্য) হয় তবে আমরা এই পথটি অনুসরণ করি:

# Python                 # Hexagony   # Memory visualization after execution
b = mem // a             # :          # click here
base = ord('a') # 97     # a
y = b % base             # '%
offset = 33              # P1
z = y + offset           # ='+
stdout.write(chr(z))     # ;          # click here
mem = b // base          # {:         # click here

আমি খুব বিস্তারিত না ব্যাখ্যা, কিন্তু অফসেট আসলে না ঠিক 33, কিন্তু সর্বসম হয় 33গেলিক ভাষার 256। এবং chrএকটি অন্তর্নিহিত আছে % 256


3
ম্যান, এটি প্রচুর পরিমাণে নেই
জো কিং

25
আমি হেসেছিলাম "আমি কী বলছি তা বুঝতে, আসুন একটি [ব্রেইনফাক] উপমা রাখুন।" কেবল পিপিসি তে ... :)
লিন

2
আমি এটিকে উত্তোলনের জন্য উত্তরের শীর্ষে 3 বারের মতো স্ক্রোল করেছি, কেবল এটিই ইতিমধ্যে করেছি তা জানতে পেরে ...
NieDzejkob

2
সংখ্যাটি সংক্ষিপ্ত করা থেকে নতুন স্থানটির সুবিধা নিয়ে 310 বাইট
জো কিং

2
আরও বেশি জায়গা নিয়ে 308 বাইট
জো কিং

46

ভিম, 11 বাইট

q"iq"qP<Esc>hqP
  • iq"qP<Esc>: ব্যবহারকারীর পাঠ্য সদৃশ সন্নিবেশ হতে হয়েছে রেকর্ডিং বাইরে।
  • q"এবং hqP: সরাসরি নামবিহীন ""নিবন্ধের ভিতরে ভিতরে রেকর্ড করুন , যাতে এটি মাঝখানে আটকানো যায়। hশুধুমাত্র repositioning নেওযা হবে; যদি আপনি এটি ম্যাক্রোর ভিতরে রাখেন তবে এটি ফলাফলটিতে আটকানো হবে।

সম্পাদন করা

এর সাথে রেকর্ডিং সম্পর্কে একটি নোট q": নামবিহীন রেজিস্টার ""একটি মজার বিষয়। এটি অন্যদের মতো সত্যিকারের নিবন্ধ নয়, যেহেতু পাঠ্য সেখানে সংরক্ষণ করা হয়নি। এটি আসলে অন্য কোনও রেজিস্ট্রারের পয়েন্টার (সাধারণত "-কোনও নিউলাইন ছাড়াই মুছে "0ফেলার জন্য, ইয়াঙ্ক্সের জন্য, বা "1একটি নতুন লাইন দিয়ে মুছে ফেলার জন্য)। q"নিয়ম ভঙ্গ করে; এটি আসলে লিখেছে "0। আপনার যদি ""ইতিমধ্যে কিছু ছাড়া অন্য রেজিস্টার প্রতি নির্দেশ ছিল "0, q"মুছে ফেলা হবে "0কিন্তু ছেড়ে ""অপরিবর্তিত। আপনি যখন একটি নতুন ভিএম শুরু করেন, ""স্বয়ংক্রিয়ভাবে নির্দেশ করে "0, তাই আপনি সেই ক্ষেত্রে ঠিক আছেন।

মূলত, ভিম অদ্ভুত এবং বগি।


অপেক্ষা করুন কেন এটি আমার পক্ষে কাজ করে না
ধ্বংসাত্মক লেবু

@ আবিষ্কারযোগ্য জলছবি নিশ্চিতভাবে বলতে পারি না, তবে একটি ব্যাখ্যা সম্ভবত is সম্ভবত লেখার আগে এটি থাকা উচিত ছিল, কারণ এটি লোককে ফেলে দিতে পারে। সম্পাদনাটি পড়ুন।
udioica

কীভাবে চাপ দেওয়ার yআগে বা রান করার আগে কিছু সাহায্য করতে পারে সে সম্পর্কে আপনার সম্ভবত কিছু কথা রাখা উচিত
ধ্বংসাত্মক লেবু

আপনি <এসএসসি> কী টিপতে দেখানোর জন্য কেন ব্যবহার করবেন না ? এই ইউনিকোড ব্লক "কন্ট্রোল পিকচারস" এর অংশ
mbomb007

4
@ mbomb007 <Esc>স্বরলিপিটি ভিম ম্যাপিংস ( :help <>) এর মধ্যে মানক এবং এটিই ভিমগলফ.কম ব্যবহার করে। যে কোনও অভিজ্ঞ ভিমগল্ফার এটি পড়তে অভ্যস্ত হবে। ইউনিকোডের জন্য, আমাকে ছোট ছোট অক্ষরগুলি পড়তে হবে এবং এগুলি টাইপ করার এবং সহায়তা ফাইলটি অনুসন্ধানের পদ্ধতিটি অস্পষ্ট করে।
udioica

44

কিউবিক্স , 20 বাইট

3434Qu$v@!<"OOw\o;/"

প্রায় পেয়েছি \o/ ...

নেট :

    3 4
    3 4
Q u $ v @ ! < "
O O w \ o ; / "
    . .
    . .

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

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

অতিরিক্ত নোট

পটভূমি গল্প

@ আইজ ৫২৩ দ্বারা এই দুর্দান্ত উত্তরটি পড়ে মুগ্ধ হওয়ার পরে , আমি আরও কুইনে গল্ফ করার কথা ভাবতে শুরু করি। সর্বোপরি, সেখানে বেশ কয়েকটি নো-অপস ছিল এবং এটি খুব সংকুচিত হয়নি বলে মনে হয়। যাইহোক, তার উত্তরটি (এবং আমার পাশাপাশি) যে কৌশলটি ব্যবহার করে, তার জন্য সম্পূর্ণ লাইন ছড়িয়ে দেওয়ার জন্য কোড প্রয়োজন, কমপক্ষে 12 বাইট সংরক্ষণের প্রয়োজন ছিল। তার ব্যাখ্যায় একটি মন্তব্য ছিল যা আমাকে সত্যিই ভাবতে পেরেছিল:

এই কুইনটি আরও দুলিয়ে দেওয়ার বিষয়ে, [...] কিউবের শীর্ষ মুখটি উপস্থাপন করার জন্য [...] অন্য কোনও উপায় প্রয়োজন [...]

তারপরে, হঠাৎ, আমি দাঁড়িয়ে যখন কিছু পান করার জন্য চলে গেলাম, তখন তা আমাকে আঘাত করেছিল: প্রোগ্রামটি যদি শীর্ষ মুখের প্রতিনিধিত্ব করতে চরিত্রের কোডগুলি ব্যবহার না করে বরং সংখ্যাগুলি ব্যবহার করে? এটি বিশেষত সংক্ষিপ্ত যদি আমরা প্রিন্ট করা সংখ্যার 2 ডিজিট থাকে। Cubix ডবল অঙ্ক সংখ্যার ঠেলাঠেলি 3 এক-বাইট নির্দেশাবলী আছে: N, Sএবং Q, যা ধাক্কা 10, 32এবং 34যথাক্রমে, তাই এই চমত্কার golfy হওয়া উচিত, আমি ভেবেছিলাম।

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

তাই আমি এমন নম্বরটি বেছে নিয়ে শুরু করেছি যা শীর্ষ মুখের অর্ধেক হয়ে যাবে। আমি N(10) দিয়ে শুরু করেছি , তবে আমি সমস্ত কিছু মুদ্রণের জন্য গ্রহণ করা পদ্ধতির কারণে এটি বেশ কার্যকর হয়নি। যাইহোক, আমি নতুনভাবে শুরু করেছি এবং Sকোনও কারণে (32) ব্যবহার করেছি। এটি একটি সঠিক কুইন ফলাফল, বা তাই আমি ভেবেছি। এটি সমস্ত খুব ভাল কাজ করেছে, কিন্তু উদ্ধৃতিগুলি অনুপস্থিত ছিল। তারপরে, আমার কাছে মনে হয়েছিল যে Q(34) সত্যিই দরকারী হবে। সর্বোপরি, 34 হ'ল ডাবল উদ্ধৃতিটির অক্ষর কোড, যা আমাদের এটিকে স্ট্যাকের উপরে রাখতে সক্ষম করে, (2, আমি তখন ব্যবহৃত লেআউটে ব্যবহার করেছি) মূল্যবান বাইটগুলি। আমি আইপি রুটটি কিছুটা পরিবর্তন করার পরে, শূন্যস্থান পূরণ করার একটি বাক্য ছিল।

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

কোডটি 5 ভাগে বিভক্ত করা যেতে পারে। আমি একে একে তাদের উপর দিয়ে যাব। নোট করুন যে আমরা মাঝের মুখগুলি বিপরীত ক্রমে এনকোড করছি কারণ স্ট্যাক মডেলটি প্রথম-ইন-শেষ-আউট।

পদক্ষেপ 1: শীর্ষ মুখ মুদ্রণ

অপ্রাসঙ্গিক নির্দেশাবলী কোনও অপস ( .) দ্বারা প্রতিস্থাপন করা হয়েছে । আইপি তৃতীয় লাইনটি শুরু করে, খুব বাম দিকে, পূর্ব দিকে নির্দেশ করছে। স্ট্যাকটি (স্পষ্টতই) খালি।

    . .
    . .
Q u . . . . . .
O O . . . . . .
    . .
    . .

আইপি চতুর্থ লাইনের বামতম অবস্থানে শেষ হয়, পশ্চিমে নির্দেশ করে, একই লাইনের ডানদিকের অবস্থানটি প্রায় আবৃত করতে চলেছে। সম্পাদিত নির্দেশাবলী হ'ল (নিয়ন্ত্রণ প্রবাহের অক্ষর ব্যতীত):

QOO
Q   # Push 34 (double quotes) to the stack
 OO # Output twice as number (the top face)

স্ট্যাকটিতে কেবল 34 টি রয়েছে, উত্সের শেষ চরিত্রটি উপস্থাপন করে।

পদক্ষেপ 2: চতুর্থ লাইনের এনকোড করুন

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

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

পদক্ষেপ 3: অন্য একটি উদ্ধৃতি চাপুন

আমাদের আর একটি উদ্ধৃতি চাপতে হবে, এবং Qপ্রোগ্রামটির শুরুতে ডানদিকের কাছাকাছি এসে পুনর্ব্যবহার করার চেয়ে ভাল উপায় কী ? এটিতে যুক্ত হওয়া বোনাস রয়েছে যা আইপি সরাসরি সেই উদ্ধৃতিতে চলে যা তৃতীয় লাইনের এনকোড করে।

এই পদক্ষেপের জন্য নেট সংস্করণ এখানে। অপ্রাসঙ্গিক অনুপ্রেরণাগুলি পুনরায় নো-অপস দ্বারা প্রতিস্থাপিত করা হয়েছে, কার্যকর করা নো-অপস #চিত্রের উদ্দেশ্যে হ্যাশট্যাগ ( ) দ্বারা প্রতিস্থাপন করা হয়েছে এবং আইপি চতুর্থ লাইনের শেষ অক্ষরে শুরু হয়।

    . .
    . .
Q u $ . . . . .
. . w \ . . / .
    . #
    . #

প্রথম নির্দেশে আইপিটি তৃতীয় লাইনে শেষ হয়, সেই লাইনের শেষ দিকে মোড়তে চলেছে কারণ এটি পশ্চিম দিকে নির্দেশ করছে। নিম্নলিখিত নির্দেশাবলী (নিয়ন্ত্রণ প্রবাহ বাদে) অতিক্রম করা হয়েছে:

$uQ
$u  # Don't do anthing
  Q # Push the double quote

এই ডাবল উদ্ধৃতিটি তৃতীয় লাইনের শেষে একটিকে উপস্থাপন করে।

পদক্ষেপ 4: তৃতীয় লাইন এনকোডিং

এটি দ্বিতীয় ধাপের মতো একই কাজ করে, সুতরাং দয়া করে এখানে একটি ব্যাখ্যা দেখুন।

পদক্ষেপ 5: স্ট্যাকটি মুদ্রণ করুন

স্ট্যাকটিতে এখন বিপরীত ক্রমে চতুর্থ এবং তৃতীয় লাইন রয়েছে, তাই এখনই আমাদের যা করা দরকার তা এটি মুদ্রণ করে। আইপিটি পশ্চিম দিকে অগ্রসর হয়ে তৃতীয় লাইনের পেনাল্টিমেট নির্দেশে শুরু হয়। কিউবের প্রাসঙ্গিক অংশটি এখানে (আবার অপ্রাসঙ্গিক অংশগুলি নো-অপ্স দ্বারা প্রতিস্থাপন করা হয়েছে)।

    . .
    . .
. . . v @ ! < .
. . . \ o ; / .
    . .
    . .

এটি একটি লুপ, যেমনটি আপনি দেখে / প্রত্যাশিত হতে পারেন। মূল শরীরটি হ'ল:

o;
o  # Print top of stack as character
 ; # Delete top of stack

শীর্ষস্থানীয় আইটেম 0 হলে লুপটি শেষ হয়, কেবল স্ট্যাকটি খালি থাকলেই ঘটে। লুপটি শেষ @হলে প্রোগ্রামটি শেষ করে এক্সিকিউট করা হয়।


আশা করি আমি এই আরও
উত্সাহিত

উদ্যানগুলি সর্বদা স্বাগত ;-)
লুক

42

জাভাস্ক্রিপ্ট ES6 - 21 বাইট

$=_=>`$=${$};$()`;$()

আমি এই কুইনকে "দ্য ব্লিং কুইন" বলি।

কখনও কখনও, আপনি শৈলীতে গল্ফ হবে।


আপনি কি !$=_=>`!$=${$}()`()2 বাইট সংরক্ষণ করতে পারেন?
ডাওনগোট

Invalid assignment left hand side। এটি কাজ করুক এমন কামনা করুন :(
মামা ফান রোল

1
@ টেক্সক্রাফ্টেগ টেম্পলেট লিটারালগুলির চারপাশে প্রথম বন্ধনী নির্মূল করা কেবল দেশীয় প্রোটোটাইপ ফাংশনগুলিতে কাজ করে, যেমন Array.prototype.join
মামা ফান রোল

2
হুম, নিশ্চিত নই। আমি এক বছর আগে এটি লিখেছিলাম (এটি তখন বৈধ হিসাবে বিবেচিত হত), এবং আমি কুইন রুলের পরিবর্তনগুলি খুব কাছ থেকে অনুসরণ করিনি। যাইহোক, তীর ফাংশন যুক্ত করার পরে alertবা console.logপরে এবং বন্ধনীতে টেম্পলেট স্ট্রিং মোড়ানো কাজ করবে।
মামা ফান রোল

3
এছাড়াও আপনি যদি এটি কনকোলটিতে চালান তবে এটি এই সাইটে overw (jQuery ফাংশন) ওভাররাইট করে এবং আপভোট ফাংশনটি আর কাজ করবে না। :)
স্টিভেন পলিনকাস

41

ব্রেইনফ * সিকে (755 টি অক্ষর)

এটি এরিক বোসম্যান (সিএস.ভিউ.এনএল এ ইজবসমান) তৈরি একটি কৌশল অবলম্বনে তৈরি। নোট করুন যে "ই সুলতানিকের কুইন!" এটি কুইন হওয়ার জন্য পাঠ্যটি আসলে প্রয়োজনীয়!

->++>+++>+>+>++>>+>+>+++>>+>+>++>+++>+++>+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>+>+>++>>>+++>>>>>+++>+>>>>>>>>>>>>>>>>>>>>>>+++>>>>>>>++>+++>+++>+>>+++>>>+++>+>+++>+>++>+++>>>+>+>+>+>++>+++>+>+>>+++>>>>>>>+>+>>>+>+>++>+++>+++>+>>+++>+++>+>+++>+>++>+++>++>>+>+>++>+++>+>+>>+++>>>+++>+>>>++>+++>+++>+>>+++>>>+++>+>+++>+>>+++>>+++>>>+++++++++++++++>+++++++++++++>++++++>+++++++++++++++>++++++++++>+++>+++>++++>++++++++++++++>+++>++++++++++>++++>++++++>++>+++++>+++++++++++++++>++++++++>++++>++++++++++++>+++++++++++++++>>++++>++++++++++++++>+++>+++>++++>++++++>+++>+++++++++>++++>+>++++>++++++++++>++++>++++++++>++>++++++++++>+>+++++++++++++++>+++++++++++++
ESultanik's Quine!
+[[>>+[>]+>+[<]<-]>>[>]<+<+++[<]<<+]>>+[>]+++[++++++++++>++[-<++++++++++++++++>]<.<-<]

13
এটি করার একটি চতুর উপায়।
পিটার ওলসন

13
এটা কিভাবে কাজ করে?
গর্বিত হাসেলেলার

3
@ প্রফেসহেস্কিলার আইআইআরসি, প্রতিটি অংশের ESultanik's Quine!জন্য মেমরির ESultanik's Quine!দুটি বাইট সহ স্ট্যাক এনকোডিং হিসাবে এবং মেমরি সেট করার আগে অংশটি (0x1F থেকে এএসসিআইআই মান অফসেট)। কোডের চূড়ান্ত বিটটি মেমোরিটির মধ্য দিয়ে যায়, প্রথমে ++>+++…প্রতিটি চরিত্রের কোডগুলি পুনরায় উত্পাদিত করে , তারপর প্রকৃতপক্ষে অক্ষরগুলি মুদ্রণ করে।
সুলতানিক

4
@ ক্যাটসআরএফ্লুফাই এটি একটি কুইন হওয়ার জন্য তাদের প্রয়োজন! যদিও এগুলি সত্য যে এগুলি অপসারণ করা যেতে পারে, তবে কুইন সম্পত্তি ধরে রাখতে পূর্বের কোডটিও পরিবর্তন করতে হবে।
সুলতানিক

1
সেটা সত্য. এছাড়াও নতুন লাইনগুলি প্রয়োজনীয়।
ক্যালকুলেটরফলাইন

36

হেক্সাগনি , পাশের দৈর্ঘ্য 15 14 13 12, 616 533 456 383 বাইট

বেশ কয়েকদিন সতর্ক গল্ফিং, লুপগুলি পুনরায় সাজানো এবং আবার শুরু করার পরে, অবশেষে আমি এটিকে 12 টি ষড়ভুজের দিকে নামাতে পেরেছি।

1845711724004994017660745324800783542810548755533855003470320302321248615173041097895645488030498537186418612923408209003405383437728326777573965676397524751468186829816614632962096935858"">./<$;-<.....>,.........==.........<"......."">'....>+'\.>.........==........<"......"">:>)<$=<..>..............$..<"...."">\'Q4;="/@>...............<"....."">P='%<.>.............<"..!'<.\=6,'/>

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

দুচোখে:

            1 8 4 5 7 1 1 7 2 4 0 0
           4 9 9 4 0 1 7 6 6 0 7 4 5
          3 2 4 8 0 0 7 8 3 5 4 2 8 1
         0 5 4 8 7 5 5 5 3 3 8 5 5 0 0
        3 4 7 0 3 2 0 3 0 2 3 2 1 2 4 8
       6 1 5 1 7 3 0 4 1 0 9 7 8 9 5 6 4
      5 4 8 8 0 3 0 4 9 8 5 3 7 1 8 6 4 1
     8 6 1 2 9 2 3 4 0 8 2 0 9 0 0 3 4 0 5
    3 8 3 4 3 7 7 2 8 3 2 6 7 7 7 5 7 3 9 6
   5 6 7 6 3 9 7 5 2 4 7 5 1 4 6 8 1 8 6 8 2
  9 8 1 6 6 1 4 6 3 2 9 6 2 0 9 6 9 3 5 8 5 8
 " " > . / < $ ; - < . . . . . > , . . . . . .
  . . . = = . . . . . . . . . < " . . . . . .
   . " " > ' . . . . > + ' \ . > . . . . . .
    . . . = = . . . . . . . . < " . . . . .
     . " " > : > ) < $ = < . . > . . . . .
      . . . . . . . . . $ . . < " . . . .
       " " > \ ' Q 4 ; = " / @ > . . . .
        . . . . . . . . . . . < " . . .
         . . " " > P = ' % < . > . . .
          . . . . . . . . . . < " . .
           ! ' < . \ = 6 , ' / > . .
            . . . . . . . . . . . .

যদিও এটি হেক্সাগোনি কোডের সর্বাধিক গল্ফযুক্ত মত দেখাচ্ছে না, তবে আমি যে ধরণের এনকোডিং ব্যবহার করেছি তা অপ-অপসের দীর্ঘতর রানের জন্য অনুকূলিত হয়েছে, যা আপনি অন্যথায় এড়াতে পারবেন।

ব্যাখ্যা

এটি পূর্ববর্তী হেক্সাগনির উত্তরটিকে অন্যভাবে নো-আপস ( .) এনকোড করে মারবে be এই উত্তরটি প্রতিটি অন্যান্য চরিত্রকে একটি করে স্থান বাঁচায় ., খনিটি কোনও অপের নম্বরকে এনকোড করে । এর অর্থ হ'ল উত্সটি এতটা সীমাবদ্ধ করতে হবে না।

এখানে আমি একটি বেস 80 এনকোডিং ব্যবহার করেছি, যেখানে 16 এর নীচে সংখ্যাগুলি কোনও অপ্সের রান নির্দেশ করে, এবং 16 এবং 79 এর মধ্যে সংখ্যা 32 ( !) থেকে 95 ( _) পর্যন্ত পরিসীমা উপস্থাপন করে (আমি এখন বুঝতে পেরেছি যে আমার সমস্ত গল্ফটি _আমার বাইরে আছে) কোড লোল)। কিছু পাইথোনিক সিউডোকোড:

i = absurdly long number
print(i)
base = 80
n = i%base
while n:
    if n < 16:
        print("."*(16-n))
    else:
        print(ASCII(n+16))
    i = i//base
    n = i%base

নম্বরটি হেক্সাগনের প্রথমার্ধে সমস্তটি সহ এনকোড করা হয়েছে

" " > 
 " " > 
  ... etc

বাম দিকে এবং

 > ,
< "
 >
< "
... etc

ডানদিকে পয়েন্টারটি পুনঃনির্দেশিত করে একটি কক্ষে নম্বরটি এনকোড করতে। এটি মার্টিন ইন্ডারের উত্তর থেকে নেওয়া হয়েছে (ধন্যবাদ) , কারণ আমি আরও কার্যকর উপায় বের করতে পারি না।

এরপরে এটি নীচের অংশে প্রবেশ করে ->:

       " " > \ ' Q 4 ; = " / @ > . . . .
        . . . . . . . . . . . < " . . .
         . . " " > P = ' % < . > . . .
          . . . . . . . . . . < " . .
     ->    ! ' < . \ = 6 , ' / > . .

!সংখ্যাটি মুদ্রণ করে এবং 'লুপটি শুরু করার আগে ডান মেমরি কক্ষে নেভিগেট করে। P='%80. দ্বারা বর্তমান সংখ্যা mods ফলাফলের 0 হয়, তাহলে সসীম উঠে যাই @, অন্য নেমে গিয়ে একটি সেল মান গেলিক ভাষার ফলাফলের পাশে তৈরি -16

   . " " > ' . . . . > + ' \ . > . . . . . .
    . . . = = . . . . . . . . < " . . . . .
     . " " > : > ) < $ = < . . > . . . . .
      . . . . . . . . . $ . . < " . . . .
       " " > \ ' Q 4 ; = " / @ > . . . .
                      /
                     /

কক্ষটি সেট করুন (মোড মান + -16)। যদি মানটি নেতিবাচক হয় তবে শাখাগুলিতে যান>+'\ , অন্যথায় নীচে যান।

মানটি যদি ইতিবাচক হয়:

 " " > . / < $ ; - < . . . . . > , . . . . . .
  . . . = = . . . . . . . . . < " . . . . . .
   . " " > ' . . . . > + ' \ . > . . . . . .

পয়েন্টার শেষ হয় ;-< যা ঘরটি সেট করে (মোড মান - -16) এবং এটি মুদ্রণ করে।

মানটি নেতিবাচক:

   . " " > ' . . . . > + ' \ . > . . . . . .
    . . . = = . . . . . . . . < " . . . . .
     . " " > : > ) < $ = < . . > . . . . .

> ) <লুপটি শুরু করে এমন বিভাগে যান । এখানে এটি বিচ্ছিন্ন:

     . . > ) < $ = < . .
      . . . . . . . . .
       \ ' Q 4 ; = " /

যা কোড 'Q4;="=প্রিন্ট করে যা একটি প্রিন্ট করে .(মার্টিন ইন্ডারকে আবার ধন্যবাদ, যিনি অক্ষরের জন্য বর্ণ-সংখ্যা সংমিশ্রণগুলি সন্ধান করার জন্য একটি প্রোগ্রাম লিখেছিলেন ) এবং প্রারম্ভিক কক্ষে ফিরে যায়। এটি )মোড মানটি ইতিবাচক না হওয়া পর্যন্ত মোড মান কক্ষকে বাড়িয়ে দেয় এবং আবার লুপ করে again

এটি হয়ে গেলে, এটি উপরে চলে যায় এবং অন্য বিভাগের সাথে এখানে যোগ দেয়:

 " " > . / < $ ; - < . . .
            \
             \

পয়েন্টারটি আবার বড় লুপের শুরুতে ফিরে যাত্রা করে

 " " > . / <--
  . . . = =
   . " " > ' 
    . . . = = 
     . " " > :
      . . . . .
       " " > \ ' . .
        . . . . . . .
         . . " " > P = ' % < . > . . .

এটি কার্যকর করে ='=:'যা বর্তমান সংখ্যাটি ৮০ দ্বারা বিভক্ত করে এবং সঠিক কক্ষে নেভিগেট করে।

পুরানো সংস্করণ (পার্শ্ব দৈর্ঘ্য 13)

343492224739614249922260393321622160373961419962223434213460086222642247615159528192623434203460066247203920342162343419346017616112622045226041621962343418346002622192616220391962343417346001406218603959366061583947623434"">/':=<$;'<.....>(......................<"......"">....'...>=\..>.....................<"....."">....>)<.-...>...........==......<"...."">.."...'.../>.................<"..."">\Q4;3=/.@.>...............<".."".>c)='%<..>..!'<.\1*='/.\""

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

আমি একেবারে অন্য দিকের দৈর্ঘ্যটি অবশ্যই স্পষ্টভাবে গল্ফ করতে পারি, তবে কাল হতেই আমাকে এটি ছেড়ে দিতে হবে কারণ দেরি হচ্ছে। দেখা যাচ্ছে আমি অধৈর্য এবং আগামীকাল পর্যন্ত অপেক্ষা করতে পারি না। অন্য কোনও দিক থেকে গল্ফ করা যেতে পারে? :( আহহহহহহহহ !

আমি এমনকি বেস enc 77 এনকোডিংয়ের সাথে বেশ কয়েকটি অতিরিক্ত অঙ্কও গল্ফ করেছিলাম , তবে এটি সত্যিকার অর্থে কোনও ব্যাপার নয়, কারণ এটির সমান বাইকোন্ট রয়েছে।


13
এটা চমৎকার. এই হাইব্রিড রান-লেংথ এনকোডিংয়ের ধারণাটি সত্যই ঝরঝরে। :) আমি যদি ভুলে যাই তবে আপনাকে একটি অনুগ্রহ দিতে আমাকে স্মরণ করিয়ে দিন।
মার্টিন এন্ডার

35

পোস্টস্ক্রিপ্ট, 20 টি অক্ষর

সংক্ষিপ্ত এবং বৈধ নতুন লাইনের পিছনে ২০ টি চর।

(dup == =)
dup == =

33

কিউবিক্স , 45 বাইট

.....>...R$R....W..^".<R.!'.\)!'"R@>>o;?/o'u"

আপনি এই কোডটি এখানে পরীক্ষা করতে পারেন ।

এই প্রোগ্রামটি অনুসরণ করা মোটামুটি কঠিন, তবে এটি করার কোনও সুযোগ পাওয়ার জন্য আমাদের কিউবিক্স দোভাষী হিসাবে যেমন এটি একটি কিউবে বিস্তৃত করে শুরু করা দরকার:

      . . .
      . . >
      . . .
R $ R . . . . W . . ^ "
. < R . ! ' . \ ) ! ' "
R @ > > o ; ? / o ' u "
      . . .
      . . .
      . . .

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

বেফুঞ্জের বিপরীতে, আমরা এখানে একের চেয়ে চারটি স্ট্রিং ব্যবহার করছি। এখানে কীভাবে তারা স্ট্যাকের উপরে ঠেলাঠেলি করে;

  1. প্রোগ্রামটি বাম প্রান্তের শীর্ষে শুরু হয়, ডানদিকে যাচ্ছে; এটি ডান দিকে দু'বার পরিণত হয় ( R), এটি পুরো ঘনক্ষেতের চারপাশে মোড়ানো যে রেখাগুলির তৃতীয় এবং শেষ বামদিকে বাম দিকে চলে যায়। ডাবল উদ্ধৃতি নিজেই মেলে, তাই আমরা পুরো তৃতীয় লাইনটি স্ট্যাকের পিছনে দিকে ঠেলে দিই। তারপরে ডাবল উক্তিটির পরে ফাঁসি কার্যকর হয়।

  2. uকমান্ড ডান দিকে একটি ইউ-টার্ন, তাই পরের জিনিস আমরা চালাচ্ছেন থেকে '"অগ্রে মধ্যম লাইনে। "এটি স্ট্যাকের দিকে ধাক্কা দেয় । প্রায় মোড়ানো অবিরত, আমরা ঘনক্ষেতের <বাম হাতের কাছাকাছি আঘাত এবং ফিরে বাউন্স। এই দিক থেকে পৌঁছানোর সময়, আমরা একটি সরল "কমান্ড দেখতে পাই , না '", তাই সম্পূর্ণ দ্বিতীয় লাইনটি স্ট্যাকের উপর তৃতীয় লাইনের উপরে এবং ডাবল উদ্ধৃতিটির উপরের দিকে ধাক্কা দেওয়া হয়।

  3. আমরা !স্ট্যাকের উপর একটি চাপ দিয়ে শুরু করি ( '!) এবং এটি বৃদ্ধি করে ( )); এটি আমাদের উত্স কোডে একটি ডাবল উদ্ধৃতি প্রয়োজন ছাড়াই একটি ডাবল উদ্ধৃতি উত্পাদন করে (যা স্ট্রিংটি শেষ করবে)। একটি আয়না ( \) উত্তর দিকের উপরে মৃত্যুদন্ড কার্যকর করে; তারপরে Wকমান্ডটি বাম দিকে অগ্রসর হয় । এটি আমাদের সপ্তম কলামে উপরের দিকে ছেড়ে দেয়, কারণ এটি একটি ঘনক্ষেত্র, তৃতীয় সারিতে বাম দিকে আবৃত হয়, তারপরে তৃতীয় কলামের নীচে। আমরা Rডানদিকে ঘুরতে, উপরের সারি বাম দিকে বাম দিকে যেতে; তারপরে আমরা প্রোগ্রামটিতে প্রবেশের মাধ্যমে $এড়িয়ে চলেছি R, সুতরাং এক্সিকিউশনটি "লাইনের শেষদিকে বৃত্তাকারে আবৃত হয় এবং আমরা দ্বিতীয় এবং তৃতীয়টির মতো প্রথম স্ট্রিংটিকে একইভাবে ক্যাপচার করি।

  4. ^কমান্ড আমাদের উত্তরে পাঠায় একাদশ কলাম, যা (ঘনক্ষেত্র মোড়ানো জন্য অনুমতি) আপ দক্ষিণাভিমুখে পঞ্চম উপর। কেবলমাত্র আমাদের সেখানেই মুখোমুখি হ'ল !(ননজারো হলে এড়িয়ে যান; স্ট্যাকের শীর্ষস্থানটি অবশ্যই নঞ্জেরো হয়), যা oকমান্ডের বাইরে চলে যায় , কার্যকরভাবে পঞ্চম কলামটি পুরোপুরি খালি করে দেয়। সুতরাং আমরা uকমান্ডটি আবার গুটিয়ে ফেলি যা আবার ইউ-টার্ন হয়ে যায়, তবে এবার আমরা চূড়ান্ত কলামটি দক্ষিণ দিকে রেখেছি, যা চতুর্থ কলামটি উত্তর দিকে র‌্যাপ করে। আমরা ইউ-টার্নের সময় একটি ডাবল উদ্ধৃতি হিট করেছি, যদিও আমরা নীচে থেকে উপরে পর্যন্ত স্ট্রিংয়ে পুরো চতুর্থ কলামটি ক্যাপচার করি। প্রোগ্রামটির বেশিরভাগ ডাবল উক্তিগুলির বিপরীতে, এগুলি নিজেই বন্ধ হয় না; পরিবর্তে, এটি "উপরের-ডানদিকে কোণার দ্বারা বন্ধ করা হয়েছে যার অর্থ আমরা নয়-বর্ণচিহ্নের স্ট্রিংটি ক্যাপচার করি ...>.....

সুতরাং স্ট্যাক লেআউটটি এখন থেকে উপরে থেকে নীচে: চতুর্থ কলাম; উপরের সারি; "; মাঝারি সারি; "; নিচের সারি. এগুলির প্রত্যেকটি স্ট্যাকের শীর্ষের নিকটবর্তী প্রথম অক্ষরের সাথে উপস্থাপিত হয় (কিউবিক্স এই ক্রমের বিপরীতে স্ট্রিংগুলি ধাক্কা দেয়, যেমন বেফুঞ্জের মতো, তবে প্রতিবার আইপি বিপরীত দিকে প্রাকৃতিক পাঠের দিকে চলে যাচ্ছিল, সুতরাং এটি কার্যকরভাবে দুইবার বিপরীত হয়েছে)। এটি লক্ষ করা যায় যে স্ট্যাকের বিষয়বস্তুগুলি মূল প্রোগ্রামের সাথে প্রায় একই রকম (কারণ চতুর্থ কলাম, এবং কিউবের উত্তর / শীর্ষ মুখটি একই ক্রমে একই অক্ষর ধারণ করে; স্পষ্টতই, এটি ইচ্ছাকৃতভাবে ডিজাইন করা হয়েছিল)।

পরবর্তী পদক্ষেপটি স্ট্যাকের সামগ্রীগুলি মুদ্রণ করা। সমস্ত ধাক্কা দেওয়ার পরে, আইপি চতুর্থ কলামে উত্তর দিকে যাচ্ছে, সুতরাং এটি >সেখানে আঘাত করে এবং একটি শক্ত লুপে প্রবেশ করবে >>o;?(অর্থাত্ "পূর্বে ঘুরুন, পূর্বে ঘুরুন, আউটপুটকে অক্ষর হিসাবে চিহ্নিত করুন, পপ করুন, ইতিবাচক হলে ডানদিকে ঘুরবেন")। কারণ সপ্তম লাইন NOPs পূর্ণ, ?প্রথম ফিরে মোড়ানো যাচ্ছে >, তাই এই কার্যকরভাবে স্ট্যাকের সমগ্র সামগ্রী (push কর্মের? একটি খালি স্ট্যাক নো অপ যায়)। আমরা প্রায় পুরো প্রোগ্রাম মুদ্রিত! দুর্ভাগ্যক্রমে, এটি এখনও পুরোপুরি সম্পন্ন হয়নি; আমরা শেষে ডাবল-কোট মিস করছি।

লুপটি শেষ হয়ে গেলে, আমরা একজোড়া মিরর দিয়ে পশ্চিম দিকে অগ্রসর হয়ে কেন্দ্রীয় রেখার উপরে প্রতিবিম্বিত করি। (আমরা \আগে আয়নাটির "অন্য দিক" ব্যবহার করেছি; এখন আমরা দক্ষিণ-পশ্চিম দিক ব্যবহার করছি The /আয়নাটি আগে ব্যবহৃত হয়নি)) আমরা মুখোমুখি হয়েছি '!, সুতরাং আমরা একটি বিস্মৃত চিহ্নটি ধাক্কা দিয়েছি (অর্থাত্ 33; আমরা ASCII ব্যবহার করছি) এবং কিউবিক্স স্ট্যাকের মধ্যে পূর্ণসংখ্যা এবং অক্ষরগুলির মধ্যে পার্থক্য করে না। (সুবিধার্থে, এটি একই !যা oআগে কমান্ডটি এড়াতে ব্যবহৃত হয়েছিল)) আমরা একটি জোড় Rকমান্ডের মুখোমুখি হয়ে একটি "ম্যানুয়াল" ইউ-টার্ন তৈরি করতে ব্যবহার করি (এখানে দ্বিতীয় Rকমান্ডটি প্রথমটিতে পৌঁছানোর জন্য আগে ব্যবহৃত হয়েছিল সারি, সুতরাং অন্য দিকে ফিট করা সবচেয়ে স্বাভাবিক বলে মনে হয়েছিলR পাশাপাশি কমান্ডটি ।Wকমান্ড, বাম দিকে। পাশের স্টেপটি ঠিক ক্র্যাশ হয়ে>দ্বিতীয় লাইনে কমান্ড, ঠিক যেখানে ছিল সেখানে মৃত্যুদন্ড কার্যকর করা। সুতরাং আমরা আবার বাম দিকে সরব, তবে এবার আমরা দক্ষিণ দিকে যাচ্ছি, সুতরাং পরবর্তী আদেশটি হ'ল )(দ্বিগুণে উদ্ধৃতি চিহ্নকে বাড়িয়ে তোলা), তারপরে একটি o(আউটপুট)। অবশেষে, এক্সিকিউশন অষ্টম লাইনের সাথে দ্বিতীয় কলামে আবৃত হয়, যেখানে এটি @প্রোগ্রামটি থেকে বেরিয়ে আসে।

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


দুর্দান্ত কাজ, এটি সত্যিই চিত্তাকর্ষক স্কোর। আপনি পছন্দ করেন কিভাবে আপনি শীর্ষ মুখটি এনকোড করেছেন। :)
মার্টিন এন্ডার

এটা ঠিক অবিশ্বাস্য! এটি কোনো সাহায্য করেন, তাহলে অন্য উপায় ধাক্কা "হয় Q
ETH প্রোডাকশনগুলি

1
কি দারুন! আমি কখনও কিউবিক্স কুইন দেখতে পেতাম না!
ফ্লিপট্যাক

3
গতকাল ব্যাখ্যাটি পড়ার মতো সময় আমার কাছে ছিল না, তবে এখন আমার ... সবে ... বাহ! আমি বিশ্বাস করতে পারি না দুটি বা এমনকি তিনটি সম্পূর্ণ ভিন্ন উদ্দেশ্যে কয়টি অক্ষর ব্যবহৃত হয়। এটি সম্ভবত আমি কখনও দেখা দুর্দান্ততম কিউবিক্স প্রোগ্রাম।
ETH প্রোডাকশনগুলি

ভাল ব্যাখ্যা।
রবার্ট ফ্রেজার

33

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

_='_=%r;print _%%_';print _%_

এখান থেকে নেওয়া হয়েছে


1
+1, আপনি আমার অনুরূপ সমাধানটিকে মারধর করেছেন তাই আমি এটি মুছে ফেলেছি। এটি লক্ষ করা উচিত যে এটি কেবল পাইথন 2 এ কাজ করে
nyuszika7h

2
এটা তোলে যেমন পরিবর্তনশীল নামের সঙ্গে অদ্ভুত দেখায় _, কিন্তু ভালো লেখা যদি আপনি এটি কোনো চিঠি নির্ধারিত, অর্থাত্ S:s='s=%r;print s%%s';print s%s
Ehtesh চৌধুরী

5
যদি এই সমাধানটি নিজের তৈরি না হয় তবে আপনার এটি সম্প্রদায় উইকি করা উচিত। এছাড়াও, লিঙ্কটি মারা গেছে।
mbomb007

1
আমি পার্টিতে কিছুটা দেরি করছি, তবে কেউ কীভাবে এটি কাজ করে তা ব্যাখ্যা করতে পারেন?
ম্যাডটাক্স

9
বৈধ হওয়ার জন্য এটির জন্য একটি ট্রেলিং লাইনফিড প্রয়োজন। যেমনটি হয়, উত্স কোড আউটপুটটির সাথে মেলে না।
ডেনিস

32

ভিম, 17 , 14 কীস্ট্রোক

কেউ এলোমেলোভাবে এটি upvated, তাই আমি মনে করি যে এটি বিদ্যমান। আমি যখন এটি পুনরায় পড়ি, তখন আমি ভেবেছিলাম "আরে, আমি এর চেয়ে আরও ভাল করতে পারি!", তাই আমি দুটি বাইট বন্ধ করে গল্ফ করলাম। এটি এখনও স্বল্পতম নয়, তবে কমপক্ষে এটি একটি উন্নতি।


দীর্ঘদিন ধরে, আমি ভাবছিলাম যে কোনও ভিম ​​কুইন সম্ভব কিনা। একদিকে, এটি অবশ্যই সম্ভব হবে, যেহেতু ভিম সম্পূর্ণরূপে টুরিং করছে। কিন্তু সত্যিই দীর্ঘ সময়ের জন্য একটি ভিম কুইনের সন্ধানের পরে, আমি এটির সন্ধান করতে পারি না। আমি হয়নি এটি এই PPCG চ্যালেঞ্জ , কিন্তু এটা বন্ধ করে না ঠিক সম্পর্কে আক্ষরিক quines। সুতরাং আমি একটি তৈরি করার সিদ্ধান্ত নিয়েছি, যেহেতু আমি একটিও পাইনি।

আমি দুই এই উত্তরটি সত্যিই গর্বিত নই, প্রথমগুলি :

  1. এটি আমি তৈরি প্রথম রানী, এবং

  2. আমি যতদূর জানি, এটি পৃথিবীর প্রথম ভি্ম-কুইন যা প্রকাশিত হবে! আমি এই সম্পর্কে ভুল হতে পারে, সুতরাং আপনি যদি একটি সম্পর্কে জানেন, দয়া করে আমাকে জানান।

সুতরাং, দীর্ঘ ভূমিকা পরে, এটি এখানে:

qqX"qpAq@q<esc>q@q

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

মনে রাখবেন যে আপনি যখন এটি টাইপ করবেন তখন এটি <esc>কী - স্ট্রোকটি প্রদর্শন করবে ^[। এটি এখনও নির্ভুল, যেহেতু ^[প্রতিনিধিত্ব করে 0x1B, যা এএসসিআইআই-এ পালাচ্ছে ভিএম অভ্যন্তরীণভাবে <esc>কীটি উপস্থাপন করে ।

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

vim -u NONE -N -i NONE

বা টাইপqqq চালানোর আগে ।

ব্যাখ্যা:

qq                  " Start recording into register 'q'
  X                 " Delete one character before the cursor (Once we play this back, it will delete the '@')
   "qp              " Paste register 'q'
      Aq@q<esc>     " Append 'q@q' to this line
               q    " Stop recording
                @q  " Playback register 'q'

সাইড নোটে, এই উত্তরটি সম্ভবত বেশিরভাগ পিপিসিজির উত্তরগুলির কিউ বা একটি কিছুর জন্য বিশ্ব রেকর্ড।


1
2i2i<esc>খুব কাছে। আমার মনে হচ্ছে এই কাজটি করার জন্য আমার কিছু করতে হবে।
Zwei

@ zwei আমি জানি, এটি খুব খারাপ লাগছে! আসলে, <Esc>ভি তে অন্তর্নিহিত, যাতে কাজ করে । দুর্ভাগ্যক্রমে এটি একটি নতুন লাইনও যুক্ত করে, এই কারণেই আমি এখনও এটি পোস্ট করি নি।
ডিজেএমসিএমহেম

q"iq"qbP<Esc>qbP11. আপনি এটি reddit রাখার পরে , আমি এখানে ভিমগল্ফিং তদন্ত করেছি এবং একটি অ্যাকাউন্ট করার সিদ্ধান্ত নিয়েছি। আমি এখানে পোস্ট করা উত্তর।
udioica

2
@udioica আপনি কি উত্তর হিসাবে পোস্ট করতে পারেন?
ডিজেএমসিএমহেম

28

হারিয়ে গেছে , 120 116 98 96 76 70 66 বাইট

সম্পাদনা: হ্যাঁ, 100 এর নিচে

সম্পাদনা করুন: /নীচের লাইনে সমস্তগুলিতে স্যুইচ করে একটি গুচ্ছ ও 'বাইটস সংরক্ষণ করা হয়েছে

:2+52*95*2+>::1?:[:[[[[@^%?>([ "
////////////////////////////////

এটি অনলাইন চেষ্টা করুন! + যাচাইকরণ এটি সমস্ত সম্ভাব্য রাজ্যের জন্য নির্ধারক

হারানো একটি 2 ডি ভাষা যাতে প্রারম্ভিক অবস্থান এবং দিকটি সম্পূর্ণ এলোমেলো। এর অর্থ সঠিক নির্দেশিকা পয়েন্টার পেয়েছেন কিনা তা নিশ্চিত করার জন্য প্রতিটি পর্যায়ে প্রচুর ত্রুটি-চেকিং করতে হবে এবং এটি এমন নয় যা কেবল এলোমেলোভাবে ঘুরেছে has

ব্যাখ্যা:

/নীচের লাইনে থাকা সমস্ত গুলি এখানে রয়েছে তা নিশ্চিত করার জন্য যে উল্লম্ব দিক বা নীচের লাইনে উত্থিত সমস্ত পয়েন্টারগুলি সঠিক দিকের দিকে ফানেল হয়েছে। সেখান থেকে এগুলি বেশ কয়েকটি পৃথক স্থানে এসে পৌঁছে তবে তারা সকলেই ডানদিকে যেতে শুরু করে

 ^%?>
 ////

যা স্ট্যাকের সমস্ত অ-শূন্য সংখ্যা সাফ করে দেয়। এর ([পরে কোনও অতিরিক্ত 0 গুলিও পরিষ্কার করে দেয়।

পরিষ্কারের মাঝখানে এটি হিট % , যা 'সুরক্ষা' বন্ধ করে দেয়, যা প্রোগ্রামটি হিট করার পরে শেষ করতে দেয় @(এটি ছাড়াই, কোনও পয়েন্টার শুরু হলে প্রোগ্রামটি তত্ক্ষণাত্ শেষ হতে পারে)@ )।

সেখান থেকে এটি একটি দুর্দান্ত সরল 2 ডি ভাষার কুইন তৈরি করে, "প্রথম লাইনের চারপাশে একটি স্ট্রিং আক্ষরিক ( ) মোড়ানো , "একটি স্থান ( :2+) এবং তারপরে একটি নতুন লাইন ( 52*) ডুপ করে একটি অক্ষরকে ঠেলে দিয়ে । দ্বিতীয় লাইনের জন্য, এটি একটি /অক্ষর তৈরি করে ( 95*2+) এবং এটি একটি গুচ্ছকে নকল করে (>::1?:[:[[[[ ) , শেষ অবধি শেষ হওয়ার আগে @এবং স্ট্যাকটিকে স্পষ্টভাবে মুদ্রণের আগে । দ্য?1অনেকগুলি 0 সেঃ তৈরি যদি পয়েন্টার গোড়ার দিকে প্রবেশ করে, পরে তাদের পরিষ্কার থাকার উপর সংরক্ষণ করা থেকে প্রক্রিয়াটিকে থামিয়ে হয়।

আমি এখানে সর্বশেষ লাইনটি একই চরিত্রটি তৈরি করে 20 বাইট সংরক্ষণ করেছি, যার অর্থ আমি ডুপিং প্রক্রিয়া থেকে শেষের দিকে সরাসরি যেতে পারি @

ডুপিং প্রক্রিয়া সম্পর্কে ব্যাখ্যা:

[একটি 'ডোর' হিসাবে পরিচিত একটি চরিত্র। যদি পয়েন্টারটি একটি [বা a এর সমতল দিকে আঘাত করে তবে ]এটি প্রতিফলিত হয়, অন্যথায় এটি এর মধ্য দিয়ে যায়। প্রতিবার পয়েন্টারটি একটি ডোরের সাথে যোগাযোগ করে, এটি বিপরীত ধরণের দিকে স্যুইচ করে। এই জ্ঞানটি ব্যবহার করে আমরা কোনও >:[ব্লকে কোনও নির্দেশ কতবার কার্যকর করি তার জন্য একটি সাধারণ সূত্রটি তৈরি করতে পারি ।

নির্দেশের প্রাথমিক পরিমাণ যুক্ত করুন। প্রত্যেকের জন্য [, এর বাম দিকে নির্দেশের পরিমাণের 2 গুণ যোগ করুন। উদাহরণস্বরূপ >::::[:[[[, আমরা প্রাথমিক পরিমাণ হিসাবে 5 দিয়ে শুরু করি। প্রথম দরজাটিতে 4 ডুপ নির্দেশনা রয়েছে, তাই আমরা 13 পেতে 4 * 2 = 8 থেকে 5 যুক্ত করি। অন্য তিনটি দরজার বামে 5 টি ডুপ রয়েছে, সুতরাং আমরা 43 পেতে পেতে 3 * (5 * 2) = 30 থেকে 13 যুক্ত করব ডুপ নির্দেশাবলী কার্যকর করা হয়েছে, এবং >স্ট্যাকের 44 টি রয়েছে। একই নির্দেশটি অন্যান্য নির্দেশাবলীর ক্ষেত্রেও প্রয়োগ করা যেতে পারে, যেমন (স্ট্যাক থেকে প্রচুর পরিমাণে আইটেমগুলি স্কোপ থেকে স্কোপের দিকে ঠেলে দেওয়া, বা এখানে ব্যবহৃত হিসাবে, স্ট্যাক থেকে আইটেমগুলি সাফ করতে।

যে কৌশলটি আমি এখানে 0 সেকেন্ড বেশি ফাঁকি দেওয়া এড়াতে ব্যবহার করেছি তা হ'ল 1?। চরিত্রটি 0 হলে, ?1 টি এড়ায় না, যার অর্থ এটি ডুপের বাকী অংশের জন্য 1টিকে নকল করে। এটি পরে স্ট্যাকটি সাফ করা আরও সহজ করে তোলে ।


25

এটি দুটি স্বল্পতম রুবির কুইনগুলি এসও থেকে :

_="_=%p;puts _%%_";puts _%_

এবং

puts <<2*2,2
puts <<2*2,2
2

আমাকে জিজ্ঞাসা করবেন না দ্বিতীয়টি কীভাবে কাজ করে ...


8
দ্বিতীয়টি হেরডোক ব্যবহার <<2করে, পরবর্তী লাইনে একটি স্ট্রিং শুরু করে এবং *2স্ট্রিংটি পুনরাবৃত্তি করে
মিং-টাং

তোমার 2 টা দরকার কেন?
ক্যালকুলেটরফলাইন

1
@ ক্যালকুলেটরফলাইন এটি বংশগত স্ট্রিংয়ের টার্মিনেটর (যা তার নিজস্ব লাইনে উপস্থিত থাকতে হবে)। এটি আসলে 2 হওয়ার দরকার নেই: tio.run/## KypNqvz
মার্টিন এন্ডার

25

বিদারণ , 6 বাইট

দেখা যাচ্ছে যে এই উত্তরগুলির মধ্যে এটি এখন সংক্ষিপ্ততম "যথাযথ" কুইন।

'!+OR"

ব্যাখ্যা

নিয়ন্ত্রণের প্রবাহ Rএকক ডানদিকে যাওয়া (1,0)পরমাণুর সাথে শুরু হয় । এটি "টগলিং প্রিন্ট মোডে আঘাত করে এবং তারপরে লাইনের চারপাশে মোড়ানো হয় আবার একইটিকে '!+ORআঘাত করার আগে "এবং মুদ্রণ মোডে প্রস্থান করার আগে মুদ্রণ করে।

যে "নিজেই মুদ্রিত হতে। সবচেয়ে সংক্ষিপ্ততম উপায়টি '"O(যেখানে '"অণুর ভরকে চরিত্রের কোডের কোড নির্ধারণ করে "এবং Oঅক্ষরটি মুদ্রণ করে এবং পরমাণুকে ধ্বংস করে দেয়) তবে আমরা যদি এটি করি তবে" মুদ্রণ মোডে হস্তক্ষেপ করবে। সুতরাং পরিবর্তে আমরা পরমাণুর মান সেট করা '!( এর চেয়ে কম এক "), তারপরে বৃদ্ধি +এবং তারপরে ফলাফলটি মুদ্রণ করুন O

বিকল্প

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

8 বাইট ব্যবহার Jআম্প

' |R@JO"

আবার, কোডটি শুরু হয় R@অদলবদল ভর এবং শক্তি দিতে (0,1)। সুতরাং এটি Jপরমাণুটিকে Oসোজা উপরের দিকে লাফিয়ে তোলে "। তারপরে, আগের মতো, "সমস্তগুলি স্ট্রিং মোডে মুদ্রিত হয়। এরপরে, পরমাণু |তার দিকটি বিপরীত করতে হিট করে এবং তার পরে যায়'"O মুদ্রণের" । স্থানটি খানিকটা বিরক্তিকর, তবে এটি প্রয়োজনীয় বলে মনে হচ্ছে, কারণ অন্যথায় 'এটি পরমাণুর সাথে আচরণ করবে| আয়নার পরিবর্তে চরিত্র হিসাবে ।

দুটি পরমাণু ব্যবহার করে 8 বাইট

"'L;R@JO

এটিতে দুটি পরমাণু রয়েছে, বাম থেকে যাওয়া Lএবং ডানদিকে যাওয়া থেকে শুরু করে R। বাম-বাম পরমাণু তার মান সেট করে '"যার দ্বারা সঙ্গে সঙ্গে মুদ্রণ করা হয় O(এবং পরমাণু ধ্বংস)। ডানদিকে যাওয়া পরমাণুর জন্য, আমরা আবার ভর এবং শক্তি অদলবদল করি, Oপ্রিন্ট মোডে বাকী কোডটি মুদ্রণের জন্য ঝাঁপিয়ে পড়ি । এর পরে এর মানটি সেট করা থাকে 'Lতবে এটি কোনও ব্যাপার নয় কারণ পরমাণুটি পরে ফেলে দেওয়া হয় ;


উত্সটিতে কোড / ডেটা বিচ্ছিন্নতার কারণে প্রযুক্তিগতভাবে অবৈধ।
ক্যালকুলেটরলাইন

4
@CalculatorFeline '!+এনকোড "
মার্টিন এেন্ডার

আমি ফিশনের সাথে পরিচিত নই, তবে |R@JO"'কাজ করব, বা এর পরেও আপনার 'কি সেই জায়গার দরকার হবে ?
মাইল্ডলি মিল্কিওয়েস্ট 6:38

1
@ মিস্টাফিগিন্স আমি এটির মত মনে করি তবে আরও গুরুত্বপূর্ণ বিষয় আপনি 'প্রথমটি মুদ্রণ করতে চাই ।
মার্টিন এন্ডার

24

ক্রস ব্রাউজার জাভাস্ক্রিপ্ট (41 অক্ষর)

এটি শীর্ষ 5 ওয়েব ব্রাউজারে (IE> = 8, মজিলা ফায়ারফক্স, গুগল ক্রোম, সাফারি, অপেরা) কাজ করে। এগুলির যে কোনও একটিতে এটি বিকাশকারীর কনসোলে প্রবেশ করুন:

eval(I="'eval(I='+JSON.stringify(I)+')'")

এটি "প্রতারণা" নয় - ক্রিস জেস্টার-ইয়ং-এর একক-বাইট কোয়েনের বিপরীতে, কারণ সহজেই alert()ফাংশনটি ব্যবহার করতে এটি পরিবর্তন করা যেতে পারে (14 টি অক্ষরের দাম রয়েছে):

alert(eval(I="'alert(eval(I='+JSON.stringify(I)+'))'"))

বা একটি বুকমার্কলে রূপান্তরিত (22 টি অক্ষরের দাম):

javascript:eval(I="'javascript:eval(I='+JSON.stringify(I)+')'")

24

সি, 64 60 বাইট

main(s){printf(s="main(s){printf(s=%c%s%1$c,34,s);}",34,s);}

এখনও অবধি, এটি সবচেয়ে স্বল্পতম সি কুইন। একটি বর্ধিত অনুগ্রহ আছেযদি আপনি একটি সংক্ষিপ্ত পরিমাণ খুঁজে পান তবে ।

এটি একটি পসিক্সে জিসিসি , কলং এবং টিসিসিতে কাজ করে পরিবেশ। এটি তাদের সকলের সাথে অতিরিক্ত পরিমাণে অপরিজ্ঞাত আচরণের আহ্বান জানায়।

শুধু মজা করার জন্য, এখানে একটি রেপো রয়েছে যাতে আমার জানা সমস্ত সি কুইন রয়েছে। যদি আপনি কোনও আলাদা খুঁজে পান বা লেখেন যা বিদ্যমানগুলিতে নতুন এবং সৃজনশীল কিছু যুক্ত করে for

মনে রাখবেন এটি কেবল একটি ASCII পরিবেশে কাজ করে। এই জন্য কাজ করে EBCDIC , কিন্তু এখনও প্রয়োজন POSIX । সৌভাগ্য যেভাবেই কোনও পসিক্স / ইবিসিডিক পরিবেশ সন্ধান করুন: পি


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

  1. main(s)নির্যাতনের mainএর আর্গুমেন্ট, একটি কার্যত untyped পরিবর্তনশীল প্রকাশক s। (দ্রষ্টব্য যে sবাস্তবে টাইপড নয়, তবে তালিকাবদ্ধ সংকলকগণ যেহেতু এটি প্রয়োজনীয় হিসাবে স্বয়ংক্রিয়ভাবে কাস্ট করেছেন তাই এটি হতে পারে *))
  2. printf(s="..."sপ্রদত্ত স্ট্রিংয়ে সেট করে এবং এতে প্রথম আর্গুমেন্টটি পাস করে printf
  3. sসেট করা আছে main(s){printf(s=%c%s%1$c,34,s);}
  4. %cহওয়া ASCII সেট করা হয় 34, "। এটি কুইনকে সম্ভব করে তোলে। এখন sএই মত দেখাচ্ছে :
    main(s){printf(s="%s%1$c,34,s);}.
  5. %sসেট করা হয় sনিজেই, যা # 2 কারণে সম্ভব। এখন sএই মত দেখাচ্ছে :
    main(s){printf(s="main(s){printf(s=%c%s%1$c,34,s);}%1$c,34,s);}.
  6. %1$cহওয়া ASCII 34 সেট করা হয় ", printfপ্রথম ** যুক্তি 's। এখন এর sমতো দেখাচ্ছে:
    main(s){printf(s="main(s){printf(s=%c%s%1$c,34,s);}",34,s);}
    ... যা মূল উত্স কোড হিসাবে ঘটে।

* উদাহরণস্বরূপ @ পাভেলকে
** বিন্যাস নির্দিষ্টকরণের পরে প্রথম যুক্তি - এই ক্ষেত্রে, ধন্যবাদ s। ফর্ম্যাট নির্দিষ্টকারীর উল্লেখ করা অসম্ভব।


আমি মনে করি এটি অসম্ভব যে এটি একই পদ্ধতির সাথে আরও সংক্ষিপ্ত হবে। যদি printfএর ফর্ম্যাট নির্দিষ্টকরণের মাধ্যমে অ্যাক্সেসযোগ্য হয় $তবে এটি 52 বাইটের জন্য কাজ করবে:

main(){printf("main(){printf(%c%0$s%1$c,34);}",34);}

যদিও এটি অবশ্যই প্রতিদ্বন্দ্বী হিসাবে গণনা করা উচিত নয়, 1994_smr.c , 1994 এর আন্তর্জাতিক ওবফাসেক্টেড সি কোড প্রতিযোগিতা, "বিধিগুলির সবচেয়ে খারাপ ব্যবহার" এর বিজয়ী অবশ্যই সংক্ষিপ্ত।
রায়

@ রায় এটি অনুমোদিত নয়। এটি কোনও সংজ্ঞা অনুসারে সঠিক কুইন নয়। সেই প্রোগ্রামের কারণে কোয়েনের নিয়মগুলি পরিবর্তন করা হয়েছিল: পি
এমডি এক্সএফ

আমি সম্পূর্ণরূপে একমত, তবে এটি একটি আকর্ষণীয় পর্যাপ্ত হ্যাক যেটি যে কোনও সময় যদি historicalতিহাসিক কারণে কেবলমাত্র একটি ক্ষুদ্রতম কুইন উল্লেখ করে তবে তা উল্লেখযোগ্য।
রায়

4
sধরণের int, কোনও "টাইপযুক্ত ভেরিয়েবল" নয়।
22:36

2
এই সংকলকগুলি স্পষ্টতই কোনও পয়েন্টারের ইনটিকে রূপান্তর করতে দেয়। s=3স্পষ্টতই কাজ করবে না কারণ আপনার দুবার স্ট্রিংটি পাস করতে হবে printf
শে

24

জাভা, 528 বাইট:

একটি আসল পদ্ধতির সাথে জাভা সমাধান:

import java.math.*;class a{public static void main(String[]a){BigInteger b=new BigInteger("90ygts9hiey66o0uh2kqadro71r14x0ucr5v33k1pe27jqk7mywnd5m54uypfrnt6r8aks1g5e080mua80mgw3bybkp904cxfcf4whcz9ckkecz8kr3huuui5gbr27vpsw9vc0m36tadcg7uxsl8p9hfnphqgksttq1wlolm2c3he9fdd25v0gsqfcx9vl4002dil6a00bh7kqn0301cvq3ghdu7fhwf231r43aes2a6018svioyy0lz1gpm3ma5yrspbh2j85dhwdn5sem4d9nyswvx4wmx25ulwnd3drwatvbn6a4jb000gbh8e2lshp",36);int i=0;for(byte c:b.toByteArray()){if(++i==92)System.out.print(b.toString(36));System.out.print((char)c);}}}

পাঠযোগ্য আকারে:

import java.math.*;
class a
{
    public static void main (String [] a)
    {
        BigInteger b=new BigInteger ("90ygts9hiey66o0uh2kqadro71r14x0ucr5v33k1pe27jqk7mywnd5m54uypfrnt6r8aks1g5e080mua80mgw3bybkp904cxfcf4whcz9ckkecz8kr3huuui5gbr27vpsw9vc0m36tadcg7uxsl8p9hfnphqgksttq1wlolm2c3he9fdd25v0gsqfcx9vl4002dil6a00bh7kqn0301cvq3ghdu7fhwf231r43aes2a6018svioyy0lz1gpm3ma5yrspbh2j85dhwdn5sem4d9nyswvx4wmx25ulwnd3drwatvbn6a4jb000gbh8e2lshp", 36); 
        int i=0; 
        for (byte c:b.toByteArray ())
        {
            if (++i==92) 
                System.out.print (b.toString (36)); 
            System.out.print ((char) c);
        }
    }
}

এটা কিভাবে কাজ করে?
লুভজো

1
@ লভজো: অন্যান্য সমাধানগুলির মতো যা কোড দুটি অংশে কাটা এবং পুরো স্ট্রিংটি সন্নিবেশ করে যা কোডটি আবার অভ্যন্তরে পুনঃসংশোধন করে, তবে পুরো কোডটি কেবল একটি স্ট্রিং নয় তবে বেস 36-এ দীর্ঘ সংখ্যা হিসাবে এনকোডেড (26 বর্ণানুক্রমিক অক্ষর + 10) সংখ্যার)।
ব্যবহারকারী অজানা

1
এই যদি করা সংক্ষিপ্ত করা যেতে পারে if(++i==92),
tuskiomi

2
@ টুস্কিওমি: ধন্যবাদ, দুটি চরিত্রের জন্য সংক্ষিপ্ত
ব্যবহারকারী অজানা

1
@ ইউজারুননড প্রকৃতপক্ষে, a*জাভাতে অ্যারেটি প্রস্থান না হওয়ায় এটি গ। গল্ফের অন্যান্য কিছু অংশ :, import java.math.*;class a{public static void main(String[]a){BigInteger b=new BigInteger("abc",36);int i=0;for(int c:b.toByteArray())System.out.printf("%s%c",++i==92?b.toString(36):"",c);}}যেখানে abcনতুন গণনা করা যাদু নম্বর থাকবে। জাভা 8+ এটি পরিবর্তন করা সম্ভব class a{public static void mainকরতে interface a{static void main, এবং জাভা 10+ এটা পরিবর্তন করা সম্ভব import java.math.*;এবং BigInteger b=new BigInteger(করতে var b=new java.math.BigInteger(
কেভিন ক্রুইজসেন

23

মুরগি , 7

chicken

না, এটি সরাসরি প্রতিধ্বনিত হয় না :)


ড্যামনিত, আপনি আমাকে এতে মারলেন :)
ট্যাকোনট

এটি প্রতিধ্বনিত হয় না, এটি স্ট্রিং chicken!
এরিক দি আউটগলফার

কোনও কোড / ডেটা পৃথকীকরণ এবং অতএব অবৈধ।
ক্যালকুলেটরলাইন

10
@ ক্যালকুলেটরফ্লাইন আপনি কি বিধিগুলি পড়েছেন?
টিমটেক

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

23

রেটিনা , 20 14 9 7 বাইট

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

সুতরাং এখানে একটি যথাযথ:

>\`
>\`

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

বিকল্পভাবে, আমরা এর ;পরিবর্তে ব্যবহার করতে পারি >

ব্যাখ্যা

প্রোগ্রামটিতে একটি একক প্রতিস্থাপন থাকে যা আমরা দুবার মুদ্রণ করি।

প্রথম লাইনে, `কনফিগারেশনটিকে রেজেক্স থেকে পৃথক করে, তাই রেজেক্স খালি থাকে। সুতরাং খালি স্ট্রিং (অর্থাত্ অস্তিত্বহীন ইনপুট) দ্বিতীয় লাইন, ভার্ব্যাটিম দিয়ে প্রতিস্থাপিত হয়।

ফলাফলটি দু'বার মুদ্রণ করতে, আমরা এটি দুটি আউটপুট পর্যায়ে গুটিয়ে রাখি। অভ্যন্তরীণটি, \একটি অনুসরণকারী লাইনফিড দিয়ে ফলাফল মুদ্রণ করে এবং বাইরেরটি, >এটি ছাড়াই প্রিন্ট করে।

আপনি যদি রেটিনার সাথে কিছুটা পরিচিত হন, আপনি হয়ত ভাবছেন যে রেটিনার অন্তর্নিহিত আউটপুটটির কী হয়েছিল। রেটিনার অন্তর্নির্মিত আউটপুট একটি আউটপুট পর্যায়ে কোনও প্রোগ্রামের চূড়ান্ত পর্যায়ে মোড়ক দিয়ে কাজ করে। তবে, চূড়ান্ত পর্যায়ে ইতিমধ্যে একটি আউটপুট পর্যায়ে থাকলে রেটিনা এটি করবে না stage এর কারণটি হ'ল কোনও সাধারণ প্রোগ্রামে অন্তর্নির্মিত আউটপুট পর্যায়টি বিশেষের মতো \বা ;একক বাইট দ্বারা প্রতিস্থাপিত করতে সক্ষম হয়ে ওঠে ( .পতাকাটির সাথে অন্তর্ভুক্তটি থেকে মুক্তি পাওয়ার পরিবর্তে )। দুর্ভাগ্যক্রমে, এই আচরণটি কুইনের জন্য আমাদের দুটি বাইট ব্যয় করে।


20

জাভাস্ক্রিপ্ট (36 চর)

(function a(){alert("("+a+")()")})()

এটি, এএএএএফসিটি, এখন পর্যন্ত পোস্ট করা সংক্ষিপ্ত জাভাস্ক্রিপ্ট কুইন।


1
এটা ... চিত্তাকর্ষক। এটি আমার জন্য কীভাবে কাজ করে তা ব্যাখ্যা করা উচিত 8- |
তেহশ্রাইক

3
@ টিহশ্রাইক ইঙ্গিত: আপনি বিষয়বস্তুগুলিকে স্ট্রিংয়ে জোর করে একটি ফাংশন দেখতে পারেন। উদাহরণস্বরূপ, যদি আপনার কোনও ফাংশন থাকে তবে আপনি aকল করে এর সামগ্রীগুলি অ্যাক্সেস করতে পারেন a.toString
পিটার ওলসন

7
পেডেন্টিক হওয়ার জন্য, যদিও এটি আপনার জাভাস্ক্রিপ্ট বাস্তবায়ন ফাংশনটিকে aঠিক একইভাবে স্ট্রিংফাই করে যা উপরে লেখা হয়েছে। যাইহোক, এই কোডটির আউটপুট কোনও জাভাস্ক্রিপ্ট প্রয়োগের ক্ষেত্রে কোয়াইন হতে পারে।
ইলমারি করোনেন

1
এখানে একই quine, 1 বাইট খাটো: !function a(){alert("!"+a+"()")}()
ইসমাইল মিগুয়েল

1
(a=()=>alert(($ {a})))()
ডেনিস সি

19

গল্ফস্ক্রিপ্ট, 8 বাইট

আমি সর্বদা ভাবি যে সংক্ষিপ্ত (সত্য) গল্ফস্ক্রিপ্ট কুইনটি 9 বাইট ছিল:

{'.~'}.~

যেখানে ট্রেলিং লাইনফিডটি প্রয়োজনীয় কারণ গল্ফস্ক্রিপ্ট ডিফল্ট অনুসারে একটি অনুচ্ছেদে লাইনফিড প্রিন্ট করে।

তবে আমি সবেমাত্র একটি 8-বাইট কুইন পেয়েছি, যা ঠিক এই লাইনফিড বিধিনিষেধের আশেপাশে কাজ করে:

":n`":n`

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

সুতরাং ক্যাচটি হ'ল গল্ফস্ক্রিপ্ট কোনও অনুচ্ছেদে লাইনফিডটি মুদ্রণ করে না, তবে এটি এর লিখিত সামগ্রী মুদ্রণ করে n প্রোগ্রামের শেষে । এটি ঠিক nযেটির সাথে শুরু করার জন্য একটি লাইনফিড রয়েছে। সুতরাং ধারণাটি স্ট্রিংয়ের সাথে এটি প্রতিস্থাপন করা হবে ":n`"এবং তারপরে স্ট্রিংয়েফিং করা হবে, যেমন স্ট্যাকের অনুলিপিগুলি কোট সহ nপ্রিন্ট করে এবং প্রিন্টে অনুলিপিতে সংরক্ষণ করা হয় ।

টমাস কোয়ার নির্দেশ অনুসারে, 7-বাইট সিজেএম কুইনটি 8-বাইট সমাধানেও মানিয়ে নেওয়া যেতে পারে:

".p"
.p

আবার, আমাদের পেছনের লাইনফিডটি দরকার।


6
গল্ফস্ক্রিপ্ট অদ্ভুত।
ক্যালকুলেটরলাইন

19

ল্যাবরেথ , 124 110 53 বাইট

9 বাইট বন্ধ করে গল্ফ করার জন্য Sp3000 কে ধন্যবাদ, যা আমাকে অন্য 7 টিতে গল্ফ দেওয়ার অনুমতি দিয়েছে।

44660535853919556129637653276602333!
1
:_98
/8 %
@9_.

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

ব্যাখ্যা

101:

  • ল্যাবরেথ একটি স্ট্যাক ভিত্তিক 2D ভাষা। স্ট্যাকটি নিরবচ্ছিন্ন এবং শূন্যে ভরা, সুতরাং খালি স্ট্যাক থেকে পপিং কোনও ত্রুটি নয়।
  • সম্পাদন প্রথম বৈধ অক্ষর থেকে শুরু হয় (এখানে শীর্ষে বাম)। প্রতিটি সংযোগে, যেখানে নির্দেশিকা পয়েন্টার (আইপি) গ্রহণের জন্য দুটি বা ততোধিক সম্ভাব্য পাথ রয়েছে, সেখানে স্ট্যাকের শীর্ষটি কোথায় পরীক্ষা করা উচিত তা নির্ধারণ করার জন্য পরীক্ষা করা হয়। নেতিবাচক বাম দিকে ঘুরছে, শূন্য এগিয়ে এবং ধনাত্মক ডান দিকে ঘুরছে turn
  • উত্স কোডের অঙ্কগুলি সংশ্লিষ্ট নম্বরটিকে ধাক্কা দেয় না - পরিবর্তে, তারা স্ট্যাকের শীর্ষে পপ করে এবং ধাক্কা দেয় n*10 + <digit>। এটি বিশাল সংখ্যককে সহজেই বিল্ডিং করতে দেয়। নতুন নম্বর শুরু করতে, ব্যবহার করুন _, যা শূন্যকে ঠেলে দেয়।
  • " কোন বিকল্প নেই।

প্রথমে, আমি একটি সহজ সরল সংস্করণটি ব্যাখ্যা করব যা একটি বাইট দীর্ঘ, তবে কিছুটা কম যাদুকরী:

395852936437949826992796242020587432!
"
:_96
/6 %
@9_.

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

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

এড়ানোর মাধ্যমে {}, আমাদের সর্বোচ্চ চরিত্রের কোডটি প্রয়োজন _(95) যেমন বেস 96 যথেষ্ট (বেস কম রেখে, শুরুতে সংখ্যাটি সংক্ষিপ্ত)। সুতরাং আমরা যা এনকোড করতে চাই তা হ'ল:

!
"
:_96
/6 %
@9_.

এই অক্ষরগুলিকে তাদের কোড পয়েন্টগুলিতে পরিণত করা এবং ফলাফলটিকে একটি বেস -৯৯ নম্বর হিসাবে আচরণ করা (এর সাথে নূন্যতম-উল্লেখযোগ্য সংখ্যার সাথে !সর্বাধিক-উল্লেখযোগ্য একটি ., কারণ এটি সেই ক্রম যা আমরা সংখ্যাটি বিচ্ছিন্ন করব), আমরা পেয়েছি

234785020242697299628949734639258593

এখন কোডটি দুর্দান্ত শীতল কৌশল দিয়ে শুরু হয়েছে (যদি আমি এটি বলতে পারি) যা আমাদের এনকোডিংটি আবার মুদ্রণ করতে এবং খুব কম ওভারহেড দিয়ে ডিকোডিংয়ের জন্য অন্য অনুলিপি রাখতে দেয়: আমরা কোডটি বিপরীতে রেখেছি put আমি ফলাফলটি এই সিজেএম স্ক্রিপ্টের সাথে গণনা করি সুতরাং আসুন কোডের দিকে এগিয়ে যাওয়া যাক। এখানে শুরু:

395852936437949826992796242020587432!
"

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

তবে এখন আইপি একটি শেষ প্রান্তে এসে পৌঁছেছে। এর অর্থ এটি ঘুরে দাঁড়ায় এবং এখন পশ্চিমে ফিরে যায় ( !আবার কার্যকর না করে)। এবার, সুবিধামত, আইপি পিছন থেকে সামনের দিকে নম্বরটি পড়ে, যাতে এখন স্ট্যাকের শীর্ষে নম্বরটি করে উৎস বাকি সঙ্কেতাক্ষরে লিখা।

যখন আইপি এখন আবার উপরের বাম কোণে আঘাত করে, এটি কোনও মৃত শেষ নয় কারণ আইপি বাম দিকে ঘুরতে পারে, তাই এটি করে এবং এখন দক্ষিণে চলে যায়। "কোন সমিতি যে এখানে আমরা প্রয়োজন কোডের প্রধান লুপ থেকে সংখ্যা আলাদা করা হয়। যার কথা:

...
"
:_96
/6 %
@9_.

স্ট্যাকের শীর্ষটি এখনও শূন্য না হওয়া পর্যন্ত, আইপি নীচের লুপটিতে বরং এটি ঘন কোডের মাধ্যমে চলবে:

"
>>>v
^< v
 ^<<

বা রৈখিকভাবে বিছানো:

:_96%._96/

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

লুপ কোডটি নিজেই আসলে বেশ সরল (

:    # Duplicate the remaining encoding number N.
_96  # Push 96, the base.
%.   # Take modulo and print as a character.
_96  # Push 96 again.
/    # Divide N by 96 to move to the next digit.

একবার Nশূন্য হিট, নিয়ন্ত্রণ প্রবাহ পরিবর্তন। এখন আইপি সরাসরি /(অর্থাৎ পশ্চিম) পরে সরাসরি এগিয়ে যেতে চাইবে , তবে সেখানে একটি প্রাচীর রয়েছে। সুতরাং পরিবর্তে যদি ঘুরে দেখা যায় (পূর্ব), 6আবার কার্যকর করে। এটি স্ট্যাকের শীর্ষটিকে ইতিবাচক করে তোলে, তাই আইপি ডানদিকে (দক্ষিণ) পরিণত হয় এবং কার্যকর করে 9। স্ট্যাকের শীর্ষটি এখন 69, তবে আমরা যা যত্ন করি তা হ'ল এটি ইতিবাচক। আইপি আরেকটি ডানদিকে ঘুরবে (পশ্চিম) এবং কোডটির @অবসান ঘটাতে চলে আসে ।

সব মিলিয়ে আসলে বেশ সহজ।

ঠিক আছে, এখন আমরা কীভাবে সেই অতিরিক্ত বাইটটি শেভ করব। স্পষ্টতই, এই নো-অপশনটি অপব্যয়যুক্ত বলে মনে হচ্ছে, তবে আমাদের সেই অতিরিক্ত সারিটি দরকার: লুপটি সংখ্যার সাথে সংলগ্ন থাকলে, আইপি ইতিমধ্যে পুরো সংখ্যাটি ট্র্যাভার করার পরিবর্তে তত্ক্ষণাত সেখানে চলে যাবে। সুতরাং আমরা সেই অপশনটি দিয়ে দরকারী কিছু করতে পারি।

ঠিক আছে, নীতিগতভাবে আমরা এটিকে এনকোডিংয়ের সাথে শেষ অঙ্কটি যুক্ত করতে ব্যবহার করতে পারি। এনকোডিং সত্যিই প্রথম লাইন সব হতে হবে না ... !শুধু নিশ্চিত যাই হোক না কেন যে হয় সেখানে সেখানে মুদ্রিত হয়ে যায়।

যদিও এখানে একটি ধরা আছে, আমরা কেবল এটি করতে পারি না:

95852936437949826992796242020587432!
3
:_96
/6 %
@9_.

সমস্যা হলো এখন আমরা পরিবর্তন করেছি "একটি করতে 3যা প্রকৃত সংখ্যা আমরা চাই পরিবর্তন। এবং নিশ্চিত যে সংখ্যাটি শেষ হয় না 3। যেহেতু কোডটি কোডটি থেকে শুরু করে পুরোপুরি নির্ধারিত হয় !আমরা সে সম্পর্কে অনেক কিছুই করতে পারি না।

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

  1. আমরা পরিবর্তন @করতে পারেন /। সেক্ষেত্রে আমরা যে কোনও অঙ্ক ব্যবহার করতে পারি 1357এবং একটি ম্যাচিং এনকোডিং পেতে পারি। যাইহোক, এর অর্থ হ'ল প্রোগ্রামটি তখন একটি ত্রুটি দিয়ে শেষ হয় যা অনুমোদিত তবে এটি খুব পরিষ্কার বলে মনে হচ্ছে না।
  2. স্পেসগুলি কেবলমাত্র "প্রাচীর" অক্ষর নয়। প্রতিটি অব্যবহৃত অক্ষর, উল্লেখযোগ্যভাবে সমস্ত অক্ষর। যদি আমরা একটি বড় হাতের অক্ষর ব্যবহার করি তবে আমাদের এটি বেস করার জন্য বেসটি বাড়ানোর প্রয়োজনও নেই (যেগুলি কোড পয়েন্টগুলি নীচে রয়েছে _)। 26 টি পছন্দ প্রচুর সম্ভাবনা দেয়। যেমন Aকোনও বিজোড় অঙ্কের কাজের জন্য। এটি কিছুটা সুন্দর, তবে এখনও এটি সমস্ত মার্জিত বলে মনে হচ্ছে না, কারণ আপনি সেখানে সত্যিকারের কোডটিতে কোনও চিঠি ব্যবহার করবেন না।
  3. আমরা একটি বৃহত্তর বেস ব্যবহার করতে পারেন। যতক্ষণ না আমরা বেসটি উল্লেখযোগ্যভাবে বৃদ্ধি না করব ততক্ষণ এনকোডিংয়ের দশমিক অঙ্কের সংখ্যা একই থাকবে (বিশেষত, 104 অবধি কোনও বেস ভাল, যদিও 99 এর চেয়ে বেশি ঘাঁটিগুলিতে কোডে নিজেই অতিরিক্ত অক্ষর প্রয়োজন)। ভাগ্যক্রমে, বেস 98 একক মিলের সমাধান দেয়: যখন আমরা 1অঙ্কটি ব্যবহার করি , তখন এনকোডিংটিও শেষ হয় 1। 96, 97, 98, 99 ঘাঁটির মধ্যে এটিই একমাত্র সমাধান, সুতরাং এটি অবশ্যই খুব ভাগ্যবান। এবং এইভাবেই আমরা এই উত্তরের শীর্ষে কোডটি শেষ করব।

19

হারিয়েছেন , 293 262 249 বাইট

>:2+52*:6*:(84*+75*):>:::::[[[[[[[:[(52*)>::::[[[[[[:[84*+@>%?!<((((((((((([[[[[[[[[[[[[[ "
\#<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\

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

ব্যাখ্যা

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

হারানো কুইন এত কঠিন কেন?

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

বলা হচ্ছে কিছু করার কিছু মানক উপায় আছে। উদাহরণস্বরূপ এখানে স্ট্রিং মুদ্রণের মানক উপায়।

>%?"Stringv"(@
^<<<<<<<<<<<<<

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

প্রথমে যে কাজটি করতে হয়েছিল তা হ'ল লুপটি কিছুটা পুনরায় কাজ করা, বিদ্যমান লুপটি স্ট্রিং বিন্যাসের সাথে সুনির্দিষ্ট ছিল।

>%?!<"Stringv"(@
^<<<<<<<<<<<<<<<
^<<<<<<<<<<<<<<<

এর সম্ভাবনা এড়াতে আমাদের একটি দ্বিতীয় স্ট্রিম যুক্ত করতে হবে !এই স্রোতের উপর ঝাঁপিয়ে পড়া এবং একটি লুপ তৈরির ।

এখন আমরা এটি স্ট্যান্ডার্ড কুইন ফর্ম্যাটের সাথে মিশাতে চাই। হারানো ক্লিনের উপর ভিত্তি করে যেহেতু আমি মূলত মার্টিন ইন্ডারের জন্য ক্লিন কুইন ধার নিয়েছিলাম

:2+@>%?!< "
<<<<^<<<<<<
<<<<^<<<<<<

এটি বেশ সহজেই কুইনের প্রথম লাইনটি মুদ্রণ করে। এখন আমাদের যা করতে হবে তা হ'ল স্ট্রিমগুলিকে হার্ড-কোড করা। ভাল এটি করা চেয়ে সহজ হয়। আমি এটি করার জন্য প্রায় চারটি ভিন্ন পদ্ধতির চেষ্টা করেছি। আমি কেবল যেটি কাজ করেছে তার বর্ণনা দেব।

এখানে ধারণাটি হ'ল দরজাগুলি ব্যবহার করে পছন্দসই তীরগুলি পেতে। একটি ডোর একটি বিশেষ ধরণের আয়না যা প্রতিবার আঘাত করার সময় পরিবর্তিত হয়। [বাম ]থেকে এবং ডান থেকে আসা আইপ্স প্রতিফলিত করে। যখন এগুলির উভয় দিক থেকে কোনও আইপি দ্বারা আঘাত করা হয় তখন স্যুইচ ওরিয়েন্টেশন। বারবার কোনও ক্রিয়াকলাপ সম্পাদনের জন্য আমরা এই দরজাগুলির একটি লাইন এবং একটি স্থিতিশীল প্রতিফলক তৈরি করতে পারি।

>:[[[

:তিনবার পারফর্ম করবেন । এইভাবে যদি আমরা <হাতের আগে স্ট্যাকের দিকে কোনও চাপ দিই তবে আমরা কম বাইটের সাহায্যে তাদের প্রচুর পরিমাণে তৈরি করতে পারি। আমরা এর মধ্যে দুটি তৈরি করি, প্রতিটি লাইনের জন্য একটি করে এবং এর মধ্যে আমরা একটি নতুন লাইন রাখি, তবে দ্বিতীয়টি কেবলমাত্র !এটির জন্য আবশ্যক যতক্ষণ না এটি যুক্ত করা হয়, অন্য কিছু আমাদের কিছু বাইট সংরক্ষণ করে খালি ছেড়ে যেতে পারে। ঠিক আছে এখন আমাদের স্ট্রিমে উল্লম্ব তীরগুলি যুক্ত করা দরকার। মূল অপ্টিমাইজেশনটি এখানেই আসে all প্রোগ্রামটির "শুরু" এ সরাসরি সমস্ত আইপিকে পুনঃনির্দেশ করার পরিবর্তে আমরা তাদের পরিবর্তে বাম দিকে ফিরিয়ে আনব, কারণ আমরা ইতিমধ্যে জানি যে ipগুলি বাম দিকে শুরু হয় আবশ্যককাজ (বা অন্তত চূড়ান্ত সংস্করণে কাজ করবে) আমরা অন্যান্য আইপিএসকেও পুনর্নির্দেশ করতে পারি। এটি কেবল এটি বাইটে কম সস্তা করে না, আমি মনে করি এই অপ্টিমাইজেশনটিই কোয়াইনকে সম্ভব করে তোলে।

তবে এখনও কিছু সমস্যা রয়েছে, সবচেয়ে গুরুত্বপূর্ণ হ'ল >ধাক্কা দেওয়ার পরে শুরু হওয়া আইপিএস তবে আমরা এর অনুলিপিগুলি তৈরি করা শুরু করার আগে। এই জাতীয় আইপিএস কপিয়ারের ভিতরে প্রবেশ করবে এবং 0 টি একক প্রতিলিপি তৈরি করবে এটি খারাপ কারণ আমাদের স্ট্যাক সাফ করার প্রক্রিয়াটি স্ট্যাকের নীচের অংশটি নির্ধারণ করতে শূন্য ব্যবহার করে, নীচে পুরো শূন্যস্থান ছেড়ে যায় leaving আমাদের আরও শক্তিশালী স্ট্যাক স্যানিটেশন পদ্ধতি যুক্ত করতে হবে। যেহেতু স্ট্যাকটি খালি রয়েছে তা বলার কোনও আসল উপায় নেই, তাই আমাদের স্ট্যাকের যতগুলি সম্ভব সম্ভব আইটেম ধ্বংস করার চেষ্টা করতে হবে। এখানে আমরা আবার বর্ণিত দরজার পদ্ধতিটি ব্যবহার করব। ((((((((((([[[[[[[[[[[[[[জিরোগুলি থেকে মুক্তি পাওয়ার জন্য স্যানিটাইজারের ঠিক পরে আমরা প্রথম লাইনের শেষে যুক্ত করব ।

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

এটি এখন, আশা করি আপনি বুঝতে পারছেন যে এটি এখন কীভাবে কাজ করে।


: / অনেকগুলি টাইপস এবং নিখোঁজ লিঙ্কগুলি
কেবলমাত্র ASCII

17

হ্যাঁ , 1165 879 606 561 540 522 498 + 7 = 505 বাইট

ডাক্তারের -cheatসংজ্ঞাটি অনুমোদনের জন্য পতাকাটির প্রয়োজন ।

022222120211111102222122021121202222212021112202222110222212202112110222221202122212022222102222212021222120222221022222102222210222221202222110222211022222210222221022222210222212202222221022221102211110222221022221220222212202112120221111022212202211210222212022222102211120222122022111202222120212212021221202222221022111102221210222122022222102222120212212022221102211110222122022221102222120212212022112120221111022212202112120222212=%;0e-=<;0<-=>;:0~--=1;1>=2;0%{{>0<~{~>~<<}>>>]}>]}${<#}%{@}

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

ব্যাখ্যা

এর দুটি অংশ রয়েছে (সর্বাধিক কুইনের মতো)। তথ্যটি:

022222120211111102222122021121202222212021112202222110222212202112110222221202122212022222102222212021222120222221022222102222210222221202222110222211022222210222221022222210222212202222221022221102211110222221022221220222212202112120221111022212202211210222212022222102211120222122022111202222120212212021221202222221022111102221210222122022222102222120212212022221102211110222122022221102222120212212022112120221111022212202112120222212

এবং ডিকোডার:

=%;0e-=<;0<-=>;:0~--=1;1>=2;0%{{>0<~{~>~<<}>>>]}>]}${<#}%{@}

ডেটাটি কেবল ডিকোডার (বা তার বিপরীতে) এর বাইনারি এনকোডিং। প্রত্যেকে 0একটি নতুন অক্ষর আরম্ভ করে এবং যথাক্রমে 1এস এবং 2এস হ'ল 0- এবং- 1বিট।

মনে রাখবেন যে 0এটি একটি স্ট্যান্ডার্ড ইয়ুপ কমান্ড যা শূন্যের দিকে ঠেলে দেয় 1এবং 2এই সময়ে এটি সংজ্ঞায়িত হয় না। যাইহোক, আমরা সম্পূর্ণ তথ্য অংশ কমান্ডে বরাদ্দ করি %যাতে এটি ব্যবহার না হওয়া অবধি 1এবং 2অপরিজ্ঞাত থাকতে পারে %

এরপরে, আমরা আরও কিছু কমান্ড সংজ্ঞায়িত করি:

0e-=<;
0<-=>;
:0~--=1;
1>=2;

<স্ট্যাকের শীর্ষকে হ্রাস করে, এটি বাড়িয়ে >তোলে। 1(কিছুটা অপ্রয়োজনীয়ভাবে) স্ট্যাকের শীর্ষটিকে দ্বিগুণ করে। 2এটি দ্বিগুণ করে এবং তারপরে এটি বৃদ্ধি করে। এই সংজ্ঞাগুলির জন্য ধন্যবাদ, কিছু0221111 আসলে স্ট্যাকের উপর একটি 48 (110000 বাইনারি) রেখে যাবে।

বাকি 32 বাইট দুটি অংশে প্রকৃত ডিকোডিং করে। প্রথমে আমাদের ডাটা স্ট্রিংটি পুনর্গঠন করা দরকার।

0%                ` Push a zero and then the data.
{                 ` For each value...
  {               `   Until that value is zero...
    >0<~{~>~<<}>  `   divmod 2. The div is the input to the next iteration,
                  `   the mod gives us the next bit.
    >>]           `   Increment twice (gives 2 or 3) and put at the bottom
                  `   of the stack.
  }
  >]              ` Increment the 0 and put it at the bottom as well.
}
$                 ` Reverse the entire stack.
{<#}              ` Decrement and print each number.

এবং পরিশেষে, আমরা আবার তথ্যটি পুশ করি এবং প্রতিটি মান একটি অক্ষর হিসাবে মুদ্রণ করি:

%{@}

ভবিষ্যতের রেফারেন্সের জন্য, ডেটা এনকোড করার জন্য এখানে একটি সিজেএম স্ক্রিপ্ট


17

Fueue , 423 বাইট

Fueue একটি সারিতে ভিত্তিক esolang যা চলমান প্রোগ্রাম হয় কিউ।

)$$4255%%1(~):[)$$24%%0:<[~:)~)]~[$11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<]](H-):~:[)[):~[)~:~~([:~)*[):~[$1(+48]):~+]-:~~)10)~~]/]+:5):]~:](106328966328112328136317639696111819119696281563139628116326221310190661962811611211962861109696289611619628116111612896281115421063633063961111116163963011632811111819159628151213262722151522061361613096119619190661966311961128966130281807072220060611612811961019070723232022060611

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

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

এই ব্যাখ্যা হাতছাড়া হতে পারে বা নাও পারে । অন্যদিকে আমি কীভাবে এটি আরও সংক্ষিপ্তভাবে ব্যাখ্যা করতে জানি না লোকেরা অনুসরণ করতে পারে আশা করি।

ফিউ চিট শীট

দেখা এই প্রোগ্রামটিতে ব্যবহৃত না হওয়া কয়েকটি বৈশিষ্ট্য সহ বিশদ বিবরণের জন্য এসোলাং উইকি নিবন্ধটি

  • প্রাথমিক প্রোগ্রামটি সারির প্রাথমিক অবস্থা, যাতে নিম্নলিখিত উপাদানগুলি থাকতে পারে:

    • পূর্ণসংখ্যার আক্ষরিক (কেবল উত্সে অ-নেতিবাচক, তবে নেতিবাচকগুলি গণনা করা যায়), এগুলি কার্যকর করে একটি অক্ষর মুদ্রণ করা হয়।
    • স্কোয়ার-ব্র্যাকেট সীমিত নেস্টেড ব্লকগুলি, জড় (কিছু ফাংশন তাদের উপর কাজ না করে অক্ষত সংরক্ষণ করা হয়)।
    • ক্রিয়াকলাপ, তাদের তর্কগুলি তত্ক্ষণাত্ কাতারে নিম্নলিখিত উপাদানগুলি:
      • +*/-%: পূর্ণসংখ্যার গাণিতিক ( -একাত্ম, %যৌক্তিক অবহেলা)। সংখ্যা যুক্তি না দেওয়া থাকলে জড়
      • ()<: বন্ধনীগুলিতে উপাদান রাখুন, ব্লক থেকে বন্ধনীগুলি সরান, ব্লকে চূড়ান্ত উপাদান যুক্ত করুন। দ্বিতীয়টি জড় হয়ে থাকে যদি না কোনও ব্লক অনুসরণ করে।
      • ~:: অদলবদল, সদৃশ
      • $: অনুলিপি (সংখ্যা + উপাদান নেয়)। সংখ্যাবিহীন আগে জড়
      • H: বন্ধ প্রোগ্রাম।

    মনে রাখবেন যে []বাসা থাকার সময় , ()করবেন না - আধুনিকগুলি কেবল পৃথক ফাংশন।

এক্সিকিউশন ট্রেস সিনট্যাক্স

সংখ্যাগুলির মধ্যে বাদে হোয়াইটস্পেস Fueue এ alচ্ছিক। নিম্নলিখিত প্রয়োগের ট্রেসগুলিতে এটি প্রোগ্রামের কাঠামোর পরামর্শ দেওয়ার জন্য ব্যবহৃত হবে, বিশেষত:

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

কোঁকড়া বন্ধনী {}(Fueue ব্যবহৃত হয় না) গাণিতিক প্রকাশের পূর্ণসংখ্যার ফলাফল প্রতিনিধিত্ব করতে ট্রেস ব্যবহার করা হয়। এটিতে নেতিবাচক সংখ্যা অন্তর্ভুক্ত রয়েছে, কেননা ফুয়েতে কেবল অ-নেতিবাচক আক্ষরিক রয়েছে - এটি প্রত্যাখ্যানের -কাজ function

বিভিন্ন রূপান্তরযোগ্য নাম এবং ...মান এবং সংক্ষেপগুলি বোঝাতে ব্যবহৃত হয়।

বিলম্ব কৌশল

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

ফলস্বরূপ, কোডের অনেকগুলি সিঙ্ক্রোনাইজেশনে নিবেদিত হয়, বিশেষত সঠিক সময় পর্যন্ত প্রোগ্রামের অংশগুলি কার্যকর করতে বিলম্ব করতে। এটি গল্ফ করার জন্য অনেকগুলি বিকল্প রয়েছে, যা সেই অংশগুলি অপঠনযোগ্য ব্লবগুলিতে পরিণত করে যা কেবল তাদের সম্পাদন চক্রটিকে চক্র দ্বারা চিহ্নিত করে বোঝা যায়।

এই কৌশলগুলি সর্বদা নীচে পৃথকভাবে উল্লিখিত হবে না:

  • )[A]Aএকটি চক্রের জন্য বিলম্ব । (সম্ভবত সবচেয়ে সহজ এবং সর্বাধিক পঠনযোগ্য পদ্ধতি))
  • ~efউপাদানগুলি অদলবদল করে eএবং fযা তাদের কার্যকর করতে বিলম্ব করে। (সম্ভবত কমপক্ষে পাঠযোগ্য, তবে ছোটখাটো বিলম্বের জন্য প্রায়শই সংক্ষিপ্ততম))
  • $1eএকক উপাদানকে বিলম্বিত করে e
  • -এবং %সংখ্যায় বিলম্বের জন্য দরকারী (পরে 0এবং এর জন্য 1)
  • একটি সারিতে বেশ কয়েকটি সমান উপাদান বিলম্ব করার সময় :বা $তাদের একক থেকে তৈরি করতে ব্যবহার করা যেতে পারে।
  • (nnবন্ধনীগুলিতে মোড়ানো , যা পরে সুবিধার্থে অপসারণ করা যেতে পারে। এটি সংখ্যার গণনার জন্য বিশেষত গুরুত্বপূর্ণ, যেহেতু সংখ্যাগুলি প্রথমে একটি ব্লকে না রেখে কপি করাও খুব অস্থির।

সামগ্রিক কাঠামো

বাকি ব্যাখ্যাকে চলমান প্রোগ্রামের একটি বিভাগের জন্য সাতটি ভাগে ভাগ করা হয়েছে। বৃহত্তর চক্র যার পরে তাদের অধিকাংশই পুনরাবৃত্তি করে তাদের সমগ্র কাতারে একক পাসের "চক্র" থেকে আলাদা করার জন্য "পুনরাবৃত্তি" বলা হবে।

প্রাথমিক প্রোগ্রামটি কীভাবে তাদের মধ্যে ভাগ করা হয়েছে তা এখানে:

A:  )$$4255%%1(~
B:  ):[)$$24%%0:<[~:)~)]~[$11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<]]
C:  
D:  (H-
E:  
F:  
G:  ):~:[)[):~[)~:~~([:~)*[):~[$1(+48]):~+]-:~~)10)~~]/]+:5):]~:](106328966328112328136317639696111819119696281563139628116326221310190661962811611211962861109696289611619628116111612896281115421063633063961111116163963011632811111819159628151213262722151522061361613096119619190661966311961128966130281807072220060611612811961019070723232022060611

প্রোগ্রামের শেষে বড় অঙ্কটি প্রতিটি ASCII মান থেকে 30 বিয়োগ করে বিশিষ্ট বিপরীতে এনকোড করে, অক্ষর প্রতি দুটি অঙ্ক করে (যেমন উদাহরণস্বরূপ 10এনকোড একটি (।)

উচ্চ স্তরে আপনি এই প্রোগ্রামের ডেটাটি (বিগাইনাম দিয়ে শুরু) ডান থেকে বাম দিকে প্রবাহিত হিসাবে ভাবতে পারেন, তবে বাম থেকে ডানে প্রবাহিত নিয়ন্ত্রণ control যাইহোক, নিম্ন স্তরে ফুয়ে সমস্ত সময় কোড এবং ডেটার মধ্যে পার্থক্যকে ম্লান করে।

  • বিভাগ জি বিগিনামকে এএসসিআইআই ডিজিটগুলিতে বিভক্ত করে (যেমন 0পূর্ণসংখ্যার হিসাবে অঙ্ক 48), প্রথমে কমপক্ষে উল্লেখযোগ্য অঙ্কগুলি বিভক্ত করে। এটি প্রতি 15 চক্রে একটি ডিজিট উত্পাদন করে।
  • বিভাগ E এ উত্পাদিত অঙ্কের ASCII মানগুলি (একটি ব্লকের অভ্যন্তরে) থাকে যতক্ষণ না বিভাগ E সেগুলি গ্রাস করতে পারে।
  • বিভাগ E একটি সময়ে উত্পাদিত অঙ্কগুলি দুটি পরিচালনা করে, তাদের ফর্মের ব্লকগুলিতে জুড়ে দেয় এবং [x[y]]প্রতিটি জোড়ের এনকোডযুক্ত অক্ষরও মুদ্রণ করে।
  • বিভাগ ডিটি গভীরভাবে নেস্টেড ব্লককে ধীরে ধীরে [x[y]]ব্লকগুলি থেকে এমনভাবে তৈরি করা হয় যাতে এটিতে একবারে সমস্ত অঙ্ক থাকে, সেগুলি সমস্ত মুদ্রণের জন্য চালানো যায়, তারপরে পুরো প্রোগ্রামটি থামিয়ে দেয়।
  • বিভাগ সি বিভাগ ডি নির্মাণের পরিচালনা করে, এবং বিভাগ E পুনরায় তৈরি করে
  • বিভাগ বিটি বিভাগ সি পুনরায় তৈরি করে পাশাপাশি প্রতি 30 চক্রকে পুনরায় তৈরি করে।
  • বিভাগ একটি অন্যান্য বিভাগের শেষ পুনরাবৃত্ত হওয়া পর্যন্ত চক্রকে গণনা করে। তারপরে এটি বিভাগ বি বাতিল করে এবং বিভাগ ডি চালায়

অধ্যায় একটি

বিভাগ এ প্রোগ্রামটির শেষের সময়সূচী পরিচালনা করে। একটি একক অদলবদলের ক্রিয়াকলাপটি হ্রাস করতে 4258 চক্র লাগবে ~, যা পরে বিভাগ বিতে একটি সমন্বয় করে যা এর প্রধান লুপটি থামিয়ে দেয় এবং এর পরিবর্তে বিভাগ ডি চালিয়ে যায়।

)$ $4255% %1 (~
)$%%%...%% %0 [~]
)$%%%...% %1 [~]
⋮
)$ %0 [~]
) $1[~]
)[~]
~
  • একটি $ক্রিয়াকলাপটি নীচের 4255 টি অনুলিপি তৈরি করে %যখন বন্ধনীগুলিকে (আবৃত করে ~
  • প্রতিটি চক্র সর্বশেষে এবং এর %মধ্যে নিম্নলিখিত সংখ্যাটি টগল করতে ব্যবহৃত হয় ।01
  • সমস্ত %ব্যবহার করা হয়ে গেলে , $11 টি অনুলিপি তৈরি করে [~](কার্যকরভাবে একটি এনওপি), এবং পরবর্তী চক্রটিতে )বন্ধনীগুলি সরিয়ে দেয়।

বিভাগ বি

বিভাগ বিটি প্রতি 30 চক্রে নিজেকে নতুনভাবে পুনঃজেনার পাশাপাশি বিভাগ সি এর একটি নতুন পুনরাবৃত্তি পরিচালনা করে।

) : [)$$24%%0:<[~:)~)]~[$11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<]]
) [)$$24%%0:<[~:)~)]~[$11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<]]            [BkB]
)$ $24%     %0  :<  [~:)~)]    ~ [$11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<] [BkB]
)$ %...%%% %1   < < [~:)~)] [BkB]   [$11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<]
)$ %...%% %0      < [~:)~)[BkB]] [$11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<]
)$ %...% %1         [~:)~)[BkB][$11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<]]
⋮
) $1 [~:)~)[BkB][$11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<]]
) [~:)~)[BkB][$11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<]]                    (1)
~:) ~)[BkB]                 [$11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<]
) : [BkB]                 ) [$11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<]      (2)
) [BkB] [BkB]               $11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<
  • একটি :বৃহত ব্লক নিম্নলিখিতগুলি সদৃশ করে (একটি অনুলিপি সংক্ষেপিত হিসাবে [BkB]), তারপরে )প্রথম অনুলিপি থেকে বন্ধনীগুলি সরিয়ে দেয়।
  • $$24%%0 বিভাগ অ এর মত একটি গণনা সেট আপ করে
  • যখন এটি নিচে নামা যায়, :<রূপান্তরিত হয় <<এবং ~দুটি নতুন ব্লকের পরিবর্তিত হয় , একটি নতুন বিভাগ সি এর জন্য কোডটি সর্বশেষে রেখে।
  • দুটি <ফাংশন দুটি চূড়ান্ত ব্লককে প্রথম একের মধ্যে রাখে - এটি সাধারণ পুনরাবৃত্তিতে অপ্রয়োজনীয়, তবে ~বিভাগ এ থেকে শেষ পর্যন্ত এটির কাজটি করার অনুমতি দেবে ।
  • (1) গণনা শেষ হলে, )বাইরের বন্ধনীগুলি সরিয়ে ফেলা হয়। পরবর্তী~:) সেকশন সি কোডটির শুরুতে রূপান্তরিত হয় ):এবং ~)এটিকে অদলবদল করে )
  • (২) বিভাগ বি এখন প্রাথমিক চক্রের দিকে ফিরে এসেছে, যখন ক ) খ বিভাগের সিটির নতুন পুনরাবৃত্তিটি চালানোর জন্য বন্ধনীগুলি সরিয়ে ফেলতে চলেছে

চূড়ান্ত পুনরাবৃত্তিতে, ~ বিভাগ A থেকে উপরের পয়েন্টে (1) উপরে উপস্থিত হবে:

~ ) [~:)~)[BkB][$11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<]]                  (1)
[~:)~)[BkB][$11~)~<[[+$4--498+*-:~-10)):])<~][)))~]<]]              )

দ্য ~অদলবদল )ব্লক জুড়ে এবং অধ্যায় সি মধ্যে, থেকে অধ্যায় বি প্রতিরোধ আবার চালাতে হচ্ছে।

বিভাগ সি

বিভাগ সি বিভাগের ডি'র ব্লকের সাথে নতুন অঙ্কের অক্ষর জোড়াগুলি মার্জ করে এবং বিভাগ ই এর নতুন পুনরাবৃত্তি তৈরি করে les

নিচে সঙ্গে একটি টিপিক্যাল পুনরাবৃত্তির দেখায় xএবং yসংখ্যার 'ASCII কোড উপস্থাপন করে। প্রথম পুনরাবৃত্তিতে, আগত "ডি" এবং "ই" উপাদানগুলি প্রাথমিক [H]এবং -তার পরিবর্তে, পূর্ববর্তী কোনও বিভাগ E কোনও অঙ্কের অক্ষর জোড়া তৈরি করতে চালিত হয়নি।

C                                               D             E
$11~ )  ~<[[+$4--498+*-:~-10)):])<~]  [)))~]  < [)))~[...]]   [x[y]]
~~~ ~~~ ~~~ ~~) [[+$4--498+*-:~-10)):])<~]  < [)))~] [)))~[...][x[y]]]
~~~ ~~~     )  ~ [[+$4--498+*-:~-10)):])<~] [)))~[)))~[...][x[y]]]]
~~~       ~ )   [)))~[....]]                                  [[+$4--498+*-:~-10)):])<~]
                                              ~~[)))~[....]] )[[+$4--498+*-:~-10)):])<~]
                                                [)))~[....]]  ~[+$4--498+*-:~-10)):])<~
  • এটি সিঙ্ক্রোনাইজেশনের একটি পৃথক পদ্ধতি ব্যবহার করে যা আমি এই উত্তরের জন্য আবিষ্কার করেছি। যখন আপনার ~একটি সারিতে বেশ কয়েকটি সোয়াপ ফাংশন থাকে, সারিটি প্রতিটি চক্রটি প্রায় 2/3 এ সঙ্কুচিত হয়ে যায় (কারণ এক ~দুটি অনুসরণ করে দুটি পরিবর্তন করে) তবে মাঝে মাঝে এমন একটি বাকী অংশ থাকে ~যা সাবধানতার সাথে ধ্বংসাত্মক ধ্বংসাত্মক ঘটনাটি অনুসরণ করে যা তা অনুসরণ করে।
  • $11~যেমন একটি সারি উত্পাদন। পরেরটি নীচের ব্লকটিতে ~একটি অদলবদল করে <<শেষে অন্য একটিতে বিভাগ ডি ব্লকে একটি নতুন অঙ্কের জোড়া ব্লক (ASCII কোড হিসাবে অঙ্কগুলি x এবং y) সংযোজন করা হবে।
  • পরবর্তী চক্র, ~সারিটির একটি ~~অবশিষ্টাংশ রয়েছে, যা নীচের অংশে অদলবদল ~করে )। অন্য <একটি বিভাগে ডি বিভাগ যুক্ত করে [)))~]
  • এরপরে অদলবদল ~স্বয়ংক্রিয়ভাবে ডি ডি ব্লক জুড়ে নতুন বিভাগ ই কোডের সাথে নিম্নলিখিত ব্লকটি অদলবদল করে। তারপর একটি নতুন অবশেষ ~একটি বিনিময়সমূহ )জুড়ে, এবং পরিশেষে গত ~~মধ্যে ~জুড়ে বিভাগে ই তাদের সারি swap 'র এক ঠিক যেমন )তার বন্ধনী সরিয়ে দিয়েছে।

চূড়ান্ত পুনরাবৃত্তির, বিভাগ ক-এর ~একটি অদলবদল হয়েছে )জুড়ে অধ্যায় বি এবং অধ্যায় সি মধ্যে যাইহোক, অধ্যায় সি তাই সংক্ষিপ্ত ছিলো এটি ইতিমধ্যে উধাও, এবং) বিভাগ ডি এর শুরুতে শেষ হয় up

বিভাগ ডি

বিভাগ ডি চূড়ান্ত বড় অঙ্কটি মুদ্রণ করে এবং প্রোগ্রামটি থামিয়ে দেয়। বেশিরভাগ প্রোগ্রাম চলাকালীন, এটি একটি জড় ব্লক যা বি-জি বিভাগ গঠনে সহযোগিতা করে।

    (H -
    [H]-
    ⋮
    [)))~[H-]]                  After one iteration of section C
    ⋮
    [)))~[)))~[H-][49[49]]]]    Second iteration, after E has also run
    ⋮
)   [)))~[...]]     [49[48]]    Final printing starts as ) is swapped in
    ))) ~[...][49[48]]
    )) )[49[48]] [...]
    )) 49 [48][...]             Print first 1
    ) )[48] [...]
    ) 48 [...]                  Print 0
    )[...]                      Recurse to inner block
    ...
    ⋮
    )[H-]                       Innermost block reached
    H -                         Program halts
  • প্রোগ্রামের প্রথম চক্রের মধ্যে, একটি বন্ধনী (বন্ধ করে ফাংশন আবরণ H। নীচে -, এটি অঙ্কের জোড়ার পরিবর্তে প্রথম পুনরাবৃত্তির জন্য ডামি উপাদান হিসাবে ব্যবহৃত হবে।
  • সংখ্যায় অন্তর্ভুক্ত করা প্রথম আসল অঙ্কের জুটি হ'ল অঙ্কের [49[49]]ফাইনালের 11সাথে মিল to
  • শেষ অঙ্ক যুগল [49[48]](সংশ্লিষ্ট 10সংখ্যা শুরুতে) প্রকৃতপক্ষে ব্লক মধ্যে অন্তর্ভুক্ত করা হয় না, কিন্তু এই যেমন কোনো পার্থক্য করে তোলে )[A[B]]এবং )[A][B]সমতুল্য, উভয় পরিণত A[B]

চূড়ান্ত পুনরাবৃত্তির পরে, )বিভাগ বি থেকে ডানদিকে অদলবদল করা হবে এবং বিভাগ ডি ব্লকটি ডিফলক করা হয়েছে। )))~প্রতিটি সাব-ব্লক শুরুতে নিশ্চিত করুন যে সব অংশে সঠিক অনুক্রমে মৃত্যুদন্ড কার্যকর করা হয় তোলে। শেষ পর্যন্ত অন্তর্নিহিত ব্লকটিতে একটি Hথামানো প্রোগ্রাম রয়েছে।

বিভাগ E

বিভাগ ই বিভাগে জি দ্বারা উত্পাদিত এএসসিআইআই ডিজিটের সংমিশ্রনের জোড়গুলি পরিচালনা করে এবং উভয়ই সংশ্লিষ্ট এনকোডেড অক্ষর মুদ্রণ করে এবং বিভাগ এবং সি এবং ডিতে সম্মিলিত জোড়ের সাথে বাম দিকে একটি ব্লক প্রেরণ করে both

আবার নীচে অঙ্কগুলির ASCII কোডগুলি সহ উপস্থাপন xএবং yপ্রতিনিধিত্ব করে ite

E                                                   F
~ [+$4--498+*-:~-10)):] )              <  ~         [y] [x]
) [+$4--498+*-:~-10)):]                   < [x] [y]
+ $4-  - 498  +*- :~ -10 ) )              : [x[y]]
+---  -{-498} +*- ~~{-10} )       ) [x[y]]  [x[y]]
+--    - 498  +*   -{-10}       ~ ) x  [y]  [x[y]]
+-    -{-498} +               * 10 x  )[y]  [x[y]]
+      - 498                    + {10*x} y  [x[y]]
                         + {-498} {10*x+y}  [x[y]]
{10*x+y-498}  [x[y]]
[x[y]]
  • আগত অঙ্কের ব্লকগুলি অদলবদল করা হয়, তারপরে y ব্লকটি এক্স ব্লকের সাথে সংযুক্ত করা হয় এবং পুরো জোড়া ব্লকটি অনুলিপি করা হয়। সি এবং ডি বিভাগের জন্য একটি অনুলিপি শেষ অবধি থাকবে
  • অন্য অনুলিপিটি আবার ডিলক করা হয়েছে, তারপরে অঙ্কের জন্য গাণিতিক ক্রিয়াকলাপগুলির একটি ক্রম প্রয়োগ করা হবে 10*x+y-498, এনকোডেড অক্ষরের ASCII মান। 498 = 10*48+48-30এর ফলে, 48ASCII এনকোডিংটি পূর্বাবস্থায় ফিরে আসে xএবং yযখন 30এনকোডিংটি স্থানান্তরিত 00–99হয় 30–129, এতে সমস্ত মুদ্রণযোগ্য ASCII অন্তর্ভুক্ত থাকে।
  • ফলস্বরূপ সংখ্যাটি কার্যকর করতে বাকি থাকে, যা এর চরিত্রটি মুদ্রণ করে।

বিভাগ এফ

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

[y] [x] ...

বিভাগ জি

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

যেহেতু এটির কোনও থামানো চেক নেই, এটি 0সংখ্যাটি 0তে নামিয়ে নামিয়ে দেওয়ার পরে প্রকৃতপক্ষে অঙ্কগুলি তৈরি করতে থাকবে, যতক্ষণ না বিভাগ ডি দিয়ে পুরো প্রোগ্রামটি থামিয়ে দেয়H ক্রিয়াকলাপের দেয়।

[BkG] বড় শুরুর কোড ব্লকের একটি অনুলিপি সংক্ষিপ্ত করে, যা নতুন পুনরাবৃত্তি শুরু করতে স্ব-প্রতিরূপে ব্যবহৃত হয়।

প্রথম চক্রের সূচনা:

) :~  : [)[):~[)~:~~([:~)*[):~[$1(+48]):~+]-:~~)10)~~]/]+:5):]~:]  ( 106328966328112328136317639696111819119696281563139628116326221310190661962811611211962861109696289611619628116111612896281115421063633063961111116163963011632811111819159628151213262722151522061361613096119619190661966311961128966130281807072220060611612811961019070723232022060611
)  ~ ~ [)[):~[)~:~~([:~)*[):~[$1(+48]):~+]-:~~)10)~~]/]+:5):]~:]  [BkG] [10...11]
) [)[):~[)~:~~([:~)*[):~[$1(+48]):~+]-:~~)10)~~]/]+:5):]~:]     ~ [BkG] [10...11]
) [):~[)~:~~([:~)*[):~[$1(+48]):~+]-:~~)10)~~]/]+:5):]       ~ : [10...11]  [BkG]

সাধারণ পুনরাবৃত্তি, Nসংখ্যাটি বিভক্ত করতে বোঝায়:

) [):~[)~:~~([:~)*[):~[$1(+48]):~+]-:~~)10)~~]/]+:5):]        ~ : [N]  [BkG]
) :~ [)~:~~([:~)*[):~[$1(+48]):~+]-:~~)10)~~]/]+ :5 )         : [N]  : [BkG]
)  ~ ~ [)~:~~([:~)*[):~[$1(+48]):~+]-:~~)10)~~]/]  +5 5     ) [N]  [N] [BkG] [BkG]
) [)~:~~([:~)*[):~[$1(+48]):~+]-:~~)10)~~]/]               ~ 10 N  [N] [BkG] [BkG]
) ~:~  ~ ( [:~)*[):~[$1(+48]):~+]-:~~)10)~~]               / N 10  [N] [BkG] [BkG]
)  ~ : [:~)*[):~[$1(+48]):~+]-:~~)10)~~]                 ( {N/10}  [N] [BkG] [BkG]
) [:~)*[):~[$1(+48]):~+]-:~~)10)~~]                    : [{N/10}]  [N] [BkG] [BkG]
:~ )*[):~[$1(+48]):~+]- :~ ~)10 )           ~ ~ [{N/10}]  [{N/10}] [N] [BkG] [BkG]
~~) *[):~[$1(+48]):~+]- ~~10 )             ) [{N/10}]  ~ [{N/10}] [N]  [BkG] [BkG]
)  ~ * [):~[$1(+48]):~+]  -10            ~ ) {N/10}  [N] [{N/10}] [BkG] [BkG]
) [):~[$1(+48]):~+]               * {-10} {N/10}  ) [N]  [{N/10}] [BkG] [BkG]
) :~ [$1(+48]) :~                 + {-10*(N/10)} N  [{N/10}] [BkG] [BkG]
)  ~ ~ [$1(+48]  )                 ~ ~ {N%10}  [{N/10}] [BkG] [BkG]
) [$1(+48]                 ~ ) {N%10}  ~ [{N/10}] [BkG]  [BkG]
$1(                     + 48 {N%10}    ) [BkG]  [{N/10}] [BkG]
                        ( {48+N%10}   BkG [{N/10}] [BkG]            New iteration starts
                        [{48+N%10}]   ....
  • এখানে বিলম্ব ব্লব বিশেষত লোমশ। তবে দুটি নতুন চক্রটি বিলম্ব +:5না করে কেবলমাত্র নতুন বিলম্বিত কৌশলটি ব্যবহার করা use হায়রে প্রোগ্রামের এস এর মধ্যে অন্যতম একজন এর দ্বারা সহায়তা করেছিল।--101010
  • [N]এবং [BkG]ব্লক সদৃশ হয়, তত্কালীন একটি কপি Nদ্বারা বিভক্ত করা হয় 10
  • [{N/10}]অনুলিপি করা হয়, তারপরে শেষ অঙ্কের ASCII কোড গণনা করার জন্য আরও গাণিতিক ফাংশন ব্যবহার করা Nহয় 48+((-10)*(N/10)+N)। এই এএসসিআইআই কোড সহ ব্লকটি এফ বিভাগে ছেড়ে দেওয়া হয়েছে।
  • একটি নতুন পুনরাবৃত্তির সূচনা সেট করতে ব্লকের [{N/10}]মধ্যে অন্য অনুলিপিটি অদলবদল হয়ে যায় [BkG]

বোনাস কুইন (540 বাইট)

)$$3371%%1[~!~~!)!]):[)$$20%%0[):]~)~~[)$$12%%0[<$$7%~~0):~[+----48+*-~~10))]<]<~!:~)~~[40~[:~))~:~[)~(~~/[+--48):]~10]+30])):]]][)[H]](11(06(06(21(21(25(19(07(07(19(61(96(03(96(96(03(11(03(63(11(28(61(11(06(06(20(18(07(07(18(61(11(28(63(96(11(96(96(61(11(06(06(19(20(07(07(18(61(30(06(06(25(07(96(96(18(11(28(96(61(13(15(15(15(15(22(26(13(12(15(96(96(19(18(11(11(63(30(63(30(96(03(28(96(11(96(96(61(22(18(96(61(28(96(11(11(96(28(96(61(11(96(10(96(96(17(61(13(15(15(22(26(11(28(63(96(19(18(63(13(21(18(63(11(11(28(63(63(63(61(11(61(42(63(63

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

যেহেতু আমি নিশ্চিত ছিলাম না যে কোন পদ্ধতিটি সবচেয়ে কম হবে, তাই আমি প্রথমে দুটি অঙ্কের দ্বারা পৃথক পৃথক পৃথক পৃথক অক্ষরগুলিকে এনকোড করার চেষ্টা করেছি ( গুলি । মূল কোডটি কিছুটা ছোট, তবে 50% বৃহত্তর ডেটা উপস্থাপনা এটির জন্য তৈরি করে। অন্যটির মতো গল্ফড নয়, যখন আমি বুঝতে পেরেছিলাম তখন এটি হারাবে না। এটির একটি সুবিধা রয়েছে: এর জন্য বিগনাম সমর্থন সহ একটি প্রয়োগকরণের প্রয়োজন হয় না।

এর সামগ্রিক কাঠামো মূলটির সাথে কিছুটা মিল রয়েছে। বিভাগের উপস্থিতি নিখোঁজ হয়েছে যেহেতু উপাত্তের উপস্থাপনাটি সরাসরি এফ বিভাগে পূরণ করে। যাইহোক, বিভাগ E এ দুটি অঙ্কের সংখ্যার অঙ্কগুলি পুনর্গঠন করতে অবশ্যই একটি অনুরূপ ডিভোড গণনা করতে হবে।


1
আপনার XD
VFDan

1
)$n[)](বিলম্ব কাউন্টার জন্য একটি বাইট সংক্ষিপ্ত।
জিমি 23013

15

জেলি, 3 বাইট

”ṘṘ

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

প্রতিপাদন

$ echo $LANG
en_US
$ xxd -g 1 quine.jelly
0000000: ff cc cc                                         ...
$ ./jelly f quine.jelly | xxd -g 1
0000000: ff cc cc                                         ...

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

”ṘṘ    Main link. No input.

”Ṙ     Set the return value to the character 'Ṙ'.
  Ṙ    Print a string representation of the return value.
       This prints: ”Ṙ
       (implicit) Print the return value.
       This prints: Ṙ

দোভাষীর কোন সংস্করণ এটি ব্যবহার করে? আমি যখন এটি পরীক্ষা করি তখন এটি ইউটিএফ -8 এ আউটপুট দেয় যদিও ইনপুটটি জেলি কোডেজেডে থাকে (এবং এনকোডিংয়ের পরিবর্তনটি এটিকে একটি কুইন নয়)।

1
আউটপুটটির এনকোডিংটি আপনার টার্মিনালের সেটিংসের উপর নির্ভর করে: যদি এটি ইউটিএফ-এক্স সেট করা থাকে তবে এটি ব্যবহার করে; যদি এটি অন্য কোনও কিছুতে সেট করা থাকে তবে এটি জেলি কোড পৃষ্ঠা ব্যবহার করে। লিনাক্সে, এটি LANG=en_USঅর্জন করে। tio.run/nexus/bash#@@/…
ডেনিস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.