Camicia

Camicia

মধ্যম

ভূমিকা

এক বৃষ্টিভেজা বিকেলে আপনি রান্নাঘরের টেবিলে আপনার ঠাকুমার সঙ্গে তাস খেলতে খেলতে বসে আছেন। খেলাটি আসলে Camicia-এর তার নিজস্ব একটি সংস্করণ।

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

আপনার মনে প্রশ্ন জাগতে শুরু করে। এই খেলা কি কখনও শেষ হবে? নাকি আমরা চিরকাল খেলতেই থাকতে পারি?

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

আর তাই, হাতে শুধু এক ডেক তাস আর অ্যালগরিদমিক বুদ্ধিমত্তা নিয়েই, আপনি বিষয়টি খতিয়ে দেখার সিদ্ধান্ত নেন...

নির্দেশনা

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

নিয়ম

  • ডেকটি দুই খেলোয়াড়ের মধ্যে ভাগ করা হয়। খেলোয়াড়ের কার্ডগুলো বাম থেকে ডানে পড়া হয়, যেখানে একদম বামের কার্ডটি ডেকের সবচেয়ে উপরে থাকে।
  • একটি রাউন্ডে দুই খেলোয়াড়ই অন্তত একটি করে কার্ড খেলেন।
  • খেলোয়াড়েরা পালা করে নিজেদের ডেকের উপরের কার্ডটি কেন্দ্রীয় পাইলে রাখেন।
  • কার্ডটি যদি সংখ্যা কার্ড (2-10) হয়, তবে খেলা সহজেই অন্য খেলোয়াড়ের কাছে চলে যায়।
  • কার্ডটি যদি পেমেন্ট কার্ড হয়, তবে একটি পেনাল্টি দিতে হয়:
    • J → প্রতিপক্ষকে ১টি কার্ড দিতে হবে
    • Q → প্রতিপক্ষকে ২টি কার্ড দিতে হবে
    • K → প্রতিপক্ষকে ৩টি কার্ড দিতে হবে
    • A → প্রতিপক্ষকে ৪টি কার্ড দিতে হবে
  • পেনাল্টি দিতে থাকা খেলোয়াড় যদি আরেকটি পেমেন্ট কার্ড প্রকাশ করেন, তবে তিনি পেনাল্টি দেওয়া বন্ধ করেন। তখন অন্য খেলোয়াড়কে নতুন পেমেন্ট কার্ড অনুযায়ী পেনাল্টি দিতে হবে।
  • পেনাল্টি যদি কোনো বাধা ছাড়াই পুরোপুরি দেওয়া হয়, তবে যে খেলোয়াড় শেষ পেমেন্ট কার্ডটি রেখেছিলেন তিনি কেন্দ্রীয় পাইলটি নিয়ে নিজের ডেকের নিচে রাখেন। এরপর ওই খেলোয়াড়ই পরের রাউন্ড শুরু করেন।
  • কোনো খেলোয়াড়ের কার্ড ফুরিয়ে গেলে এবং তিনি কার্ড খেলতে না পারলে (পেনাল্টি দেওয়ার সময় হোক বা নিজের পালার সময়), অন্য খেলোয়াড় কেন্দ্রীয় পাইলটি নিয়ে নেন।
  • কোনো খেলোয়াড় কেন্দ্রীয় পাইল থেকে কার্ড নিয়ে নেওয়ার এই মুহূর্তটিকে ট্রিক বলা হয়।
  • একটি ট্রিকের পর কোনো খেলোয়াড়ের হাতে সব কার্ড চলে এলে গেমটি শেষ হয়ে যায়।
  • খেলা চলাকালীন ডেকগুলোর অবস্থা আগে কোনো এক সময়ের সাথে হুবহু মিলে গেলেই গেমটি লুপে পড়ে; এ ক্ষেত্রে সংখ্যা কার্ডগুলো গোনা হয় না!

উদাহরণ

শেষ হয়ে যাওয়া একটি ম্যাচের ছোট উদাহরণ।

রাউন্ড খেলোয়াড় A খেলোয়াড় B পাইল প্রদেয় পেনাল্টি
1 2 A 7 8 Q 10 3 4 5 6 K 9 J -
1 A 7 8 Q 10 3 4 5 6 K 9 J 2 -
1 A 7 8 Q 10 4 5 6 K 9 J 2 3 -
1 7 8 Q 10 4 5 6 K 9 J 2 3 A খেলোয়াড় B: 4
1 7 8 Q 10 5 6 K 9 J 2 3 A 4 খেলোয়াড় B: 3
1 7 8 Q 10 6 K 9 J 2 3 A 4 5 খেলোয়াড় B: 2
1 7 8 Q 10 K 9 J 2 3 A 4 5 6 খেলোয়াড় B: 1
1 7 8 Q 10 9 J 2 3 A 4 5 6 K খেলোয়াড় A: 3
1 8 Q 10 9 J 2 3 A 4 5 6 K 7 খেলোয়াড় A: 2
1 Q 10 9 J 2 3 A 4 5 6 K 7 8 খেলোয়াড় A: 1
1 10 9 J 2 3 A 4 5 6 K 7 8 Q খেলোয়াড় B: 2
1 10 J 2 3 A 4 5 6 K 7 8 Q 9 খেলোয়াড় B: 1
1 10 - 2 3 A 4 5 6 K 7 8 Q 9 J খেলোয়াড় A: 1
1 - - 2 3 A 4 5 6 K 7 8 Q 9 J 10 -
2 - 2 3 A 4 5 6 K 7 8 Q 9 J 10 - -

status: "finished", cards: 13, tricks: 1

এটি লুপে পড়ে যাওয়া একটি ম্যাচের ছোট উদাহরণ।

রাউন্ড খেলোয়াড় A খেলোয়াড় B পাইল প্রদেয় পেনাল্টি
1 J 2 3 4 J 5 - -
1 2 3 4 J 5 J খেলোয়াড় B: 1
1 2 3 J 5 J 4 -
2 2 3 J 4 J 5 - -
2 3 J 4 J 5 2 -
2 3 J 4 5 2 J খেলোয়াড় A: 1
2 J 4 5 2 J 3 -
3 J 4 5 2 J 3 - -
3 J 4 2 J 3 5 -
3 4 2 J 3 5 J খেলোয়াড় B: 1
3 4 J 3 5 J 2 -
4 4 5 J 2 J 3 - -

৪ নম্বর রাউন্ডের শুরু ২ নম্বর রাউন্ডের শুরুর সাথে মিলে যায়। মনে রাখবেন, সংখ্যা কার্ডগুলোর মান কোনো ব্যাপার নয়।

status: "loop", cards: 8, tricks: 3

আপনার কাজ

  • ইনপুট ব্যবহার করে উপরের নিয়ম অনুযায়ী গেমটি সিমুলেট করুন।
  • গেমটি সম্পর্কে নিচের তথ্যগুলো নির্ণয় করুন:
    • Status: "finished" অথবা "loop"
    • Cards: গেম জুড়ে মোট কতটি কার্ড খেলা হয়েছে
    • Tricks: কেন্দ্রীয় পাইল কতবার নেওয়া হয়েছে
Advanced

যারা আরও রোমাঞ্চকর চ্যালেঞ্জ নিতে চান, তাদের জন্য সুখবর হলো, শেষ হয় এমন দীর্ঘতম গেমের আরও রেকর্ডের খোঁজ এখনো চলছে। এমন 653,534,134,886,878,245,000টি (প্রায় ৬৫৪ কুইন্টিলিয়ন) সম্ভাবনা আছে, আর আমরা এখনো সেগুলোর সবগুলো হিসাব করে উঠতে পারিনি!


সূত্র

Beggar-My-Neighbourলিংকটি নতুন উইন্ডো বা ট্যাবে খোলে
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Tcl Exercism

Camicia শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, Tcl ট্র্যাকের 135টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।