Задача. Разноцветные диагонали - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Помогите пжлст Миша увлекается компьютерной графикой. Он хочет нарисовать на экране квадрат размером n * n пикселей разными цветами. Монитор Миши поддерживает 26 цветов. Для обозначения цветов будем использовать строчные буквы латинского алфавита от «a» до «z». Миша хочет нарисовать каждый пиксель некоторым цветом, который зависит от расстояния от пикселя до ближайшей диагонали. А именно, клетки на диагоналях квадрата он хочет нарисовать цветом «a», соседние с ними клетки — цветом «b», соседние с ними, но еще не покрашенные — цветом «c», и так далее. После цвета «z» Миша снова переходит к цвету «a». По заданному n выведите картинку, которая получится у Миши. Формат входных данных Входные данные содержат одно целое число n (1 < n < 100). Формат выходных данных Выведите n строк по n символов — картинку, которая получится у Миши. Пример: Для n=5
a b c b a
b a b a b
c b a b c
b a b a b
a b c b a

Решение задачи: «Задача. Разноцветные диагонали»

textual
Листинг программы
begin
  var s := ReverseString(Range('a','z').JoinIntoString)+
    ReverseString(Range('b','z').JoinIntoString)+
    Range('a','z').JoinIntoString+Range('a','z').JoinIntoString;
  var(n,left,right):=(ReadInteger('n ='),25+26,26+26);
  var(lleft,lright):=(n div 2+ord(odd(n)),n div 2);
  for var row := 1 to n div 2 do
    begin
      WriteLn(s.Substring(left,lleft) + s.Substring(right-lright,lright));
      left-=1;right+=1;
    end;
  if not odd(n) then begin left+=1;right-=1; end;
  for var row := n div 2+1 to n do
    begin
      WriteLn(s.Substring(left,lleft) + s.Substring(right-lright,lright));
      left+=1;right-=1;
    end;
end.

Объяснение кода листинга программы

В этом коде решаются задачи по разноцветным диагоналям. Вот список действий, которые происходят в коде:

  1. Сначала определяется исходная строка s, которая представляет собой объединение трёх строк, каждая из которых является обратным порядку строкой, составленной из букв, начиная с b, c, d и так далее.
  2. Затем вводятся значения для n, left и right.
  3. В следующей строке кода вычисляются значения lleft и lright.
  4. Используя цикл for, выводятся строки в формате s.Substring(left,lleft) + s.Substring(right-lright,lright) для каждой строки, начиная с первой до последней строки (поскольку n — четное число).
  5. Если n — нечетное число, то после вывода последней строки с помощью if-условия изменяются значения left и right, чтобы вывести дополнительную строку.
  6. Затем с помощью цикла for выводятся строки в формате s.Substring(left,lleft) + s.Substring(right-lright,lright) для каждой строки, начиная с последней до предпоследней строки (поскольку n — четное число).
  7. В конце выводится строка, состоящая из двух символов, если n — четное число, или из одного символа, если n — нечетное число.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.8 из 5
Похожие ответы