ช่วยแก้ปัญหา ภาษาc# หน่อยครับ ว่าทำยังไงให้ไม่ใช้คำสั่งgoto ได้ครับ

กระทู้คำถาม
พอดีผมพึ่งได้ลองศึกษาภาษาC#ได้ไม่นานครับ ได้คิดโจทย์ปัญหาเองเกี่ยวบกับการสุ่มตัวเลขมาแล้วให้เติมเว่ามากกว่าหรือน้อยกว่าโดยตัวเลขฝั่งซ้ายแล้วฝั่งขวาไม่เท่ากันเพราะว่าเติมได้แค่มากกว่าหรือน้อยกว่าเท่านั้น แล้วโจทย์แต่ละข้อไม่ซ้ำกันครับ
ตัวอย่าง
5 [] 25 **น้อยกว่าเติม 1
31 [] 17 **มากว่าเติม 2
สามารถรันได้ แต่ปัญหาของผมคือเมื่อลองเปลี่ยนตัวเลขจาการสุ่ม ในตัวอย่างโค้ตคือ 1ถึง10 แล้วเปลี่ยนจำนวนช้อที่มากขึ้น เวลาในการคอมไพล์มันมากขึ้นเรื่อยๆเลยครับ เช่น จำนวนข้อ 200 ใช้เวลา 3 วิแต่พอมันเป็น จำนวนข้อ230 มันใช้เป็น 10 วิเลยครับ จากที่ไปลองศึกษามา เขาไม่ค่อยแนะนำให้ใช้ goto กันครับเลยอยากทราบว่าจะทำยังไงให้ไม่ต้องใช้คำสั่งgoto ครับ ขอบคุณครับ #ถ้าผมอธิบายได้ไม่เข้าใจต้องขออภัยด้วยนะครับผมพึ่งได้ลองศึกษาด้วยตนเองตามคลิปต่างๆ อาจจะมีบางอย่างที่ผมได้พูดผิดไปหรือวกวนงงๆก็ต้องขออภัยด้วยนะครับ 

Random r = new Random();
int numberofverses;
do{
    Console.Write("Input number of verses:");
    int.TryParse(Console.ReadLine(), out numberofverses);
    if (numberofverses <= 400 && numberofverses != 0){
        break;
    } else{
        Console.Clear();
        continue;
    }
} while (true);
int score = 0;
int<> a = new int<numberofverses>;
int<> b = new int<numberofverses>;
int x = 0;
string<> Y = new String<numberofverses>;
Console.WriteLine("compared to less<1> than or more<2>");
full:
for (int i = x; i < numberofverses; i++){
    a<i> = r.Next(10, 301);
    b<i> = r.Next(10, 301);
    Y<i> = a<i>.ToString() + b<i>.ToString();//รวมตัวเลขฝั่งซ้ายและฝั่งขวาเป็นสตริงในอาเรย์ครับ  ตัวอย่าง 5 [] 25 ก็เป็น 525 
    if (a<i> == b<i>){//ตรงนี้คือถ้าฝั่งซ้ายและฝั่งขวาเท่ากันให้ย้อนกลับไปคำนวณรอบใหม่ครับ
        i -= 1;
    }
}
for (int k = 0; k < Y.Length; k++){//ตรงนี้คือ เช็คทุกข้อจากอาเรย์yครับ แล้วมาไล่เทียบกันทีละข้อเลยครับ
    for (int j = k + 1; j < Y.Length; j++){
        if (Y<k> == Y<j>){//พอเจอโจทย์ซ้ำกันจากข้อๆนึงกับอีกข้อนึงก็จะ ย้อนไป back; ข้างบนครับเพื่อคำนวณใหม่ตรงรอบjที่ซ้ำครับ ตรงนี้สามารถหาวิธีการเขียนยังไงที่ไม่ต้องใช้ goto ครับ
            x = j;
            goto full;
        }
    }
}
char c;
for (int i = 0; i < numberofverses; i++){
    do{
        Console.Write($"{a<i>}[ ]{b<i>}:");
        c = char.Parse(Console.ReadLine());
        if (c != '1' && c != '2'){
            Console.WriteLine("Input again");
            continue;
        } else{
            if (c == '1'){
                if (a<i> < b<i>){
                    Console.WriteLine("Current");
                    score++;
                } else{
                    Console.WriteLine("Wrong");
                }
            } else if (c == '2'){
                if (a<i> > b<i>){
                    Console.WriteLine("Current");
                    score++;
                } else{
                    Console.WriteLine("Wrong");
                }
            }
            break;
        }
    } while (true);
}
Console.WriteLine($"Yout score={score}/{numberofverses}");
Console.ReadKey();

**ขอแก้ไข เปลี่ยนวงเล็บเหลี่ยม ([ ]) เนื่องจากไม่รู้ว่าทำไมผมโพสแล้วมันไม่แสดงขึ้นมาเลยเปลี่ยนเป็น <> แทนวงเล็บเหลี่ยมนะครับ
แก้ไขข้อความเมื่อ
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่