رمز چرخشی

رمز چرخشی

آسان

دستورالعمل‌ها

«رمز چرخشی» را پیاده‌سازی کنید، که گاهی به آن «رمز سزار» هم می‌گویند.

رمز سزار یک «رمز جابه‌جایی» ساده است که بر جابه‌جا کردن همه‌ی حروف الفبا با یک کلید صحیح میان 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 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.