Професионална програма
Loading...
Malkovi4 avatar Malkovi4 2 Точки

05. Challenge the Wedding допълнителната

Здравейте колеги,

Почнах допълнителните задачи за вложени цикли и 5тата се дърпа от стотака.
Дава ми 30/100 като покривам нулевите тестове.

Възможно ли е някой да хвърли едно око на кода ми?

Условие:

Провокирани от сватбата си, Михаела и Иван решават да предоставят нова услуга на клиенти на ресторанта си, а именно вечеря за запознанства - "Предизвикай Сватбата". Напишете програма, която отпечатва всички възможни срещи на клиентите на ресторанта. При настаняване всеки мъж и всяка жена получават талончета с поредни номера стартирайки от 1. Ако бъдат заети всички маси, програмата трябва да приключи. Всяка маса има две места.
Вход
От конзолата се четат точно 3 числа, всяко на отделен ред:
Броя клиенти мъже - цяло число в интервала [1...100]
Броя клиенти жени - цяло число в интервала [1...100]
Максималният брой маси - цяло число в интервала [1...100]
Изход
На конзолата се принтират на един ред, разделени с интервал всички срещи в следният формат:
({№ клиент} <-> {№ клиент}) ({№ клиент} <-> {№ клиент}) ...
 

Примерен вход и изход
Вход    Изход    Обяснения
2
2
6    (1 <-> 1) (1 <-> 2) (2 <-> 1) (2 <-> 2)
    Мъж 1 се среща с Жена 1, Мъж 1 се среща с Жена 2, Мъж 2 се среща с Жена 1, Мъж 2 се среща с Жена 2.
2
2
3    (1 <-> 1) (1 <-> 2) (2 <-> 1)     Мъж 1 се среща с Жена 1, Мъж 1 се среща с Жена 2, Мъж 2 се среща с Жена 1. И трите маси за заети и програмата приключва.
5
8
40    (1 <-> 1) (1 <-> 2) (1 <-> 3) (1 <-> 4) (1 <-> 5) (1 <-> 6) (1 <-> 7) (1 <-> 8) (2 <-> 1) (2 <-> 2) (2 <-> 3) (2 <-> 4) (2 <-> 5) (2 <-> 6) (2 <-> 7) (2 <-> 8) (3 <-> 1) (3 <-> 2) (3 <-> 3) (3 <-> 4) (3 <-> 5) (3 <-> 6) (3 <-> 7) (3 <-> 8) (4 <-> 1) (4 <-> 2) (4 <-> 3) (4 <-> 4) (4 <-> 5) (4 <-> 6) (4 <-> 7) (4 <-> 8) (5 <-> 1) (5 <-> 2) (5 <-> 3) (5 <-> 4) (5 <-> 5) (5 <-> 6) (5 <-> 7) (5 <-> 8) 

 

кода ми:

function wedding(input){

    let men = Number(input[0]);

    let women = Number(input[1]);

    let tables = Number(input[2]);

    let counter = 0;

    let couples = "";

 

    for(let i = 1; i<=men;i++){

        for(let j = 1; j<=women;j++){

            counter++;

            couples += `(${i} <-> ${j}) `;

            if(counter==tables){

                break;

            }

            

        }

    }

    console.log(couples);

}

 

Тагове:
willystyle avatar willystyle 2156 Точки
Best Answer

добави още една проверка за изход в края на блока и на първия цикъл, както си направил във вътрешния (break излиза само от един цикъл, текущия):

function wedding(input) {
    let men = Number(input[0]);
    let women = Number(input[1]);
    let tables = Number(input[2]);
    let counter = 0;
    let couples = '';
    for (let i = 1; i <= men; i++) {
        for (let j = 1; j <= women; j++) {
            counter++;
            couples += `(${i} <-> ${j}) `;
            if (counter == tables) {
                break;
            }
        }
        if (counter == tables) {
            break;
        }
    }
    console.log(couples);
}

или печатай и излез с return:
 

function wedding([men, women, tables]) {
    let counter = 0;
    let couples = '';
    for (let i = 1; i <= men; i++) {
        for (let j = 1; j <= women; j++) {
            counter++;
            couples += `(${i} <-> ${j}) `;
            if (counter == tables) {
                console.log(couples);
                return;
            }
        }
    }
    console.log(couples);
}

 

0
06/01/2020 14:52:24
Malkovi4 avatar Malkovi4 2 Точки

Благодаря много, @willystyle!

Първият вариянт върна 100/100.

Вторият 80/100, като на 3тия Zero test не принтира нищо.

 

1
willystyle avatar willystyle 2156 Точки

Странно, аз като ги пускам и двата дават по 100.

0
Malkovi4 avatar Malkovi4 2 Точки

Моя грешка.

Липсваше ми последния console.log, който е след циклите.
Махнал съм го поради някаква причина...

Отново благодаря много за помоща!

1