একটি কোড স্লাইড ধাঁধা!


12

সবচেয়ে স্বীকৃত সহচরী ধাঁধা হয় পনের ধাঁধা । এটিতে 4 বাই 4 গ্রিড, 15 টি টাইলস এবং একটি খালি গ্রিড স্পেস রয়েছে। টাইলস কেবল খালি জায়গায় যেতে পারে এবং সর্বদা গ্রিডের সাথে সামঞ্জস্য থাকতে হবে।

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

উদাহরণস্বরূপ, যদি ডাব্লু এবং এইচ 3 হয় এবং একটি টাইল হয় Tএবং একটি খালি স্থান Eসম্ভাব্য সাইডিং ধাঁধা বিন্যাসগুলির মধ্যে একটি

TTT
TET
EET

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

উদাহরণস্বরূপ গ্রিডটি যদি সরানো থাকে তবে ফলাফলটি হয়

TTT
ETT
EET

বাম ফলাফল বামে

TTT
TTE
TEE

ফলাফলটি নীচে দেখানো হয়েছে

EET
TET
TTT

(লক্ষ্য করুন যে বামদিকের উভয়ই Tসরানো হয়েছে)

এই ক্ষেত্রে গ্রিড লেআউট পরিবর্তন করে না oving

নোট করুন যেহেতু টাইলগুলি অবিচ্ছেদ্য কারণ এই ধাঁধাগুলির 'সমাধান' অবস্থা নেই। এছাড়াও নোট করুন যে কোনও ধাঁধাটি এমন লেআউটে শুরু হতে পারে যা একবার ঝাঁকুনির পরে তৈরি করা অসম্ভব (উদাহরণস্বরূপ 3 বাই 3 গ্রিডের মাঝখানে একটি টালি)।

চ্যালেঞ্জ

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

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

এই প্রক্রিয়াকে প্রতিটি শ্যাওয়ের পরে উত্পন্ন নতুন স্লাইডিং ধাঁধা কোড ফাইলের সাথে অনির্দিষ্টকালের জন্য পুনরাবৃত্তি করা যেতে পারে।

উদাহরণ

ধরুন আমার টাইল কোড ব্লকটি এরকম দেখাচ্ছে

//   my
// tile

এবং আমার খালি গ্রিড স্পেস কোড ব্লকটি দেখতে এমন দেখাচ্ছে

//empty
//space

( এম = 7, এন = 2, এটি অবশ্যই আসল কোড নয়)

এই দুটি ব্লকের যে কোনও বৈধ স্লাইডিং ধাঁধা বিন্যাসের জন্য আমি যে ভাষাটি ব্যবহার করছি তাতে কোনও প্রোগ্রাম তৈরি করা উচিত যা ব্যবহারকারীর কিছু দিক যেতে পারে।

উদাহরণ গ্রিডের কোড উপস্থাপনাটি হ'ল:

//   my//   my//   my
// tile// tile// tile
//   my//empty//   my
// tile//space// tile
//empty//empty//   my
//space//space// tile

সুতরাং এটি চালানো এবং 2 টি চাপুন (নিচে) তারপরে এন্টারটি এটি অন্য কোনও ফাইলে (বা একই ফাইলটিতে) লিখতে পারে:

//empty//empty//   my
//space//space// tile
//   my//empty//   my
// tile//space// tile
//   my//   my//   my
// tile// tile// tile

সেই ফাইলটি তখন একই পদ্ধতিতে চালানো এবং শ্যাভড করা যায়।

মন্তব্য

  • এইচ স্লাইডিং ধাঁধা দ্বারা ডাব্লু এর যে কোনও কোড-উপস্থাপনা চালানো যায় এবং সঠিকভাবে নিজেকে সরিয়ে দিতে সক্ষম হওয়া উচিত। এর মধ্যে 1 টি 1 থেকে কিছু যুক্তিসঙ্গত সর্বোচ্চ (2 16 বাই 2 16 বা ততোধিক) পর্যন্ত সমস্ত গ্রিড মাপ অন্তর্ভুক্ত রয়েছে ।

  • একটি প্রোগ্রাম তার নিজস্ব উত্স কোড পড়তে পারেএখানে কোন কুইন-ভিত্তিক বিধিনিষেধ নেই। যে কোনও ধরণের মন্তব্যগুলিও ঠিক আছে।

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

  • আপনি ধরে নিতে পারেন ইনপুটটি সর্বদা বৈধ (1, 2, 3, বা 4)।

  • স্পেস সহ আপনার কোড ব্লকে প্যাড করা ভাল is মনে রাখবেন যে এগুলি কেবল প্রিন্টযোগ্য এএসসিআইআই হতে পারে, এর অর্থ কোনও ট্যাব এবং কোনও নিউলাইন নয় (কোডগুলি ব্লকগুলিকে গঠনে সহায়তা করে এমন নিউলাইনগুলি ছাড়াও)।

  • যদি আপনার ভাষা স্ট্যান্ডিনকে সমর্থন না করে তবে ইনপুট পদ্ধতিটি নিকটতম বলে মনে হয় use

  • আপনার কোড-ধাঁধা ফাইলগুলির শেষে একটি নতুন লাইন থাকা দরকার। (বা এটি প্রয়োজন নেই যে প্রয়োজন।)

  • আপনি নতুন ফাইলগুলির নাম কীভাবে রাখবেন তা গুরুত্বপূর্ণ নয়। f.txtবা ঠিক আছে f

  • দুটি কোড ব্লক একরকম নাও হতে পারে।

স্কোরিং

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

সম্পর্কিত: কোড যা নিজের উপর গেম অফ লাইফ চালায়


সুতরাং যখন প্রোগ্রামটি খালি জায়গা এবং টাইল ব্লক (এবং তদ্বিপরীত) নেই তখন কাজ করা দরকার?
grc

@grc আপনার প্রথম প্রশ্নের হ্যাঁ, এবং মনে রাখবেন এটি পুরোপুরি শূন্য বা পূর্ণ হলেও এমনকি এটির একটি ধাক্কা মানের জন্য প্রম্পট করা দরকার। কোন ব্লক অভিন্ন হতে পারে না। আমি অনুমান করি তারা যদি হয় তবে আপনি মোটামুটি তুচ্ছ উত্তর দাবি করতে পারতেন। সুতরাং আমি যে উল্লেখ করব।
ক্যালভিনের

আমি কি মূল উত্স ফাইলটির নাম নির্দিষ্ট করতে পারি?
শুক্রবার 4'15

@ ফেয়ারসামের মতো আপনি কি ধরে নিতে পারেন এটি সর্বদা f.txt? হ্যাঁ.
ক্যালভিনের

কোডব্লকগুলি কি সর্বদা 1 লাইন হতে চলেছে না? মাল্টি-লাইন কোডব্লকগুলি আমার কাছে সত্যিই জটিল বলে মনে হচ্ছে এবং 2 ডি এসোলো ভাষাগুলির সম্ভবত ফাইল লেখার পক্ষে সমর্থন নেই।
Def 16

উত্তর:


5

টেকো , 153

খালি ব্লক:

0T@^Ux#EBx#27@:^Ux##MxA1^QUq^T%d/51%w"G153UsZ/QqUlQq/153Un|Qq%s/153UlZ/QqUn'Qd&1UhQl<.UpQn<Qh-\"F%c'TRQs:C>QpJQn<D-%c"L%c1-Qh\|Qh\'RQs:C>Qw"GC|153%pJ'>EX

টাইল ব্লক:

1T@^Ux#EBx#27@:^Ux##MxA1^QUq^T%d/51%w"G153UsZ/QqUlQq/153Un|Qq%s/153UlZ/QqUn'Qd&1UhQl<.UpQn<Qh-\"F%c'TRQs:C>QpJQn<D-%c"L%c1-Qh\|Qh\'RQs:C>Qw"GC|153%pJ'>EX

প্রোগ্রামটি, যা নিজেই জায়গায় পরিবর্তিত হয়, অবশ্যই নামক কোনও ফাইলে সংরক্ষণ করতে হবে x। এটি কমান্ডের মাধ্যমে চালানো যেতে পারে tecoc mung x.। বিন্দুটি গুরুত্বপূর্ণ; এটি ছাড়াই, টেকো নামের একটি ফাইল সন্ধান করার চেষ্টা করেছিল x.tec। চলমান নিউলাইন অবশ্যই উপস্থিত থাকতে হবে

মুদ্রণযোগ্য এএসসিআইআই বিধিনিষেধটি এটার জন্য কিছুটা বেদনা ছিল, কারণ ভাষাটি অনেকগুলি মুদ্রণযোগ্য অক্ষর ব্যবহার করে। তাদের বেশিরভাগই একটি ক্যারেট দিয়ে শুরু করে দ্বি-বাইট ক্রম দ্বারা প্রতিস্থাপন করা যেতে পারে, তবে "এস্কেপ" (এএসসিআইআই ২ the) এমন একটি চরিত্র যা 'অনিবার্য', তাই এটির জন্য আমাকে এর ASCII মানটি স্ট্রিংয়ে রেখে দিতে হয়েছিল এবং এটি কার্যকর। এভাবে, 4-বাইটটি EBx<Esc>বিস্ফোরিত হয় @^Ux#EBx#27@:^UX##Mx

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

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