سلام دوستان ، استاد بنده این کد رو دادن و گفتن :" این کدو بررسی کنین و بنویسین چه کاری انجام میده " توضیحات بیشتری ندادن ، گفتن اصلا مهم نیست که کد با چه زبانیه، فقط درست درک و تجزیه تحلیل بکنید و با توجه به کاری که این کد انجام میده براش یک اسم بزارید
f.f = function(x) {
var r = 0;
if (new RegExp(/^[A-Za-z]+/).exec(x)[0] && new RegExp(/^[A-Za-z]+/).exec(x)[0] !== "undefined") {
let i = 0;
for (let c of[...new RegExp(/^[A-Za-z]+/).exec(x)[0].toUpperCase()]) {
for (let j = new RegExp(/^[A-Za-z]+/).exec(x)[0].length - i; j; j--) {
if (j > 1) {
r += eval((j === new RegExp(/^[A-Za-z]+/).exec(x)[0].length - i ? c.charCodeAt(0) - 64 - 1 : 26) + " * " + Array(j).join("26 * ").replace(/\s+*\s+$/, ""));
} else if (new RegExp(/^[A-Za-z]+/).exec(x)[0].length - i === 1) {
r += c.charCodeAt(0) - 64;
} else if (!i) {
r += 26;
}
}
i++;
}
}
return r;
};
@Nima.nori @endworld @samanzdev @Spaceman @milwad @mhyeganeh @mohammadphp @alarus7 @milad و بقیه عزیزان
سلام خسته نباشید
اگه میخوای توضیح بدم به شکل زیره
f.f = function(x) { // یه فانکشن درست کرده
var r = 0; // یه متغیر که مقدارش صفره
if (new RegExp(/^[A-Za-z]+/).exec(x)[0] && new RegExp(/^[A-Za-z]+/).exec(x)[0] !== "undefined") { // یه regex نوشته و شرط گذاشته
let i = 0; // یه متغیر دیگه
for (let c of[...new RegExp(/^[A-Za-z]+/).exec(x)[0].toUpperCase()]) { // یه حلقه با REGEX زده
for (let j = new RegExp(/^[A-Za-z]+/).exec(x)[0].length - i; j; j--) { // و یه حلقه دیگه که تو در تو میشه
if (j > 1) { // شرط گذاشته که j بزرگتر از 1 باشه
r += eval((j === new RegExp(/^[A-Za-z]+/).exec(x)[0].length - i ? c.charCodeAt(0) - 64 - 1 : 26) + " * " + Array(j).join("26 * ").replace(/\s+*\s+$/, "")); // با regex اومده یه مقداری به r داده
} else if (new RegExp(/^[A-Za-z]+/).exec(x)[0].length - i === 1) { // اگه شرط درست نبود یه شرط دیگه کذاشته
r += c.charCodeAt(0) - 64; // یه مقدار به r داده
} else if (!i) { // یه شرط دیگه
r += 26; // مقدار به r اضافه کرده
}
}
i++; // اومده یدونه به i اضافه کرده
}
}
return r; // و r برگردونند
};
میتونست که تمیز تر بنویسه و قابل فهم تر باشه
@milwad این چیزی که توضیح دادی خود کد بود نگفتی کد چی کار می کنه که
ولی بریم سر اصل مطلب کد زبان js هستش حالا توی این کد معلوم نیست نسخه ی مرورگر یا نسخه ی node js
من می تونستم عین دوست بالا بگم هر for دور چی حلقه زده و... چرا زده اینا ولی شما کاربرد رو خواستی
به احتمال خیلی خلی زیاد این کد برای encode کردن یک کد decode شده هستش چرا
r += eval((j === new RegExp(/^[A-Za-z]+/).exec(x)[0].length - i ? c.charCodeAt(0) - 64 - 1 : 26) + " * " + Array(j).join("26 * ").replace(/\s+*\s+$/, ""));
ما از تابع eval استفاده کردیم که استرینگ رو تبدیل به کد می کنه همچنین از متد replace استفاده کردیم با regex که میاد حروفی رو که می خوایم رو charcode رو می گیره و charcode موردنظر جابجا می کنه که در نتیجه اون حرف عوض میشه و اینکار رو توی کل متن کرده
@Nima.nori @milwad سلام دوستان خیلی ممنون که وقت گذاشتید جواب دادید اما استاد گفتن که این جواب ها درست نیست و من فقط تا امشب وقت دارم ، کسی دیگه ایی به جواب نرسید ؟
چرا کد رو تست نمی کنی ؟ بهترین راهش اینه یه فانکشن بساز این متن داخلش باشه بعد ورودی بده خروجی بگیر تا وقتی بفهمی چی کار می کنه برای خروجی از console.log() استفاده کن
سلام دوستان
مرسی از شما نیما جان @Nima.nori و آقای خسروی عزیز @milwad
بنده جواب هارو به استاد دادم اما گفتن اینها نیست و جواب خیلی فراتر از ایناست.
خیلی ممنون بابت پاسخگویی
سلام خسته نباشید
ببخشید من چند روزی کلا نبودم
من چیزی که دیدم بیشتر REGEX استفاده کرده بود
@ehsndvr
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟