ট্র্যাক
/
Zig
Zig
/
অনুশীলনী
/
অ্যানাগ্রাম
অ্যানাগ্রাম

অ্যানাগ্রাম

সহজ

ভূমিকা

একটি গ্যারেজ সেলে আপনি সস্তায় একটি চমৎকার ভিন্টেজ টাইপরাইটার পেয়ে যান! উত্তেজিত হয়ে আপনি বাড়ি ছুটে যান, একটি কাগজ ঢোকান, আর টাইপ করা শুরু করেন। তবে আউটপুট দেখে আপনার উত্তেজনা কমে যায়: সব শব্দ এলোমেলো হয়ে গেছে! যেমন, এটি "post"-এর বদলে "stop" আর "stale"-এর বদলে "least" প্রিন্ট করে। সাবধানে আপনি আবার চেষ্টা করেন, কিন্তু এবার এটি "spot" আর "slate" প্রিন্ট করে। কিছু পরীক্ষা-নিরীক্ষার পর আপনি বুঝতে পারেন, প্রতিটি অক্ষর প্রিন্ট হওয়ার আগে একটি র‍্যান্ডম বিলম্ব থাকে, যা ক্রম নষ্ট করে দেয়। এখন আপনি বুঝতে পারেন কেন তারা এটা এত কম দামে বিক্রি করেছিল!

আপনি বুঝতে পারেন, এই অদ্ভুত বৈশিষ্ট্যটি আপনাকে অ্যানাগ্রাম তৈরি করার সুযোগ দেয়, অর্থাৎ অ্যানাগ্রাম হলো এমন শব্দ যা অন্য একটি শব্দের অক্ষরগুলো পুনর্বিন্যাস করে তৈরি হয়। আপনার এই আবিষ্কারে খুশি হয়ে, দিনের বাকি অংশটি আপনি শত শত অ্যানাগ্রাম তৈরি করতে ব্যয় করেন।

নির্দেশনা

একটি লক্ষ্য শব্দ এবং এক বা একাধিক প্রার্থী শব্দ দেওয়া থাকলে, আপনার কাজ হলো এমন প্রার্থী শব্দগুলো খুঁজে বের করা যেগুলো লক্ষ্য শব্দের অ্যানাগ্রাম।

অ্যানাগ্রাম হলো অক্ষর পুনর্বিন্যাস করে নতুন একটি শব্দ তৈরি করা: উদাহরণস্বরূপ, "owns" শব্দটি "snow"-এর একটি অ্যানাগ্রাম। একটি শব্দ নিজেই নিজের অ্যানাগ্রাম নয়: উদাহরণস্বরূপ, "stop" শব্দটি "stop"-এর অ্যানাগ্রাম নয়।

লক্ষ্য শব্দ এবং প্রার্থী শব্দগুলো এক বা একাধিক ASCII বর্ণমালার ক্যারেক্টার দিয়ে গঠিত (A-Z এবং a-z)। ছোট হাতের ও বড় হাতের ক্যারেক্টার সমতুল্য: উদাহরণস্বরূপ, "PoTS" শব্দটি "sTOp"-এর একটি অ্যানাগ্রাম, কিন্তু "StoP" শব্দটি "sTOp"-এর অ্যানাগ্রাম নয়। আপনার যে শব্দগুলো খুঁজে বের করতে হবে সেগুলো প্রার্থী শব্দগুলোর মধ্য থেকেই নিতে হবে, একই হাতের অক্ষর ব্যবহার করে।

লক্ষ্য "stone" এবং প্রার্থী শব্দ "stone", "tones", "banana", "tons", "notes" এবং "Seton" দেওয়া থাকলে, আপনার খুঁজে বের করতে হবে এমন অ্যানাগ্রাম শব্দগুলো হলো "tones", "notes" এবং "Seton"।

BufSet

আমরা প্রস্তাব করি যে detectAnagrams একটি BufSet রিটার্ন করুক।

BufSet হলো স্ট্রিংয়ের একটি সেট, যা StringHashMap(void)-এর মতোই, শুধু পার্থক্য হলো, ইনসার্ট করার আগে আপনাকে কী (key) কপি করতে হয় না। BufSet নিজেই সেটা করে।

Zig-এ হ্যাশ ম্যাপ সম্পর্কে আরও বিস্তারিত জানতে দেখুন:

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

অ্যানাগ্রাম শুরু করতে প্রস্তুত?

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