ট্র্যাক
/
Julia
Julia
/
অনুশীলনী
/
রোটেশনাল সাইফার
রোটেশনাল সাইফার

রোটেশনাল সাইফার

সহজ

নির্দেশনা

রোটেশনাল সাইফার, যাকে মাঝে মাঝে সিজার সাইফারও বলা হয়, তার একটি ইমপ্লিমেন্টেশন তৈরি করুন।

সিজার সাইফার হলো একটি সরল শিফট সাইফার, যা 0 থেকে 26-এর মধ্যে থাকা একটি ইন্টিজার কী ব্যবহার করে বর্ণমালার সব অক্ষর স্থানান্তরের উপর নির্ভর করে। মডুলার অ্যারিথমেটিকের কারণে 0 বা 26 কী ব্যবহার করলে সবসময় একই আউটপুট পাওয়া যায়। কী-এর মান যত, অক্ষরটি ঠিক ততবার শিফট করা হয়।

রোটেশনাল সাইফারের সাধারণ নোটেশন হলো ROT + <key>। সবচেয়ে বেশি ব্যবহৃত রোটেশনাল সাইফারটি হলো ROT13।

ল্যাটিন বর্ণমালায় একটি ROT13 হলে তা দাঁড়াবে এমন:

Plain:  abcdefghijklmnopqrstuvwxyz
Cipher: nopqrstuvwxyzabcdefghijklm

এটি অ্যাটবাশ সাইফারের চেয়ে শক্তিশালী, কারণ এতে সম্ভাব্য কী ২৭টি, আর ব্যবহারযোগ্য কী ২৫টি।

সাইফারটেক্সট ইনপুটের মতো একই ফরম্যাটিংয়ে লেখা হয়, যার মধ্যে স্পেস ও যতিচিহ্নও থাকে।

উদাহরণ

  • ROT5-এ omg থেকে trl পাওয়া যায়
  • ROT0-এ c থেকে c পাওয়া যায়
  • ROT26-এ Cool থেকে Cool পাওয়া যায়
  • ROT13-এ The quick brown fox jumps over the lazy dog. থেকে Gur dhvpx oebja sbk whzcf bire gur ynml qbt. পাওয়া যায়
  • ROT13-এ Gur dhvpx oebja sbk whzcf bire gur ynml qbt. থেকে The quick brown fox jumps over the lazy dog. পাওয়া যায়

নন-স্ট্যান্ডার্ড স্ট্রিং লিটারেল ও মেটাপ্রোগ্রামিং নিয়ে পরীক্ষা-নিরীক্ষা করার জন্য এটি একটি ভালো অনুশীলনী।

নন-স্ট্যান্ডার্ড স্ট্রিং লিটারেলের একটি সংক্ষিপ্ত পরিচিতি পাওয়া যাবে এই ব্লগ পোস্টে। মেটাপ্রোগ্রামিংয়ের বিস্তারিত গাইড পাওয়া যাবে ম্যানুয়ালে।

নিচে বর্ণিত কার্যকারিতা যোগ করে আপনি আপনার সলিউশন বাড়িয়ে নিতে পারেন।

বোনাস A-এর জন্য ব্লগ পোস্টে বর্ণিত মৌলিক বিষয়গুলোই শুধু প্রয়োজন। বোনাস B-এর জন্য Julia-তে মেটাপ্রোগ্রামিংয়ের অনেক বেশি জ্ঞান দরকার।

বোনাস A

এমন একটি স্ট্রিং লিটারেল তৈরি করুন যা স্ট্রিংটির উপর ROT13-এর মতো কাজ করে:

R13"abcdefghijklmnopqrstuvwxyz" == "nopqrstuvwxyzabcdefghijklm"

বোনাস B

R<i> স্ট্রিং লিটারেলগুলো তৈরি করুন, যেখানে i = 0, ..., 26, যা স্ট্রিংটিকে i মান অনুযায়ী শিফট করে:

R0"Hello, World!" == "Hello, World!"
R4"Testing 1 2 3 testing" == "Xiwxmrk 1 2 3 xiwxmrk"
R13"abcdefghijklmnopqrstuvwxyz" == "nopqrstuvwxyzabcdefghijklm"

সূত্র

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

রোটেশনাল সাইফার শুরু করতে প্রস্তুত?

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