Loading...
ivoyanev88 avatar ivoyanev88 5 Точки

JS - More Exercises: Data Types and Variables /6.Chess Board

Здравейте,

 

получавам  50 / 100 на задачата като 3 и 4 тест не минават. Не можах да разбера къде е грешката. 

Това е кода на задачата:

function chessboard(n){
    let box=1;
    console.log('<div class="chessboard">')
    for(i=1;i<=n;i++){
        console.log(' <div>')
        for(j=1;j<=n;j++){
            if(box%2===0){
                console.log(`  <span class="white"></span>`);
            }else{
                console.log(`  <span class="black"></span>`);
            }
            box+=1;
        }
        console.log(' </div>');
    }


console.log('</div>');
}

Тагове:
2
Fundamentals Module
sisis003 avatar sisis003 64 Точки

Здравей,

Проблемът идва когато за n е зададено четно число. Тогава всеки ред ти започва с черен цвят, а не се редуват, всички редове са еднотипни.

Трябва да имаш 2 променливи за цвета. В едната да пазиш текущия цвят, а в другата - предния. Ако предният ти цвят е бил черен, то сегашния да ти е бял и обратно.

Ето така например: https://pastebin.com/sCzH8hsG

 

1
03/02/2019 13:53:59
Acho29 avatar Acho29 3 Точки

Доста приятно решение, което доста ми помогна! Преди това опитвах само с една променлива за цвят, но каквото и да прaвех не се получаваше. Благодаря за решението и насоките! Thumbs up!

2
G.gotev avatar G.gotev 1 Точки

function chessBoard(number) {

let table = 0;

  console.log(`<div class="chessboard">`);

 

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

    console.log(`  <div>`);

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

      table++;

      if (table % 2 === 0) {

        console.log(`    <span class="white"></span>`);

      } else {

        console.log(`    <span class="black"></span>`);

      }

      if (j === number) {

        if (j % 2 === 0) {

          table++;

        }

      }

    }

    console.log(`  </div>`);

  }

  console.log(`</div>`);

}

Ето и вариант с една променлива.

Може да добавиш и една проверка накрая дали числото от последното завъртане е четно и да увеличиш counter-a с единица там, за да започне следващия път отново шахматно. Дава ти 50 от 100 judge точно поради тази причина, половината тестове минават, когато входните данни са нечетни числа, защото променливата ти " брояч " и тя е нечетна и ги реди правилно, но при входни данни четно число тя остава също такава и не се нареждат цветовете шахматно.

Болднал съм където е проверката.

 

0
k7petrov avatar k7petrov 2 Точки

Ето и едно дърварско решение без променливи...

 

function chessBoard(n) {

 

    console.log('<div class="chessboard">');

 

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

        console.log(` <div>`);

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

           

            if (i % 2 != 0 && j % 2 != 0) {

                console.log(`  <span class="black"></span>`);

            } else if (i % 2 != 0 && j % 2 == 0) {

                console.log(`  <span class="white"></span>`);

            } else if (i % 2 == 0 && j % 2 != 0) {

                console.log(`  <span class="white"></span>`);

            } else {

                console.log(`  <span class="black"></span>`);

            }

        }

        console.log(` </div>`);

    }

 

    console.log('</div>');

}

1
engenginy avatar engenginy 4 Точки

Ети едно решение и от мен:

function solve(num){
    let square = "white";
    console.log("<div class=\"chessboard\">");
    for (let i = 0; i < num; i++){
        console.log("  <div>");
            for (let j = 0; j < num; j++){
               square = square === "white"? "black" : "white";
                console.log(`    <span class="${square}"></span>`);
            }
            
            if (num % 2 === 0){
                square = i % 2 === 0 ? "black" : "white";
            }
        console.log("  </div>");
    }
    console.log("</div>");
}

 

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.