Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Штудирую книгу ильи) усложнил себе задание (https://javascript.ru/forum/events/52263-shtudiruyu-knigu-ili-uslozhnil-sebe-zadanie.html)

kaflan 14.12.2014 16:12

такнашел еще интересное задание по циклам).
Цитата:

Шахматная доска

Напишите программу, создающую строку, содержащую решётку 8х8, в которой линии разделяются символами новой строки. На каждой позиции либо пробел, либо #. В результате должна получиться шахматная доска.

# # # #
 # # # #
# # # #
 # # # #
# # # #
 # # # #
# # # #
 # # # #


рони 14.12.2014 16:35

kaflan,
на форуме есть ответы :victory:
Цитата:

Сообщение от kaflan
Шахматная доска

если поискать ))) но интереснее же самому :victory:

kaflan 14.12.2014 18:15

var spc = " ";
var num = "#";
var lines = +prompt("число линий", 8);
var row = +prompt("число символов в строке включая ' ' ",8);
var result = "";
for(var i = 0; i < lines; i++ ) {
    for(var n = 0; n < row; n++) {
        if (row%2==0) { 
            if (lines%2 == 0) {
                result += num;
            } else {
                result += spc;
                 }
            
        } else{ if(line % 2 == 0) {
                    result+=spc;
                }else {
                    result+=num;
                }
          }
    }
    
console.log(result);
}

как то так. вот) склепал ) еще не тестил но кажеться я на правильном пути постигания матана в джава скрипте)

http://jsfiddle.net/Kaflan/qd0gLenn/8/ ох матан идет тугенько.... путаюсь пока с двумя циклами которые должны давать , результат результата пока нет, того что нужен нет доски а есть не понятная штука. годный инструмент для создания рандомной карты...

Erolast 15.12.2014 11:37

Жутко усложняешь. Весь перебор можно уместить в пять строк.
И поработай над форматированием, оно у тебя жутко хромает, читать невозможно)

kaflan 15.12.2014 12:51

я учусь. кароче не значит, читабельне.
 
Цитата:

Сообщение от Erolast (Сообщение 346572)
Жутко усложняешь. Весь перебор можно уместить в пять строк.
И поработай над форматированием, оно у тебя жутко хромает, читать невозможно)

ПОработать над форматированием?.... ок. просто не успел нажать tidy up. и все норм читаеться... 5 строкэто здорово, но это будет наверное малопонятная для начинающего формула. Пример очень хорош.
http://jsfiddle.net/Kaflan/qd0gLenn/11/ вот подскажи как укоротить чтобы даже новичек понял код

Erolast 15.12.2014 13:20

Цитата:

просто не успел нажать tidy up.
Надо уметь нормально форматировать без всяких tidy up, самому ж удобней будет.
Цитата:

и все норм читаеться...
А могло бы намного лучше.

Цитата:

5 строкэто здорово, но это будет наверное малопонятная для начинающего формула.
Да нет, все элементарно:
var result = "\n";
for (var row = 1; row <= 8; row++) {
  for (var cell = 1; cell <= 8; cell++) {
    result += (row % 2 == cell % 2) ? "#" : " "; //Можно еще побитово - (row & 1 == cell & 1)
  }
  result += "\n";
}
console.log(result);

Вообще, есть золотое правило - чем код короче, тем он лучше.

melky 15.12.2014 15:50

Цитата:

Сообщение от Erolast
Вообще, есть золотое правило - чем код короче, тем он лучше.

ты бы пояснил, что имеешь в виду.

вот золотые правила: http://habrahabr.ru/post/144611/. Но там нет SOLID, так что принципов может быть немного больше :)

Erolast 15.12.2014 16:24

Имею в виду, что чем короче код, тем проще его писать, читать, вспомнить и расширять. Естественно, я не о количестве символов, а о количестве логики.

kaflan 15.12.2014 17:03

Цитата:

Сообщение от Erolast
Да нет, все элементарно:

спасибо я покадо такого немогу додуматься.... а поводу краткости... тут палка двух концов, если функция не рекурсивная то такой код хорошо, но если рекурсивная функция глубокая то это может немного поламать читабельность

Erolast 15.12.2014 17:12

Цитата:

а поводу краткости... тут палка двух концов, если функция не рекурсивная то такой код хорошо, но если рекурсивная функция глубокая то это может немного поламать читабельность
Чо? При чем тут рекурсия?


Часовой пояс GMT +3, время: 21:54.