سلام دوست عزیز😃👋

به آزمون ورودی کارآموزی تابستانه Front-End کداستار خوش آمدید!

مسابقه به مدت ۳ ساعت و نیم ادامه خواهد داشت و در مجموع شامل ۵ سوال است. برای حل سوالات باید به HTML و CSS و JavaScript مسلط باشید به طوری که ۲ سوال اول مربوط به HTML و CSS هستند و ۳ سوال آخر مربوط به JavaScript هستند. برای حل سوالات JavaScript نیازی به تسلط بر روی Framework هایی مانند React و Angular نیست و صرفا دانش JavaScript پایه کافی است.

سوالات به گونه‌ای تنظیم شده‌اند که با توجه به دانشی که دارید بتوانید بخشی از نمرۀ سوال را بگیرید. به عنوان مثال اگر نتوانید سوال ۳ را به طور کامل حل کنید، این امکان وجود دارد که بتوانید بخشی از سوال ۴ را حل کنید؛ بنابراین حتما به تمام سوالات مراجعه کنید.

رتبه‌بندی بر اساس مجموع امتیازاتی که از سوالات کسب می‌کنید صورت می‌گیرد؛ همچنین در صورتی که امتیاز دو نفر یکسان شود، کسی که سوالات را در مدت‌زمان کمتری حل کرده باشد، رتبۀ بهتری کسب می‌کند.

در صورتی که درمورد سوالی ابهام داشتید، می‌توانید از قسمت «سوال بپرسید» آن را مطرح کنید.

برای کسب اطلاعات بیشتر به لینک‌های زیر مراجعه کنید:

موفق باشید 😉✌

رمز‌نگاری


رمز سزار یکی از ساده‌ترین روش‌های رمزنگاری است. در این روش برای رمز کردن یک رشته، یک عدد ثابت nn که عضو بازه‌ی [0,25][0, 25] است در نظر گرفته می‌شود و همه‌ی کاراکترهای رشته، nn واحد به سمت جلو شیفت داده می‌شوند. برای مثال اگر nn را 11 در نظر بگیریم، کاراکتر A به B یا کاراکتر Z به A تبدیل می‌شود. برای حروف کوچک انگلیسی نیز به همین ترتیب تبدیل می‌شوند؛ برای مثال اگر nn را 22 در نظر بگیریم، کاراکتر z به b و کاراکتر h به j تبدیل می‌شود. در مقابل فرایند رمزنگاری فرایند رمزگشایی را داریم که برعکس فرایند رمزنگاری صورت می‌گیرد، یعنی هر کاراکتر nn واحد به سمت عقب شیفت داده می‌شود. در این فرایندها، می‌توان هر کاراکتر را یک عدد عضو بازه‌ی [0,25][0, 25] در نظر گرفت؛ یعنی کاراکترهای a و A با عدد 0 متناظر هستند، کاراکترهای b و B با عدد 1 متناظر هستند و ...

توجه: اگر nn بزرگ‌تر از ۲۵ باشد، باشد، باید باقی‌مانده‌ی تقسیم آن بر ۲۶ را در نظر گرفت. همچنین، تضمین می‌شود که رشته‌ی ورودی فقط شامل کاراکترهای a-z و A-Z است (یا ممکن است رشته‌ای خالی باشد).

فرایند رمزنگاری:🔗

En(x)=(x+n) mod 26E_n(x)=(x+n)\ mod\ 26

فرایند رمزگشایی:🔗

Dn(x)=(xn) mod 26D_n(x)=(x-n)\ mod\ 26

پروژه اولیه🔗

پروژه اولیه را از این لینک دانلود کنید.

ساختار فایل‌ها
crypto-graphy
├── main.js
Plain text
راه اندازی پروژه
  • ابتدا پروژۀ اولیه را دانلود و از حالت فشرده خارج کنید.
  • سپس فایل main.js را در ادیتور خود باز کنید و کد مورد نظر خود را در آن پیاده سازی کنید.

خواسته های مسئله🔗

در این مسئله شما باید دو تابع encrypt و decrypt را پیاده‌سازی کنید که این دو تابع باید شرایط زیر را دارا باشند:

  • تابع encrypt(str, n): این تابع، کاراکترهای رشته‌ی ورودی را به اندازه‌ی n واحد به جلو شیفت می‌دهد.

  • تابع decrypt(str, n): این تابع، کاراکترهای رشته‌ی ورودی را به اندازه‌ی n واحد به عقب شیفت می‌دهد.

extensionFromNamemain.js
function encrypt(str, n) {
    // TODO:
}

function decrypt(str, n) {
    // TODO:
}

export { encrypt, decrypt };
JavaScript

مثال🔗

console.log(encrypt("ZDKhdflgsdhfos", 3));

console.log(decrypt("ByffiQilfx", 20));
JavaScript

خروجی کد بالا:

CGNkgiojvgkirv

HelloWorld
Plain text

نکات🔗

  • شما تنها مجاز به اعمال تغییرات در فایل main.js هستید.
  • به هنگام ثبت پاسخ تنها فایل main.js خود را آپلود نمایید.
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.