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

حل تمرین مجید، میلاد، رشته‌سازی

حل تمرین مجید، میلاد، رشته‌سازی
حل تمرین مجید، میلاد، رشته‌سازی

حل تمرین مجید، میلاد، رشته‌سازی

در این نوشته تمرین “مجید، میلاد، رشته‌سازی” که در وبسایت کوئرا موجود است را برای شما کاربران عزیز حل کرده‌ایم.

 

حل تمرین مجید، میلاد، رشته‌سازی

سوال تمرین

میلاد و مجید در حال ساخت یک رشته طولانی از 0 و  هستند. رشته به این ترتیب ساخته می‌شود که در گام اول میلاد را می‌نویسد. از آن پس هر کس در نوبت خود رشته‌ای که تا الان ساخته شده است را در نظر گرفته و با تبدیل همه ها به 0 و همه 0 ها به 1، رشته حاصل را در ادامه رشته قبلی می‌نویسد و سپس نوبت نفر بعد می‌شود. و این کار را تا ابد ادامه می‌دهند. برای مثال، پنج نوبت اول بازی به صورت زیر است:

ابتدا میلاد 1 را می‌نویسد و رشته در پایان این مرحله 1 می‌شود. سپس مجید رشته فعلی که 1 بوده را گرفته و آن را متمم می‌کند و به انتهای رشته اضافه می‌کند در پایان این مرحله رشته به صورت 10 می‌شود. سپس میلاد 10 را گرفته و آن را متمم می‌کند و به انتهای رشته اضافه می‌کند و در پایان این مرحله رشته به صورت 1001 خواهد شد. سپس مجید رشته 1001 را گرفته و با متمم کردن آن و اضافه کردنش به انتهای رشته، رشته به شکل 10010110 می‌شود. و به همین ترتیب ساخت رشته تا ابد ادامه پیدا می‌کند. حال ما از شما می‌خواهیم با گرفتن L و R، از کاراکتر Lام تا کاراکتر Rام رشته را برای ما چاپ کنید.

 

ورودی تمرین

در یک خط به ترتیب L و R به شما داده می‌شود.

 

خروجی تمرین

از کاراکتر Lام تا کاراکتر Rام رشته را در یک خط و بدون‌ فاصله چاپ کنید.

 

مثال تمرین

sample 1:
input :
1 2
output :
10

sample 2:
input :
7 10
output :
1001

 

کد تمرین

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // First String To run in programm
        String firstString = "1";
        String lastString = "1";

        // Give Input
        String input = sc.nextLine();
        String[] tempInput = input.split(" ");
        int L = Integer.parseInt(tempInput[0]);
        int R = Integer.parseInt(tempInput[1]);

        String temp;

        for (int i = 0; firstString.length() <= R + 1; i++) {

            if(i == 0) {
                firstString = "10";
                lastString = "01";
            }

            temp = lastString + firstString;
            firstString += lastString;
            lastString = temp;

        }

        System.out.println(firstString.substring(L - 1,R));

    }

}

 

روش حل تمرین

ابتدا با کمک توابع Scanner ورودی و مقدار را از کاربر می‌گیریم. با توابع مربوط به Split String مقدار L و R را دریافت می‌کنیم و سپس یک حلقه می سازیم به اندازه ای که طول رشته‌ی خروجی از مقدار R کمتر شود. در بدنه‌ی این حلقه اتصالات رشته‌ها و تولید آن انجام می‌پذیرد. نکته‌ی این سوال این است که رشته قبلی باید ابتدای رشته‌ی بعدی قرار بگیرد و رشته جدید هم در نهایت به آن بچسبد و این‌کار تا مرز مشخص ادامه دارد. در نهایت هم با کمک توابع substring که در زبان جاوا برای متغیرهای رشته‌ای یا String قرار دارد بخش مورد نظر خود را جدا می‌کنید و آن‌را چاپ می‌کنید؛ این بخش محدوده‌ای از رشته است که از خانه‌ی Lام تا خانه‌ی Rام است.

منبع سوال‌: وبسایت کوئرا

 

اگر روش حل بهتری برای “تمرین مجید، میلاد، رشته‌سازی” دارید برای ما ارسال کنید تا با نام خودتان به اشتراک بگذاریم. اگر سوال خاصی را مدنظر دارید در بخش نظرات برای ما ارسال کنید تا حل آن سوال را در الویت محتوای سایت بگذاریم.

برای امتیاز به این نوشته کلیک کنید!
[کل: 2 میانگین: 4.5]