একটি জিজার কাউন্টার করুন


29

জিগার কাউন্টার এমন একটি ডিভাইস যা বিকিরণ সনাক্ত করতে ব্যবহৃত হয়।

আমরা একটি জিগার কাউন্টার প্রোগ্রাম করব।

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

কম বাইট ভাল হওয়ার সাথে বাইটে উত্তর দেওয়া হবে tes উত্তরগুলি কমপক্ষে 1 বাইট হতে হবে।

আপনার প্রোগ্রামটি beepএকটি নতুন লাইন অনুসরণ করে মুদ্রণ করতে পারে বা খালি আউটপুটটির জন্য একটি একক নিউলাইন মুদ্রণ করতে পারে , যতক্ষণ না এটি ধারাবাহিকভাবে কাজ করে। তোমার প্রোগ্রাম এছাড়াও জন্য একটি ভিন্ন ক্ষেত্রে ব্যবহার করতে পারেন beepযেমন BEEP, bEEPঅথবা Beepএতক্ষণ যেমন যাতে ধারাবাহিকভাবে আছে।



7
আসল বীপ আউটপুট দেওয়ার জন্য আমরা কী বেল নিয়ন্ত্রণ চরিত্রটি ব্যবহার করতে পারি?
জো কিং

2
@ জোকিং আমি এই ধারণার সাথে কথা বললাম, এটি মজাদার, কিন্তু আমাকে না বলতে হবে। এটিও যথেষ্ট আলাদা।
গম উইজার্ড

2
আমি রেটিনায় একটি সমাধান দেখতে চাই।
mbomb007

3
আমি কীভাবে এসএমবিএফ-এ এটি করব তা বোঝার চেষ্টা করছি ... তবে দুটি কক্ষের তুলনা করার একমাত্র উপায় হ'ল সেগুলি পরিবর্তন করা। এবং এসএমবিএফ-তে আপনার যে কোষগুলি পরীক্ষা করতে হবে তা হ'ল প্রোগ্রামটি বর্তমানে চলছে cells সুতরাং এটি হাইজেনবার্গ অনিশ্চয়তার নীতিমালার মতো। সুতরাং আপনাকে কেবল নিয়ন্ত্রণ প্রবাহ ব্যবহার করে কিছু পরিবর্তন হয়েছে কিনা তা আপনাকে নির্ধারণ করতে হবে।
mbomb007

উত্তর:


24

হারিয়েছেন , 303 293 263 253 238 228 বাইট

v^"peeb"<\>"beepvv"((>@@>>%%>>(((((([[[[[[\
>>>>>>>>>//>>>>>>>>>>>>>>/>>/>>>>>>>>>>>>>\\
>>>>>>>>//>>>>\>>>>>>>>>>/>>>>>>>>>>>>>>>>>\\
>/>>>>>>>/>>>>>>>>>>>>\>>>>>>>>>>>>>>>>>>>>>\\
>>>>>>>>>>>>>>>>>>>>>>\\>>>>\>>>>>>>>>>>>>>>>\

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

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

ওহ, এটি একটি কঠিন ছিল। আমি ডাব্লুডাব্লু এর মুছে দেওয়া উত্তর উদ্ধৃত করব:

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

দুর্ভাগ্যক্রমে, তার উত্তর নতুন লাইনগুলি মুছে ফেলার বিষয়টি বিবেচনায় নেয় নি, যা সবকিছুকে ছড়িয়ে দিয়েছে।

ব্যাখ্যা:

(মনে রাখবেন কয়েকটি বাইট এখানে এবং সেখানে বন্ধ রয়েছে)

প্রথমে কোডের সাধারণ কাঠামো সম্পর্কে কথা বলা যাক:

v^^"peeb"<<\/"beepvv"((>>>@@>>%%>>(((((([[[[[[[\       Processing line
>>>>>>>>>>>//>>>>>>>>>>>>>>>>>>>/>>>>>>>>>>>>>>\\      Beep line
>>>>>>>>>//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\\     Back-up beep line
>//>>>>>>>>>>>>>>>>>>>>\\>>>>>>>>>>>>>>>>>>>>>>>>\\    Back-up return line
>>>>>>>>>>>>>>>>>>>>>>>>\\>>>>>>\>>>>>>>>>>>>>>>>>\    Return line

প্রসেসিং লাইন ব্যতীত সমস্ত কিছু অবশ্যই >দুটি বা একটির সমন্বয়ে গঠিত \/। কেন? ভাল, একটি উদাহরণ হিসাবে, আসুন একটি নতুন লাইন সরান:

v^^"peeb"<<\/"beepvv"((>>>@@>>%%>>(((((([[[[[[[\>>>>>>>>>>>//>>>>>>>>>>>>>>>>>>>/>>>>>>>>>>>>>>\\
>>>>>>>>>//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\\
>//>>>>>>>>>>>>>>>>>>>>\\>>>>>>>>>>>>>>>>>>>>>>>>\\
>>>>>>>>>>>>>>>>>>>>>>>>\\>>>>>>\>>>>>>>>>>>>>>>>>\

প্রথম লাইন এখন উপায় ব্লক বাকি চেয়ে দীর্ঘতর। যদি কোনও পয়েন্টারটি >\/উল্লম্ব আন্দোলনের সাথে একটি অ- চরিত্রের উপর স্পোন করে থাকে তবে তা অসীম লুপে আটকে যাবে।


বৃহত্তম রেডিয়েশন সনাক্তকারী অংশটি প্রতিটি লাইনের শেষে বিভাগ at

 \
 \\
 >\\
 >>\\
 >>>\

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

 \
 \\
 >\\
 >\\
 >>>\

এবং আইপি এর পরিবর্তে লাইনটি বাইরে বের করে যা একটি বাইট অনুপস্থিত (শেষ লাইনটি বাদে, যেখানে এটি দ্বিতীয় থেকে শেষ পর্যন্ত বেরিয়ে আসে)।

সেখান থেকে প্রথম চারটি লাইনের প্রত্যেকটিই দ্বিতীয় লাইনে পুনঃনির্দেশ করবে:

v
>>>>>>>>>>
>>>>>>>>//
>/

যা এরপরে উভয় এর মধ্যে যে কোনও একটিতে নিয়ে যাবে beep

v^"peeb"<<\/"beepvv"((>
>>>>>>>>>>//

প্রথম beepইররের কোনও বাইট যদি সরিয়ে ফেলা হয়, তবে এটি পরিবর্তে দ্বিতীয়টিতে যায়:

v^^"peb"<<\/"beepvv"((>
>>>>>>>>>>>//

উভয় beepএরইপরে প্রথম লাইনে এবং সমাপ্তিতে ফিরে যায়@

কিছু অন্যান্য বিবিধ অংশ:

(((((([[[[[[[স্ট্যাক পরিষ্কার যখন পয়েন্টার কোট এবং প্রান্ত স্ট্যাকে পুরো প্রথম লাইন ঠেলাঠেলি আপ একজোড়া ভিতরে শুরু ব্যবহৃত হয়। এটি এত দুর্ভাগ্যজনকভাবে দীর্ঘ হতে হবে কারণ প্রথম লাইনটি আকারের দ্বিগুণ করার জন্য প্রথম নতুন লাইনটি সরানো যেতে পারে। উত্পাদনে পরীক্ষা নিরীক্ষাbeep গাণিতিক ব্যবহার পরিবর্তে কোট আর শেষ পর্যন্ত।

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


কৌতূহলের বাইরে, আড্ডায় আমি পোস্ট করা আংশিক উত্তরটি কতটা সহায়ক ছিল? আমি আগের সংস্করণগুলিতে কিছু মিল খুঁজে পেয়েছি এবং আমি জানতে চাই যে আমি সঠিক পথে রয়েছি কিনা।
গম উইজার্ড

@WW আমি এরই মধ্যে ততক্ষণে এটি নিয়ে কাজ করে এসেছি, তবে পুশগুলিকে \/আলাদা করার জন্য beepএবং এই উক্তিগুলির মধ্যে কেবলমাত্র একটি উদ্ধৃতিতে একটি বহির্গমন অনুচ্ছেদের দরকার ছিল
জো কিং

20

হেক্সাগনি , 38 বাইট

.....;p;<>b;e;/<b;e;;p...@@.......;@..

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

যাচাইকরণের প্রোগ্রাম।


ব্যাখ্যা

আমরা এখানে ষড়ভুজ পার্শ্ব-দৈর্ঘ্যের সনাক্তকরণ হেক্সাগনির ব্যবহার করি।

যদি কোনও বাইট অপসারণ না করা হয় তবে প্রোগ্রামটির পাশের দৈর্ঘ্য 4 এবং এর মতো দেখতে:

কোনও বাইট ছাড়াই প্রোগ্রাম

তবে, একটি বাইট অপসারণ করা হয়। আছে 2 টি মামলা।

  1. অপসারণ বাইট দ্বিতীয় পরে হয় <

    মৃত্যুদন্ড কার্যকর করা হবে:

    শেষ বাইট সহ প্রোগ্রামটি সরানো হয়েছে

    @5 তম লাইনে পরপর 2 টি রয়েছে , সুতরাং এর মধ্যে একটি অপসারণ করা হলেও আইপি নিরাপদে একটিতে আঘাত করবে @

  2. অপসারণ বাইটটি দ্বিতীয়টির বা তার আগে <

    তারপরে দ্বিতীয়ার্ধটি অক্ষত থাকবে এবং আইপিটি আর তার দ্বারা উপরের দিকে পুনঃনির্দেশিত হয় না <। সম্পাদনের প্রবাহের চিত্র:

    দ্বিতীয় <কোড> </ কোড> সহ প্রোগ্রামটি সরানো হয়েছে


19

হেক্সাগনি , 34 29 বাইট

//..>;e;<b@;p;/|/;e;;\.b@;p<@

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

ব্যাখ্যা:

এখানে হেক্সাগনি কলরার ব্যবহার করে একটি যথাযথ ষড়্চাগুলিতে ফর্ম্যাট করা সাধারণ কোডটি রয়েছে :

কোনও ক্যান্সার নেই ...

//শুরুতে দ্বিগুণ নিশ্চিত করে যে এই পথটি সর্বদা নেওয়া হবে। যদি কোনও চরিত্র অপসারণ করা হয়, তবে @সেটিকে পথ থেকে সরানো হবে, হয় একটি পিছনে স্থানান্তরিত করা হবে বা নিজেই সরানো হবে:

ক্যান্সার!

এই ক্ষেত্রে, আমরা এর পরে একটি চরিত্র সরিয়েছি |, যা এটি এটিকে অনুসরণ করে, মুদ্রণ করে beep:

প্রথম বীপ

পরিবর্তে যদি আমরা এর আগে |(বা |নিজেই) কোনও অক্ষর সরিয়ে ফেলি তবে আমরা অন্যান্য বীপ প্রিন্টারটি অনুসরণ করি:

দ্বিতীয় বিপ

এরপরে আমরা সমস্ত সম্ভাবনার জন্য দায়বদ্ধ হয়েছি এবং আমরা কেবল beepপ্রোগ্রামের অ-উদ্বেগিত অংশগুলি ব্যবহার করি ।


13

স্ব-পরিবর্তনকারী ব্রেনফাক , 73 63 বাইট 73

<<[[[[<<]]>[[.>>..>>.[,>]]]]   bbeepp+[<<<]>>[[>]>>>.>>..>>.,+]

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

কোডের মাঝের স্পেসগুলি আসলে NUL বাইট উপস্থাপন করে।

ব্যাখ্যা:

মাঝখানে 3 টি এনএল বাইট দ্বারা কোডটি দুটি বিভাগে বিভক্ত। দুটিই মূলত প্রিন্ট করেbeep যদি অন্য বিভাগটি বিকিরণ করা হয় (কয়েকটি ব্যতিক্রম সহ)।

প্রথমত, <<[[শুরুতে এটি নিশ্চিত করা হয় যে ]কোনও সময় যে কোনওগুলি মিলে গেছে। [করা একটি মিলের জন্য দেখুন প্রচেষ্টা করা হবে না ]যদি সেল ইতিবাচক থাকাকালীন ]গুলি না । যদি কোনও ]এই বন্ধনীগুলির কোনওটিতে পিছনে ঝাঁপ দেয় তবে এটি সাধারণত সরাসরি লাফিয়ে সরে যায় কারণ ঘরটি is0

পরের অংশটি, [[<<]]>তারপর বিভাগ 2 এর দৈর্ঘ্য সমান কিনা তা পরীক্ষা করে দেখুন। যদি তা হয় তবে এটি বিভাগ 1 এর অন্যান্য অর্ধেককে কার্যকর beepকরে , যা bbeeppবিভাগ 2 এর শুরুতে প্রিন্ট করে ।

[[.>>..>>.[,>]]]]

এটি তখন বিভাগ 2 সমস্তটি সাফ করে যাতে এটি কার্যকর হয় না।

অধ্যায় 2, আমরা অধ্যায় 1 দৈর্ঘ্য যদি চেক করুন এবং NUL বাইট দিয়ে বিভাজ্য 3সঙ্গে +[<<<]>>

[[>]>>>.>>..>>.,+]

একইভাবে, আমরা মুদ্রণ beep


10

জেড 80 গল্ফ , 53 36 34 বাইট

-১ by
বাইট @ লিনাকে ধন্যবাদ -২ বাইট @ নীলকে ধন্যবাদ

যেহেতু এটি কেবল জেড 80 মেশিন কোড তাই এই একটিতে xxd -rপ্রচুর পরিমাণে অপ্রিন্টেবল রয়েছে , তাই পরিবর্তিতযোগ্য হেক্সডাম্প রাখুন:

00000000: ddb6 2120 10dd b615 280c 003e 62ff 3e65  ..! ....(..>b.>e
00000010: ffff 3e70 ff76 003e 62ff 3e65 ffff 3e70  ..>p.v.>b.>e..>p
00000020: ff76                                     .v

এটি অনলাইন চেষ্টা করুন! (পাইথনের সম্পূর্ণ পরীক্ষক)

ব্যাখ্যা

z80golf হ'ল অ্যানার্কি গল্ফের অনুমানযুক্ত Z80 মেশিন, যেখানে call $8000একটি পুটচার, call $8003একটি গেটচার, haltদোভাষীকে প্রস্থান করে, আপনার প্রোগ্রামটি স্থাপন করা হয় $0000এবং অন্য সমস্ত স্মৃতি শূন্যে ভরা হয়। সমাবেশে প্রোগ্রামগুলি বিকিরণ-প্রমাণ তৈরি করা বেশ শক্ত, তবে সাধারণভাবে কার্যকর কৌশলটি এক-বাইট আইডেম্পোটেন্ট নির্দেশাবলী ব্যবহার করছে। উদাহরণ স্বরূপ,

or c        ; b1    ; a = a | c

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

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

প্রথমত, যদি কোনও বিকিরণ পরিলক্ষিত না হয় তবে আমাদের প্রস্থান করতে হবে:

    or a, (ix+endbyte) ; dd b6 21 ; a |= memory[ix+0x0021]
    jr nz, midbyte     ; 20 10    ; jump to a halt instruction if not zero

যদি কোনও বাইট অপসারণ করা হয়, তবে সমস্ত বাইটগুলি স্থানান্তরিত $0020হবে এবং এতে সর্বশেষটি থাকবে 76, তাই $0021শূন্য হবে। কার্যত কোনও অপ্রয়োজনীয়তা না থাকলেও আমরা প্রোগ্রামের শুরুটি ছড়িয়ে দিতে পারি:

  • যদি জাম্প অফসেটটি $10সরিয়ে ফেলা হয়, তবে বিকিরণটি সঠিকভাবে সনাক্ত হবে, লাফটি নেওয়া হবে না, এবং অফসেট কোনও বিষয় নয়। পরবর্তী নির্দেশের প্রথম বাইটটি গ্রাস করা হবে, তবে এটি বাইট অপসারণ প্রতিরোধী হিসাবে নকশাকৃত করার কারণে এটি কোনও বিষয় নয়।
  • যদি জাম্প অপকোড $20সরিয়ে ফেলা হয়, তবে জাম্প অফসেটটি $10ডিকোড হবে djnz $ffe4(পরবর্তী নির্দেশ বাইটটি অফসেট হিসাবে গ্রহন করবে - উপরে দেখুন), যা একটি লুপ নির্দেশ - হ্রাস বি, এবং ফলাফল শূন্য না হলে লাফ দেয়। কারণ ffe4-ffffশূন্যে ভরা (nop গুলি) , এবং প্রোগ্রামের কাউন্টারটি চারপাশে মোড়ানো, এটি প্রোগ্রামের শুরু 256 বার চালাবে এবং শেষ পর্যন্ত অবিরত থাকবে। আমি এই কাজগুলি অবাক।
  • সরানো হচ্ছে $ddহিসাবে স্নিপেট ডিকোড বাকি করা হবে or (hl) / ld ($1020), hl, এবং তারপর প্রোগ্রাম পরবর্তী অংশে স্লাইড করুন। orকোনো গুরুত্বপূর্ণ রেজিস্টার পরিবর্তন হবে না, এবং কারণ ঐ খ এই সময়ে শূন্য হয়, লেখার বের বাতিল করবেন।
  • উইন্ডোটি সরিয়ে $b6ফেললে বাকীটি ডিকোড হয়ে যাবে ld ($1020), ixএবং উপরের মতো এগিয়ে যাবে।
  • উইন্ডোটি সরিয়ে $21ফেললে ডিকোডারটি খাওয়ার ব্যবস্থা করে $20, djnzআচরণকে ট্রিগার করে ।

নোট করুন যে ব্যবহার শূন্যের জন্য সংহত চেকের জন্য or a, (ix+*)দুটি বাইট সংরক্ষণ করে ld a, (**) / and a / and a

আমাদের এখনই সিদ্ধান্ত নিতে হবে যে পে-লোডের দুটি অনুলিপি কার্যকর করতে হবে:

    or (ix+midbyte)  ; dd b6 15
    jr z, otherimpl  ; 28 0c
    nop              ; 00
    ; first payload
    ld a, 'b'        ; 3e 62
    rst $0038        ; ff
    ld a, 'e'        ; 3e 65
    rst $0038        ; ff
    rst $0038        ; ff
    ld a, 'p'        ; 3e 70
    rst $0038        ; ff
midbyte:
    halt             ; 76
otherimpl:
    nop              ; 00
    ld a, 'b'        ; 3e 62
    ; ...            ; ...
    rst $0038        ; ff
endbyte:
    halt             ; 76

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

  • মোছা $ddপরের দুটি বাইট ডিকোড হিসাবে তৈরি করবে or (hl) / dec d। ক্লোবার্স ডি। কোনও বড় কথা নয়।
  • মোছা $b6হ'ল এর জন্য একটি অনিবন্ধিত দীর্ঘতর এনকোডিং তৈরি করবে dec d। উপরের মতই.
  • মোছা মুছে ফেলা পরিবর্তে অফসেট হিসাবে $15পড়বে $28এবং $0cনীচে যেমন কার্যকর হবে ততক্ষণে এগিয়ে চলবে ।
  • যখন $28disappears, $0cহিসেবে ডিকোড করা হয় inc c। পে-লোডের যত্ন নেই c
  • মোছা হচ্ছে $0c- এটাই হ'ল ন্যাপ। অন্যথায়, পে-লোডের প্রথম বাইটটি জাম্প অফসেট হিসাবে পড়ত এবং প্রোগ্রামটি অবিচ্ছিন্ন মেমরিতে ঝাঁপিয়ে দিত।

পে লোড নিজেই বেশ সহজ। আমি মনে করি স্ট্রিংয়ের ছোট আকার এই পদ্ধতিরটিকে একটি লুপের চেয়ে ছোট করে তোলে এবং এইভাবে অবস্থান-স্বাধীন করা আরও সহজ। eমধ্যে beepপুনরাবৃত্তি, তাই আমি বন্ধ এক শেভ করতে ld a। এছাড়াও, কারণ মধ্যে সব স্মৃতি $0038এবং $8000zeroed হয়, আমি এটা মাধ্যমে পড়া এবং একটি সংক্ষিপ্ত ব্যবহার করতে পারেন rstএর বৈকল্পিক callনির্দেশ, যা শুধুমাত্র জন্য কাজ করে $0, $8, $10এবং তাই, আপ$38

পুরানো পন্থা

64 বাইট

00000000: 2e3f 3f2e 3f3f 7e7e a7a7 201f 1e2b 2b1e  .??.??~~.. ..++.
00000010: 2b2b 6b00 7ea7 2814 003e 62cd 0080 3e65  ++k.~.(..>b...>e
00000020: cd00 80cd 0080 3e70 cd00 8076 003e 62cd  ......>p...v.>b.
00000030: 0080 3e65 cd00 80cd 0080 3e70 cd00 8076  ..>e......>p...v

58 বাইট

00000000: 2e39 392e 3939 7e7e a7a7 2019 3a25 00a7  .99.99~~.. .:%..
00000010: 2814 003e 62cd 0080 3e65 cd00 80cd 0080  (..>b...>e......
00000020: 3e70 cd00 8076 003e 62cd 0080 3e65 cd00  >p...v.>b...>e..
00000030: 80cd 0080 3e70 cd00 8076                 ....>p...v

53 বাইট

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

00000000: 3a34 00a7 a720 193a 2000 a728 1400 3e62  :4... .: ..(..>b
00000010: cd00 803e 65cd 0080 cd00 803e 70cd 0080  ...>e......>p...
00000020: 7600 3e62 cd00 803e 65cd 0080 cd00 803e  v.>b...>e......>
00000030: 70cd 0080 76                             p...v

কি যদি: কোনও বীনের পরিবর্তে খালি খালি আউটপুট ভাল ছিল

1 বাইট

v

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


যেহেতু aশূন্য থেকে শুরু হয়, আপনি কি or a, (N);পরিবর্তে ব্যবহার করতে পারবেন না ld a, (N); and a;? দেখে মনে হচ্ছে আপনি কয়েকটা বাইট সেভাবে সংরক্ষণ করতে পারেন।
নীল

@ নীল ভাল প্রশ্ন! দুর্ভাগ্যক্রমে, Z80- এ, কেবল লোড নির্দেশাবলী এ জাতীয় ঠিকানা নিতে পারে।
নিডজেজেকব

ওহ, আমি কোনও জেড 80 প্রোগ্রামিং করে অনেক দিন হয়ে গেল ... সম্ভবত আমি ভাবছিলাম or a, (ix + N)?
নীল

@ নীল আসলে, এটি বিদ্যমান, এবং আইএক্সও শূন্য থেকে শুরু হয় ... দুর্ভাগ্যক্রমে, সেই অঞ্চলে একটি বাইট সংরক্ষণ করা বাইটগুলি এমনভাবে বদল 20 19করে যাতে প্রারম্ভিকাগুলি একটি শর্তহীন জাম্প তৈরি করে 20 18এবং 20তাই একটি প্রোগ্রামটিতে প্রথম লাফ দেওয়ার পরে ন্যাপটি যুক্ত করতে হবে, বাইট সেভের বিপরীতে।
নিডিজেককব

আহ, এটা লজ্জাজনক। যদিও চেক করার জন্য ধন্যবাদ!
নিল

8

> <> , 23 বাইট

<|o<"beep"/
>o<"beep"<\

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

আমি সত্যিই অবাক হয়েছি যে আমি কীভাবে এটি পেয়েছি। একটি ত্রুটি সহ শেষ হয়।

অ-ত্রুটিযুক্ত সংস্করণ, 29 বাইট

<<;oooo"beep"/
 ;oooo"beep"<\

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


4

ক্লেইন , প্রতিটি টপোলজির একটি, মোট 291 বাইট

টপোলজি ব্যবহার করে ডাব্লুডাব্লুয়ের উত্তর দেখার পরে 001, আমি সিদ্ধান্ত নিয়েছি যে প্রতিটি টপোলজির জন্য জিজার কাউন্টার করা কতটা কঠিন হবে see (স্পোলার: খুব হার্ড

প্রতিপাদন!

(আমি এমন একটি প্রোগ্রাম লেখার বিষয়েও ভেবেছিলাম যা সমস্ত টপোলজিতে বৈধ জিগার কাউন্টার, তবে এটির জন্য অপেক্ষা করতে হতে পারে else অন্য কেউ যদি চেষ্টা করতে চান তবে আমি ৫০০ রিপ্রেস অনুগ্রহ দিচ্ছি)

000 এবং 010, 21 বাইট

<<@"peeb"/
.@"peeb"<\

অনলাইন চেষ্টা করুন! এবং অনলাইনে 010 ব্যবহার করে দেখুন!

এটি আমার ><>সমাধান থেকে পোর্ট করা হয়েছে । এই স্পষ্টত কাজ করে 000, যেহেতু যে অধিকাংশ 2D ভাষায় ডিফল্ট টপোলজি, কিন্তু আমি বিস্মিত হয়েছিল যে এটি কাজ করে 010

001 এবং 011, 26 বাইট

!.<<@"peeb"/
.@"peeb"..<..

অনলাইনে 001 চেষ্টা করুন! এবং অনলাইনে 011 চেষ্টা করে দেখুন!

এই এক সরাসরি ডাব্লুডাব্লু এর উত্তর থেকে অনুলিপি করা হয় । ধন্যবাদ!

100, 21 বাইট

//@"peeb"\
@"peeb".</

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

101, 21 বাইট

//@"peeb"/
@"peeb".<!

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

110, 26 বাইট

<.<@"peeb"\\
.\@."peeb".\<

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

111, 24 বাইট

<<@"peeb"<\
...@"peeb"//

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

200, 21 বাইট

<<@"peeb"\
@"peeb".!/

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

201, 31 বাইট

\\.\.@"peeb"</./
./...@"peeb"<\

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

এখন পর্যন্ত সবচেয়ে বিরক্তিকর।

210, 26 বাইট

/\\@"peeb"</\
/@.."peeb"<\

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

211, 27 বাইট

\\."peeb"((</
!/@@<"peeb"<\

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

আমাকে একমাত্র ডান পাশ দিয়ে বিপার প্রবেশের ব্যবস্থা করতে হয়েছিল।


আমি আনন্দের সাথে যে অনুগ্রহ দ্বিতীয়।
গম উইজার্ড


2

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

>>yyLL@"peeb"/
     @"peeb"L\

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

মূলত ক্লেইন 000 উত্তর বা> <> উত্তর (আমি ক্লেইনটি দিয়ে শুরু করেছি) এর সমান। কেবলমাত্র পরিবর্তনের প্রয়োজন ছিল  আইপি এন্ট্রি পয়েন্টগুলি সন্নিবেশ <করা Lএবং (কমান্ড প্রতীকগুলির অনুবাদ) .মধ্যে রূপান্তর করা (প্রয়োজন 2, অন্যথায় মুছে ফেলার ফলে একটি কম-কম্পাইলিং প্রোগ্রাম তৈরি হবে) এবং ডেলা yকমান্ড সন্নিবেশ পাওয়ার জন্য দুটি আইপি একত্রীকরণ করতে (সুতরাং কেবল একটি মুদ্রণ করা beep), আবার দুটি প্রয়োজন। লাইনের দৈর্ঘ্য একই রাখার জন্য অতিরিক্ত এনওপি .োকানো প্রয়োজন। ক্লিন সুবিধাজনকভাবে @"মুদ্রণ এবং সমাপ্তি" এর জন্যও ব্যবহার করে ।

নীচের বামে শ্বেত স্থানটি ব্যবহার করার কোনও ক্ষমতা নেই, যেহেতু দিক পরিবর্তন করতে কোনও প্রতিফলক বিকিরণ সনাক্তকরণের ক্ষমতাকে বাধা দেয়। যেমন (২ (বাইট, বিড়ম্বনা y):

/yLL@"peeb"/
\<<  @"peeb"L\

নীচের লাইনের টার্মিনেটরে ফেরত প্রতিবিম্বিত করার জন্য বেন্ট এন্ট্রি বিভাগের কারণে কোনও আউটপুট প্রিন্ট করে না।



1

Wumpus , 37 34 32 31 বাইট

777*7..@ $o&4"beep"|"@peeb"4&o@

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

এই সমাধান যে সত্য ব্যবহার করে . এমন একটি অবস্থানটি যা প্রোগ্রামের দৈর্ঘ্যের উপরে অবস্থান করে ul

বিকল্প হিসাবে একই পরিমাণ বাইট জন্য


" @o&4"beep"}@
@o&4"beep"}$}  

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

এই একটি বিজোড় এবং এমনকি লাইন দৈর্ঘ্যের জন্য পয়েন্টারের দিকের পার্থক্যটিকে কাজে লাগায়। ( "নতুন লাইনটি সরানো হলে প্রথমটি কীভাবে কাজ করে তা সত্যই আমি জানি না )


1

ক্লেইন (001), 26 বাইট

!.<<@"peeb"/
.@"peeb"..<..

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

যাচাই করুন!

ব্যাখ্যা

এই প্রোগ্রামটি বিশেষত 001 এর মধ্যে ক্লেইনের অনন্য টপোলজির সুযোগ নিয়েছে টপোলজির যা একটি ক্লিন বোতল।

অশিক্ষিত প্রোগ্রামটি কার্যকর করার পথে অনুসরণ করে:

কমলা পথ

প্রোগ্রাম থেকে একটি বাইট অপসারণ 4 উপায়ে (প্রতিটি আলাদা রঙে) এ প্রোগ্রামটিকে প্রভাবিত করতে পারে:

প্রোগ্রাম বিভাগ

প্রথমে লক্ষ্য করার বিষয়টি এটি হ'ল <<সর্বদা শুরুতে মূলটির বাম দিকে আইপিকে সরিয়ে ফেলবে। তাহলে এক <গুলি মুছে ফেলা হয় অন্যান্য তার জায়গা নেয়। সুতরাং যদি লাল বিভাগ থেকে কোনও বাইট অপসারণ করা হয় তবে নিম্নলিখিত কার্যকরকরণের পথটি অনুসরণ করা হবে:

লাল পথ

যদি নীল বাইটটি সরিয়ে ফেলা হয় তবে আমরা খুব সহজ পাথ পাই:

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

যদি নতুন লাইনটি সরানো হয় তবে আমরা পথটি পাই:

সবুজ পথ

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

হলুদ পথ


1
আপনি 21 বাইট জন্য আমার ><>সমাধান পোর্ট করতে পারে000
জো রাজা

@ জোকিং আমি মনে করি এটির নিজের উত্তর হিসাবে এটি আরও ভাল।
গম উইজার্ড

1

ব্যাকহ্যান্ড , 25 21 বাইট

vv""ppeeeebb""jjHH@

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

এটি প্রতিটি পদক্ষেপে কোনও নির্দেশনা এড়াতে এবং পুনর্নির্বাচিত সমস্যার ঝরঝরে সমাধান করার জন্য পয়েন্টার পদক্ষেপের মান পরিবর্তন করার জন্য ব্যাকহ্যান্ডের ক্ষমতা ব্যবহার করে। এরপরে jকোডটি শেষ অক্ষরে ( @, থামানো) না গিয়ে যদি লাফিয়ে radুকে থাকে এবং দ্বিতীয়টি সর্বশেষে ( H, থামান এবং আউটপুট স্ট্যাক) ingুকে পড়ে যদি তা বিকিরিত হয় তা পরীক্ষা করতে কমান্ডটি ব্যবহার করে ।

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