আপনি এক্স উইন্ডো সিস্টেমের সাথে (এবং যতদূর আমি জানি, এখনও আসে) একটি ডেমো প্রোগ্রাম জিসস বা স্মরণ করতে পারে না। এর উদ্দেশ্যটি ছিল এমন এক জোড়া চোখ আঁক যা আপনার মাউস কার্সারকে অনুসরণ করেছিল:
আপনার চ্যালেঞ্জটি এসিআইআইআই আর্টের সাহায্যে জিৎসকে পুনরায় তৈরি করা। এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা ব্যবহারকারী যেখানেই ক্লিক করে দুটি ASCII আর্ট চোখ আঁকেন (নীচে নির্দিষ্ট করা) এবং তারপরে তাদের ছাত্রদের কার্সারের দিক নির্দেশ করার দিকে নিয়ে যান।
উপরের জিআইএফ এই নন-গল্ফযুক্ত রুবি বাস্তবায়নের একটি রেকর্ডিং , যা রুবির সাম্প্রতিক সংস্করণ দিয়ে চালানো যেতে পারে। আপনি Xterm নিয়ন্ত্রণ সিকোয়েন্সগুলির রেফারেন্স হিসাবে এটি দরকারী হিসাবে পেতে পারেন।
বিশেষ উল্লেখ
এটি কোড-গল্ফ , সুতরাং কয়েকটি বাইটের সাথে সমাধানটি জিততে পারে।
এটি একটি হল ASCII অত্যাধুনিক তাই আপনার প্রোগ্রাম হওয়া ASCII ব্যবহার করে আঁকা উচিত নয় অক্ষর-বিশেষভাবে, চ্যালেঞ্জ, অক্ষর -
, .
, |
, '
, 0
, স্থান, এবং সম্পর্কে newline। 1 2
এটি একটি ইন্টারেক্টিভ চ্যালেঞ্জ, সুতরাং আপনার প্রোগ্রামটিকে অবশ্যই ইনপুট গ্রহণ করতে হবে এবং রিয়েলটাইমে এর আউটপুট আঁকতে হবে। 3
আপনার প্রোগ্রামটি ইনপুট গ্রহণ করা শুরু করার আগে, এটি কমপক্ষে 20 টি সারি এবং 20 টি কলামের ফাঁকা ক্যানভাস শুরু করতে হবে। ব্যবহারকারী ক্যানভাসে ক্লিক না করা পর্যন্ত এটি কিছু আঁকতে হবে না।
যে কোনও সময় ব্যবহারকারী ক্যানভাসে 4 ক্লিক করে, প্রোগ্রামটির কোনও পূর্ববর্তী আউটপুট সাফ করা উচিত এবং তারপরে মাউস কার্সারের অবস্থানের নিকটবর্তী চরিত্রকে কেন্দ্র করে এই ASCII চোখগুলি ক্যানভাসে আঁকতে হবে। 5 6 (নীচে, ✧
মাউস কার্সারের প্রতিনিধিত্ব করে এবং এটি আঁকানো উচিত নয়))
.---. .---.
| | | |
| 0|✧|0 |
| | | |
'---' '---'
ছাত্ররা কার্সারের দিকে কীভাবে "নির্দেশ" করে তা লক্ষ করুন।
যে কোনও সময় মাউস কার্সার ক্যানভাসে চলে আসে, প্রোগ্রামটির ছাত্রদের পুনরায় অঙ্কন করা উচিত যাতে তারা কার্সারের দিকে নির্দেশ করে চালিয়ে যেতে থাকে, যেমন 7 :
✧
.---. .---.
| 0| | 0|
| | | |
| | | |
'---' '---'
ছাত্র ইশারা
ধরুন আমরা প্রতিটি চোখের অভ্যন্তরীণ নয় টি চরিত্রের অবস্থানগুলি গণনা করেছি:
.---.
|678|
|591|
|432|
'---'
পুতুলটি কোনও এক জায়গায় আঁকা হবে 1
- 9
। কোনটি চরিত্রটি বর্গক্ষেত্রের ভান করে এবং ক্যানভাসটি কার্টেসিয়ান গ্রিড, 9
(0, 0) এর অক্ষরের কেন্দ্র (1, 0) এর কেন্দ্র 1
এবং আরও অনেক কিছু নিয়ে সিদ্ধান্ত নিতে। যখন প্রোগ্রামটি ইনপুট পায় — একটি ক্লিক বা আন্দোলন — এটি ইনপুট অবস্থানটি নিকটতম গ্রিড স্থানাঙ্কে ম্যাপ করে should যদি 𝑀 হয় (0, 0), পুতুলটি (0, 0), অর্থাৎ 9
উপরের অবস্থানটি আঁকতে হবে । অন্যথায়, এটি নীচে বর্ণিত হিসাবে আঁকা উচিত।
কল্পনা করুন যে কোনও কার্তেসিয়ান বিমান গ্রিডে সুপারমোজড এবং 1 - 8 নম্বরযুক্ত অক্টেন্টগুলিতে বিভক্ত :
যদি অক্টান্ট 1 এর মধ্যে থাকে , তবে পুতুলটি 1
উপরের অবস্থানে , অর্থাৎ (1, 0) এ আঁকতে হবে । যদি অক্টান্ট 2 এ থাকে তবে এটি drawn 2
এবং এর মতো করে আঁকতে হবে। উদাহরণস্বরূপ, নীচের চিত্রটি গ্রিডের বর্ণ-কোডিংয়ের কিছু অংশ দেখায় যেখানে মাউস কার্সার নির্দিষ্ট স্থানে থাকে তখন পুতুলটি আঁকতে হবে। উদাহরণস্বরূপ, যখন কার্সারটি সবুজ স্থানাঙ্কের কোনওটিতে থাকে (গ্রিডের স্থানাঙ্কগুলি স্কোয়ারের কেন্দ্রগুলিতে থাকে, তাদের কোণে নয়) মনে রাখে, পুতুলটি আঁকতে হবে 4
।
দুটি চোখের শিক্ষার্থীরা স্বতন্ত্রভাবে চলাফেরা করে, তাই প্রতিটি চোখের জন্য সেই চোখের কেন্দ্রের সাথে তুলনামূলকভাবে প্রক্রিয়াটি পুনরাবৃত্তি করে।
নোট
এটি কোনও গ্রাফিক্যাল-আউটপুট চ্যালেঞ্জ নয়। আউটপুট অবশ্যই অক্ষরের গ্রিড হতে হবে। আপনি অবশ্যই অক্ষরের গ্রিড আঁকার জন্য গ্রাফিক্স রুটিনগুলি ব্যবহার করতে পারেন।
হোয়াইটস্পেস আঁকা হতে পারে (বা, বরং আঁকা না) তবে সুবিধাজনক। গ্রিডের একটি খালি স্থান স্পেস অক্ষর হিসাবে একই দেখায় এবং সমতুল্য হিসাবে বিবেচিত হবে।
"রিয়েল-টাইম" এখানে ইনপুট এবং সংশ্লিষ্ট আউটপুট আঁকানোর মধ্যে 200 মিমি থেকে কম হিসাবে সংজ্ঞায়িত করা হয়েছে।
ইনপুটটির জন্য কোন মাউস বোতাম (গুলি) পর্যবেক্ষণ করা হয় এবং কোনও প্রেস বা রিলিজ একটি "ক্লিক" গঠন করে কিনা তা আপনার বিবেচনার ভিত্তিতে।
ক্যানভাস অবশ্যই সাফ করতে হবে, বা ভিজ্যুয়াল সমতুল্য অর্জন করতে হবে। একটি টার্মিনাল ভিত্তিক সমাধান সহ, উদাহরণস্বরূপ, পূর্ববর্তী ক্যানভাসের নীচে একটি নতুন ক্যানভাস প্রিন্ট করা সমতুল্য হিসাবে বিবেচিত হবে না।
যখন ব্যবহারকারী ক্যানভাসের প্রান্তের কাছে এমনভাবে ক্লিক করেন যে কয়েকটি চোখের অক্ষর তার প্রান্তের বাইরে আঁকতে পারে, তখন আচরণটি সংজ্ঞায়িত হয়। তবে প্রোগ্রামটি অবশ্যই পরবর্তী ক্লিকগুলিতে স্বাভাবিকভাবে চলতে থাকবে।
যখন মাউস কার্সারটি "ক্যানভাস" ছেড়ে যায়, তখন আচরণটি সংজ্ঞায়িত হয়, তবে কার্সারটি ক্যানভাসে পুনরায় প্রবেশ করার সময় প্রোগ্রামটি অবশ্যই চলতে থাকবে।
একটি পাঠ্য কার্সার ক্যানভাসে উপস্থিত হতে পারে, যতক্ষণ না এটি আউটপুটটিকে অস্পষ্ট করে না।
স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।
<pre>
বা font-family:monospace
) be