Javascript Нарисовать выкройку - PullRequest
0 голосов
/ 11 июля 2020
• 1000 *

Ответы [ 3 ]

1 голос
/ 11 июля 2020

Вы были на правильном пути с двумя вложенными циклами. Вот пример небольшой модификации для решения проблемы:

function cetakGambar(angka){
    let result = ''
    for(let i = 0; i < angka; i++){
        for(let j = 0; j < angka; ++j) {
            result += ((i + j) % 2 == 0) ? '= ' : '* ';
        }
        result += '\n';
    }
    return result
}

Для каждого i создается строка путем перебора j. Для каждого j мы добавляем либо = , либо * , в зависимости от того, делится ли после добавления i и j результат на два (для создания чередующегося шаблона). После каждой строки добавляется \n (новая строка).

0 голосов
/ 12 июля 2020

Вот решение ES6 без явной итерации. Он не особенно краток и, вероятно, не слишком полезен в данном случае, но забавен (IMHO), поэтому я хотел поделиться им.

Он использует Array.from для применения функции генератора, дающей следующий символ (* или =) для каждой ячейки и объединяет ячейки с пробелами и строками с символами новой строки.

// Utility to apply function <fn> <n> times.
function times(n, fn) {
  return Array.from({ length: n }, fn);
}

// Generator function yielding the next symbol to be drawn.
//
function cetakGambar(angka) {
  let generator = (function*() {
    let [i, s1, s2] = [0, "*", "="];
    while (true) {
      // Make sure to start a new line with a different symbol for
      // even rows in case <angka> is even
      if (i++ % angka === 0 && angka % 2 === 0) {
        [s1, s2] = [s2, s1];
      }
      // limit the generator to the number of values we actually need
      if (i === angka * angka + 1) return;

      yield i % 2 === 0 ? s1 : s2;
    }
  })();

  return times(
    angka,
    () => times(angka, () => generator.next().value).join(" ") // join symbols w/ spaces ...
  ).join("\n"); // ... and lines w/ newline
}

console.log(cetakGambar(5));

Кодовый блок здесь: https://codesandbox.io/s/wispy-http-mfxgo?file= / src / index. js

0 голосов
/ 11 июля 2020

Другой подход с использованием одного л oop

function gen(row,col){
  var i = 0;
  var out="";
  do {
   if(i%col==0) out+="\n"
   out += (i % 2) == 0 ? ' = ' : ' * ';
    i++;
  }
  while (i < row*col);
  return out;
}
 
console.log(gen(5,5));
...