احسان داوری
2 سال پیش توسط احسان داوری مطرح شد
8 پاسخ

سوال درک و تجزیه وتحلیل

سلام دوستان ، استاد بنده این کد رو دادن و گفتن :" این کدو بررسی کنین و بنویسین چه کاری انجام می‌ده " توضیحات بیشتری ندادن ، گفتن اصلا مهم نیست که کد با چه زبانیه، فقط درست درک و تجزیه تحلیل بکنید و با توجه به کاری که این کد انجام میده براش یک اسم بزارید

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 و بقیه عزیزان


ثبت پرسش جدید
میلاد خسروی
تخصص : برنامه نویس بامزه
@milwad 2 سال پیش مطرح شد
0

سلام خسته نباشید
اگه میخوای توضیح بدم به شکل زیره

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 برگردونند
};

میتونست که تمیز تر بنویسه و قابل فهم تر باشه


نیما
تخصص : جوجه برنامه نویسی که میخواد فو...
@Nima.nori 2 سال پیش آپدیت شد
1

@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 موردنظر جابجا می کنه که در نتیجه اون حرف عوض میشه و اینکار رو توی کل متن کرده


احسان داوری
تخصص : برنامه نویس
@ehsndvr 2 سال پیش مطرح شد
0

@Nima.nori @milwad سلام دوستان خیلی ممنون که وقت گذاشتید جواب دادید اما استاد گفتن که این جواب ها درست نیست و من فقط تا امشب وقت دارم ، کسی دیگه ایی به جواب نرسید ؟


نیما
تخصص : جوجه برنامه نویسی که میخواد فو...
@Nima.nori 2 سال پیش مطرح شد
0

چرا کد رو تست نمی کنی ؟ بهترین راهش اینه یه فانکشن بساز این متن داخلش باشه بعد ورودی بده خروجی بگیر تا وقتی بفهمی چی کار می کنه برای خروجی از console.log() استفاده کن


احسان داوری
تخصص : برنامه نویس
@ehsndvr 2 سال پیش مطرح شد
0

@Nima.nori سلام نمیا جان
من خروجی گرفتم اما متوجه نشدم با کد چیکار میکنه ...


نیما
تخصص : جوجه برنامه نویسی که میخواد فو...
@Nima.nori 2 سال پیش مطرح شد
0

دیگه از اینجا به بعد شو بلد نیستم متاسفانه😅


احسان داوری
تخصص : برنامه نویس
@ehsndvr 2 سال پیش مطرح شد
0

سلام دوستان
مرسی از شما نیما جان @Nima.nori و آقای خسروی عزیز @milwad
بنده جواب هارو به استاد دادم اما گفتن اینها نیست و جواب خیلی فراتر از ایناست.
خیلی ممنون بابت پاسخگویی


میلاد خسروی
تخصص : برنامه نویس بامزه
@milwad 2 سال پیش مطرح شد
0

سلام خسته نباشید
ببخشید من چند روزی کلا نبودم
من چیزی که دیدم بیشتر REGEX استفاده کرده بود
@ehsndvr


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام