Оглавление статьи
- Вводная часть
- Паттерн 1 (простой квадрат)
- Паттерн 2 (лесенка вправо)
- Паттерн 3 (лесенка влево)
- Паттерн 4 (перевернутая лесенка вправо)
- Паттерн 5 (перевернутая лесенка влево)
- Паттерн 6 (числовая лесенка вправо)
- Паттерн 7 (числовая лесенка влево)
- Паттерн 8 (перевернутая числовая лесенка вправо)
- Паттерн 9 (перевернутая числовая лесенка влево)
- Паттерн 10 (числовая лесенка вправо 2)
- Паттерн 11 (треугольник)
- Паттерн 12 (перевернутый треугольник)
- Паттерн 13 (почти ромб)
- Паттерн 14 (стрелка вправо)
- Паттерн 15 (бинарная лесенка вправо)
- Паттерн 16 (зеркальные числовые лесенки)
- Паттерн 17 (числовая лесенка вправо 3)
- Паттерн 18 (буквенная лесенка вправо)
- Паттерн 19 (перевернутая буквенная лесенка вправо)
- Паттерн 20 (буквенная лесенка вправо 2)
- Паттерн 21 (буквенный треугольник)
- Паттерн 22 (буквенная лесенка вправо 3)
- Паттерн 23 (внутренний ромб)
- Паттерн 24 (бабочка)
- Паттерн 25 (прозрачный квадрат)
- Паттерн 26 (матрица убывающих чисел)
Вводная часть
У двумерного цикла имеется внешний циклы и внутренний цикл. Внешний цикл отвечает за строки, а внутренний цикл отвечает за столбцы.
с т о л б цы с * * * * * * т * * * * * * р * * * * * * о * * * * * * ки * * * * * *
Этапы оценки шаблона
- Для внешнего цикла посчитать количество строк
- Для внутреннего цикла посчитать количество столбцов и определенным образом соединить их со строками
- Выводить данные во внутреннем цикле
- Соблюдать симметрию при необходимости
JS
// 1.
// внешний цикл обрабатывает строки
// каждая итерация внешнего цикла ждет полного завершения внутреннего цикла
// и только после этого переходит к следующей итерации строки
for (let i = 0; i < n; i++) {
// 2.
// внутренний цикл обрабатывает столбцы один за другим пока число столбцов не будет
// соответствовать условию завершения внутреннего цикла
for (let j = 0; j < n; j++) {
// 3.
// Вывод данных
}
// 4.
// итерация внешнего цикла завершилась
// переводим каретку (курсор) на новую строку и повторяем одну строку за другой
// пока число строк не будет соотвествовать условию завершения внешнего цикла
}
Паттерн первый (простой квадрат)
****** ****** ****** ****** ******
JS
console.log(pattern(5))
function pattern(n) {
let result = '\n'
for (let i = 0; i < n; i++) {
for (let j = 0; j < n; j++) {
result += '*'
}
result += '\n'
}
return result
}
Паттерн второй (лесенка вправо)
* ** *** **** *****
JS
console.log(pattern(5))
function pattern(n) {
let result = '\n'
for (let i = 0; i < n; i++) {
for (let j = 0; j <= i; j++) {
result += '*'
}
result += '\n'
}
return result
}
Паттерн третий (лесенка влево)
* ** *** **** *****
JS
console.log(pattern(5))
function pattern(n) {
let result = '\n'
for (let i = 0; i < n; i++) {
for (let j = 0; j <= n; j++) {
if (j > n - i - 1) {
result += '*'
} else {
result += ' '
}
}
result += '\n'
}
return result
}
Паттерн четвертый (перевернутая лесенка вправо)
***** **** *** ** *
JS
console.log(pattern(5))
function pattern(n) {
let result = '\n'
for (let i = 0; i < n; i++) {
for (let j = 0; j < n - i; j++) {
result += '*'
}
result += '\n'
}
return result
}
Паттерн пять (перевернутая лесенка влево)
***** **** *** ** *
JS
console.log(pattern(5))
function pattern(n) {
let result = '\n'
for (let i = 0; i < n; i++) {
for (let j = 0; j < n; j++) {
if (j >= i) {
result += '*'
} else {
result += ' '
}
}
result += '\n'
}
return result
}
Паттерн шесть (числовая лесенка вправо)
12345 1234 123 12 1
JS
console.log(pattern(5))
function pattern(n) {
let result = '\n'
for (let i = 0; i < n; i++) {
for (let j = 1; j <= n - i; j++) {
result += `${j}`
}
result += '\n'
}
return result
}
Паттерн семь (числовая лесенка влево)
12345 1234 123 12 1
JS
console.log(pattern(5))
function pattern(n) {
let result = '\n'
for (let i = 0; i < n; i++) {
for (let j = 1; j <= n; j++) {
if (j >= n - (n - i - 1)) {
result += `${j - i}`
} else {
result += ` `
}
}
result += '\n'
}
return result
}
Паттерн восемь (перевернутая числовая лесенка вправо)
1 12 123 1234 12345
JS
console.log(pattern(5))
function pattern(n) {
let result = '\n'
for (let i = 0; i < n; i++) {
for (let j = 1; j <= i + 1; j++) {
result += `${j}`
}
result += '\n'
}
return result
}
Паттерн девять (перевернутая числовая лесенка влево)
1 12 123 1234 12345
JS
console.log(pattern(5))
function pattern(n) {
let result = '\n'
for (let i = 0; i < n; i++) {
for (let j = 1; j <= n; j++) {
if (j > n - i - 1) {
result += `${j - (n - i - 1)}`
} else {
result += ' '
}
}
result += '\n'
}
return result
}
Паттерн десять (числовая лесенка вправо 2)
1 22 333 4444 55555
JS
console.log(pattern(5))
function pattern(n) {
let result = '\n'
for (let i = 1; i <= n; i++) {
for (let j = 0; j < i; j++) {
result += `${i}`
}
result += '\n'
}
return result
}
Паттерн одиннадцать (треугольник)
* *** ***** ******* *********
JS
console.log(pattern(5))
function pattern(n) {
let result = '\n'
for (let i = 0; i < n; i++) {
for (let j = 0; j < n * 2 - 1; j++) {
if (j >= n - i - 1 && j <= n + i - 1) {
result += '*'
} else {
result += ' '
}
}
result += '\n'
}
return result
}
Паттерн двенадцать (перевернутый треугольник)
********* ******* ***** *** *
JS
console.log(pattern(5))
function pattern(n) {
let result = '\n'
for (let i = 0; i < n; i++) {
for (let j = 0; j < n * 2 - 1; j++) {
if (j >= i && j < n * 2 - 1 - i) {
result += '*'
} else {
result += ' '
}
}
result += '\n'
}
return result
}
Паттерн тринадцать (почти ромб)
* *** ***** ******* ********* ********* ******* ***** *** *
JS
console.log(pattern(5))
function pattern(n) {
let result = '\n'
for (let i = 0; i < n; i++) {
for (let j = 0; j < n * 2 - 1; j++) {
if (j >= n - i - 1 && j <= n + i - 1) {
result += '*'
} else {
result += ' '
}
}
result += '\n'
}
for (let i = 0; i < n; i++) {
for (let j = 0; j < n * 2 - 1; j++) {
if (j >= i && j < n * 2 - 1 - i) {
result += '*'
} else {
result += ' '
}
}
result += '\n'
}
return result
}
Паттерн четырнадцать (стрелка вправо)
* ** *** **** ***** **** *** ** *
JS
console.log(pattern(5))
function pattern(n) {
let result = ''
for (let i = 0; i < n * 2; i++) {
let col = i
if (i >= n) col = n * 2 - i
for (let j = 0; j < col; j++) {
result += '*'
}
result += '\n'
}
return result
}
Паттерн пятнадцать (бинарная лесенка вправо)
1 0 1 1 0 1 0 1 0 1 1 0 1 0 1
JS
console.log(pattern(5))
function pattern(n) {
let result = '\n'
for (let i = 0; i < n; i++) {
let start = 0
if (i % 2 === 0 ) start = 1
for (let j = 0; j <= i; j++) {
result += `${start}`
start = 1 - start
}
result += '\n'
}
return result
}
Паттерн шестнадцать (зеркальные числовые лесенки)
1 1 12 21 123 321 12344321
JS
console.log(pattern(4))
function pattern(n) {
let result = '\n'
let space = 2 * (n - 1)
for (let i = 1; i <= n; i++) {
for (let j = 1; j < i + 1; j++) {
result += `${j}`
}
for (let j = 0; j < space; j++) {
result += ' '
}
for (let j = i; j > 0; j--) {
result += `${j}`
}
space -= 2
result += '\n'
}
return result
}
Паттерн семнадцать (числовая лесенка вправо 3)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Вариант 1
JS
console.log(pattern(5))
function pattern(n) {
let result = '\n'
let start = 1
for (let i = 1; i <= n; i++) {
for (let j = 0; j < i; j++) {
result += `${j + start} `
}
start += i
result += '\n'
}
return result
}
Вариант 2
JS
console.log(pattern(5))
function pattern(n) {
let result = '\n'
let start = 1
for (let i = 0; i < n; i++) {
for (let j = 0; j <= i; j++) {
result += `${start} `
start += 1
}
result += '\n'
}
return result
}
Паттерн восемнадцать (буквенная лесенка вправо)
A AB ABC ABCD ABCDE
JS
console.log(pattern(5))
function pattern(n) {
let result = '\n'
let start = 'A'.charCodeAt()
for (let i = 0; i < n; i++) {
for (let j = start; j <= start + i; j++) {
result += String.fromCharCode(j)
}
result += '\n'
}
return result
}
Паттерн девятнадцать (перевернутая буквенная лесенка вправо)
ABCDE ABCD ABC AB A
JS
console.log(pattern(5))
function pattern(n) {
let result = '\n'
let start = 'A'.charCodeAt()
for (let i = n; i > 0; i--) {
for (let j = start; j < start + i; j++) {
result += String.fromCharCode(j)
}
result += '\n'
}
return result
}
Паттерн двадцать (буквенная лесенка вправо 2)
A BB CCC DDDD EEEEE
JS
console.log(pattern(5))
function pattern(n) {
let result = '\n'
let start = 'A'.charCodeAt()
for (let i = 0; i < n; i++) {
for (let j = 0; j <= i; j++) {
result += String.fromCharCode(start + i)
}
result += '\n'
}
return result
}
Паттерн двадцать один (буквенный треугольник)
A ABA ABCBA ABCDCBA ABCDEDCBA
JS
console.log(pattern(5))
function pattern(n) {
let result = '\n'
for (let i = 0; i < n; i++) {
for(let j = 0; j < n - i - 1; j++){
result += ' '
}
let ch = 'A'.charCodeAt()
let breakpoint = (2 * i + 1) / 2
for(let j = 1; j <= 2 * i + 1; j++) {
result += String.fromCharCode(ch)
if (j <= breakpoint) ch++
else ch--
}
for (let j = 0; j < n - i - 1; j++) {
result += ' '
}
result += '\n'
}
return result
}
Паттерн двадцать два (буквенная лесенка вправо 3)
E D E C D E B C D E A B C D E
JS
console.log(pattern(5))
function pattern(n) {
let result = '\n'
let ch = 'E'.charCodeAt()
for (let i = 0; i < n; i++) {
for (let j = ch - i; j <= ch; j++) {
result += String.fromCharCode(j) + ' '
}
result += '\n'
}
return result
}
Паттерн двадцать три (внутренний ромб)
********** **** **** *** *** ** ** * * * * ** ** *** *** **** **** **********
JS
console.log(pattern(5))
function pattern(n) {
let result = '\n'
let space = 0
for (let i = 0; i < n; i++) {
for (let j = 1; j <= n - i; j++) {
result += '*'
}
for (let j = 0; j < space; j++) {
result += ' '
}
for (let j = 1; j <= n - i; j++) {
result += '*'
}
result += '\n'
space += 2
}
space = n * 2 - 2
for (let i = 1; i <= n; i++) {
for (let j = 1; j <= i; j++) {
result += '*'
}
for (let j = 0; j < space; j++) {
result += ' '
}
for (let j = 1; j <= i; j++) {
result += '*'
}
result += '\n'
space -= 2
}
return result
}
Паттерн двадцать четыре (бабочка)
* * ** ** *** *** **** **** ********** **** **** *** *** ** ** * *
JS
console.log(pattern(5))
function pattern(n) {
let result = '\n'
let space = n * 2 - 2
for (let i = 1; i <= n * 2 - 1; i++) {
let stars = i
if (i > n) stars = n * 2 - i
for (let j = 1; j <= stars; j++) {
result += '*'
}
for (let j = 1; j <= space; j++) {
result += ' '
}
for (let j = 1; j <= stars; j++) {
result += '*'
}
if (i < n) space -= 2
else space += 2
result += '\n'
}
return result
}
Паттерн двадцать пять (прозрачный квадрат)
****** * * * * * * * * ******
JS
console.log(pattern(5))
function pattern(n) {
let result = '\n'
for(let i = 0; i < n; i++) {
for(let j = 0; j < n; j++) {
if(i === 0 || j === 0 || i === n - 1 || j === n - 1) {
result += "*"
} else {
result += " "
}
}
result += '\n'
}
return result
}
Паттерн двадцать шесть (матрица убывающих чисел)
5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 5 5 4 3 3 3 3 3 4 5 5 4 3 2 2 2 3 4 5 5 4 3 2 1 2 3 4 5 5 4 3 2 2 2 3 4 5 5 4 3 3 3 3 3 4 5 5 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5
JS
console.log(pattern(5))
function pattern(n) {
let result = '\n'
for(let i = 0; i < n * 2 - 1; i++) {
for(let j = 0; j < n * 2 - 1; j++) {
let top = i
let left = j
let bottom = (n * 2 - 2) - i
let right = (n * 2 - 2) - j
result += (n - Math.min(Math.min(top, bottom), Math.min(left, right))) + ' '
}
result += '\n'
}
return result
}