Skip to content

Latest commit

 

History

History
88 lines (61 loc) · 5.51 KB

reverse-number-string.md

File metadata and controls

88 lines (61 loc) · 5.51 KB

سلام دوستان، امیدوارم حالتون خوب باشه.

برای اطلاعات بیشتر در مورد دلیل نوشتن این بخش، به پست لینکدین من مراجعه کنید. همچنین ریپازیتوری گیت‌هاب این سورس رو اینجا می تونید داشته باشید.

GitHub Linkedin

ورودی ما

در سال 0821 خورشیدی، کل جمعیت ایران حدود هفت و نیم میلیون نفر برآورد شد. جمعیت کشور تا سال 5231 به 51 میلیون نفر افزایش یافت...

خروجی ما

در سال 1280 خورشیدی، کل جمعیت ایران حدود هفت و نیم میلیون نفر برآورد شد. جمعیت کشور تا سال 1325 به 15 میلیون نفر افزایش یافت...

مراحل حل مسئله

خب، حل یک مسئله و پیاده‌سازی اون به مراحل مختلفی نیاز داره.

1. تعریف دقیق مسئله

مسئله را اول برای خودمون قابل فهم میکنیم و نیازهای اون رو شناسایی می‌کنیم. ورودی و خروجی‌های مسئله را تعیین و بررسی می‌کنیم که چه ورودی به ما داده میشه و چه خروجی از ما میخواد.

مسئله: نوشتن یک برنامه که یک رشته از اعداد و حروف را گرفته، اعداد را معکوس کنه، و نتیجه رو برگردونه.

نیازها: تعیین ورودی و خروجی دقیق؛ به عنوان مثال، یک رشته به عنوان ورودی و یک فایل به عنوان خروجی.

2. تجزیه و تحلیل مسئله

در این مرحله، مسئله را به اجزاء کوچکتر تجزیه و ارتباطات بین این اجزاء را تحلیل می‌کنیم. این تجزیه به شناخت و درک بهتر مسئله و راه‌حل‌های مختلف منجر میشه.

تجزیه: برای مثال، جداکردن کاراکترهای عددی پیوسته از حروف.

تحلیل: مشخص کردن نحوه ترکیب این اطلاعات برای به دست آوردن خروجی نهایی.

3. طراحی الگوریتم

در این مرحله، یک الگوریتم یا راه‌حل ایده‌آل برای حل مسئله طراحی میکنیم. این شامل انتخاب متدها و ساختارهای داده مناسب هستش.

الگوریتم: برای مثال، استفاده از یک حلقه تحلیلی که اعداد رو معکوس کنه.

ساختار داده: مثلاً، استفاده از یک متغیر برای نگه‌داری رشته معکوس شده.

4. پیاده‌سازی

الگوریتم طراحی شده رو به زبان برنامه‌نویسی مینویسم

5. تست و دیباگ کردن

برنامه تست میکنیم تا مطمئن بشیم که به درستی کار میکنه و در صورت نیاز دیباگ میکنیم.

6. بهینه‌سازی

در نهایت، روی بهینه‌سازی برنامه و کد قکر میکنیم تا بهبودهای احتمالی اون پیدا و اعمال کنیم.

با این رویکرد، تلاش میکنیم مسائل مختلف رو به بهترین شکل ممکن حل کنیم

کد الگوریتم ما

const inversNumber = (text) => {
    let reversedText = '';
    let currentNumber = '';

    for (let i = 0; i < text.length; i++) {
        const char = text[i];
        // اگه کاراکتر عدد بود اون رو به currentNumber اضافه کن
        if (/[0-9]/.test(char)) {
            currentNumber += char;
        } else {
        // اگه مقدار currentNumber ما شامل اعداد بود اون رو معکوس کن و 
        // مقدارش رو به reversedText اضافه کن
            if (currentNumber !== "") {
                const reversedNumber = currentNumber.split('').reverse().join("");
                reversedText += reversedNumber;
                currentNumber = '';
            } 
        // اضافه کردن کاراکتر های غیرعددی به reversedText
            reversedText += char;
        }
    }

    // در صورتی که ورودی قثط عدد باشد دستور else داخل حلقه بالا اجرا نمی شود 
    // و در نهایت اگر currentNumber شامل اعداد بود آن را معکوس و 
    // نتیجه ش رو به reversedText اضافه کن
    if (currentNumber !== '') {
        const reversedNumber = currentNumber.split('').reverse().join('');
        reversedText += reversedNumber;
    }

    return reversedText;
}