какое разрешение понадобится чтобы отобразить а шахматную доску

Шахматные задачки. Шахматная доска

Продалжаю решать задачки и знакомиться с языком Python на Питонтьютор. Попалась задачка которая мне очень понравилась и заставила попотеть. Условие:

И тут меня понесло куда-то не туда. Код конечно заработал, но он оказался так далек от совершенства. После решения мне стал доступен код разработчиков задачи, глянув на него я моментально понял принцип его работы и ведь я мог догадаться. Я должен был догадаться! Все было так просто и изящно. Но. У меня получилось как получилось. Обо всем по порядку.

Я рассуждал так. На шахматной доске клетки располагаются в следующей последовательности, если начинается с белой, следом идет черная, следом белая и так далее. Я принял за точку отсчета белую клетку с координатой (1;1).

Всё дальнейшее рассуждение некорректное, но оставлено как есть чтобы передать ход мыcлей.

Следующая белая имела бы координату (1;3), затем (1;5) и последняя в ряду (1;7). Белые второго ряда имели бы координаты (2;2), (2;4), (2;6), (2;8). Следующий третий ряд повторял бы первый ряд и отсюда уже можно было сделать вывод, что белые в нечетных рядах имеют нечетные координаты а в четных четные и наоборот, черные в нечетных рядах имели бы четные координаты а в четных нечетные. Это уже само по себе подсказывает решение, но я в тот момент этого не понял и решил действовать так, буду сравнивать координаты первой и второй клетки шаг за шагом. Чтобы определять нечетные и четные клетки решил воспользоваться остатком от деления на 2. Четные числа имели бы в остатке 0, так как любое четное число делится на два без остатка, отсюда вытекает обратное, что если число делиться на 2 без остатка то оно четное. А нечетные 1. Но и это не пришло мне в голову, логика отдыхала. Поэтому нечетные клетки я обозначил как остаток отделения не равный 0. Координаты первой клетки обозначались переменными (a;b), а второй (c;d). Условие было таким.

Данный код прошел все тесты с различными входными данными и успешно выполнил задание.

Что c ним (с кодом) не так? Да наверное все. Это пример того, как не нужно писать код, именно такое программисты называют говнокод.

Как правильно нужно было решить задачу?

Для этого надо было включить логику и хорошенько подумать. Во первых обозначить координаты правильно (x1;y1), а для второй клетки (x2;y2). Если бы я это сделал сразу то тогда возможно понял бы, что не правильно передаю координаты клетки. Для первого ряда координаты белых будут не (1;1), (1;3) и т.д., а (1;1), (3;1)! и т.д.. Для черных (2;1), (4:1) и т.д.. Для второго ряда для белых (2;2), (4;2), а для черных (1;2), (3;2) и т.д.. Всмотримся в координаты повнимательнее. Сумма координатов белых всегда в любом ряду четная, а для черных нечетная! Т.е. можно наугад взять любой столбец по x, например 7 и раз он нечетный значит в сумме с нечетной строкой по y он даст четное число, т.е. белый цвет. Проверим, (7;1) — белый, (7;5) — белый. А в сумме с четным числом даст нечетное, т.е. черный цвет. (7;2) — черный как и (7;6). Что это нам дает? А это нам дает отличное решение.

Можно поступить еще проще, просто сравнить остатки от деления на 2 сумм координатов первой и второй клетки, если они равны, то соответственно клетки тоже одинаковые, ведь если обе клетки с четными координатами то остатки будут нулями, а если нечетные то единицей:

Если и дальше рассуждать логически можно прийти к следующему. Сумма координатов каждой из клеток может быть либо четной либо нечетной. А сумма двух четных или двух нечетных чисел всегда будет четное число. Отсюда мы можем написать следующее условие. Если сумма координатов обеих клеток четное число то значит и клетки одинаковые.

Это и есть код разработчиков задачи. Цель моего обучения программированию прийти в итоге к вот таким изящным решениям задач и писать не говнокод, а писать качественный код, лаконичный код, чтобы программки были как можно меньше, менее требовательны к ресурсам при том же функционале и за счет этого были быстрые и качественные. Задачки с шахматами продолжатся, теперь уже с фигурами, про них напишу в следующей заметки, так как эта и так получилась очень объемной.

Опубликованно April 13th, 2018 by Aziz Madazimov

Источник

Нестандартное домашнее задание по информатике для 6–11 классов по теме «Мини-проекты «Шахматная доска»

Нестандартное домашнее задание по информатике для
6 – 11 классов: мини-проекты «Шахматная доска»

В учебнике информатики для 5 класса (автор Л.Л.Босова) в практической работе «Планируем работу в графическом редакторе» есть задание:

какое разрешение понадобится чтобы отобразить а шахматную доску

Объяснение учителя: алгоритм выполнения задания представлен схематически – изображение получается за счёт копирования сначала одного, затем двух, затем четырёх и т.д. квадратов и поочерёдной их заливки. Подписи с помощью инструмента Текст добавляются в конце.

какое разрешение понадобится чтобы отобразить а шахматную доску

Эту работу пятиклассники выполняют на уроке. Выше представлен один из результатов выполненного задания. Имеется заголовок, игровое поле, а строки и столбцы не подписаны – не хватило времени. Но некоторые школьники выполняют это задание дома и сдают его на проверку на следующем уроке.

Вот так и родилась идея домашнего задания в форме мини-проекта «Создание изображения шахматной доски».

Когда выдаётся домашнее задание

Завершающий этап работы с таблицами.

После изучения возможностей основных инструментов Inkscape

После изучения темы «Ввод и форматирование данных в Excel»

После изучения темы «Рисование в Gimp»

После изучения всех тем «Программирование в среде ПаскальABC», в том числе и «Модуль GraphABC»

Школьный редактор Web-страниц HEFS

После изучения темы «HTML. Создание и форматирование таблиц»

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

1. Создание изображения шахматной доски в среде текстового процессора

Тема: «Табличные информационные модели».

Цель: углубление знаний по работе с таблицами, развитие алгоритмического и логического мышления.

Степень сложности: средняя.

Тип задания: индивидуальное (можно привлекать родителей).

Рекомендуемое время на выполнение: 20-30 мин.

Способ проверки: просмотр в классе через проектор, оценка выставляется коллегиально (учитель + мнение обучающихся).

какое разрешение понадобится чтобы отобразить а шахматную доску

2. Создание изображения шахматной доски в среде редактора векторной графики Inkscape

Тема: «Обработка графической информации».

Цель: расширений знаний и умений по созданию векторных изображений, развитие алгоритмического и логического мышления.

Степень сложности: средняя.

Тип задания: индивидуальное (можно привлекать родителей).

Рекомендуемое время на выполнение: 20-30 мин.

Способ проверки: просмотр в классе через проектор, оценка выставляется коллегиально (учитель + мнение обучающихся).

какое разрешение понадобится чтобы отобразить а шахматную доску

3. Создание изображения шахматной доски в среде табличного процессора

Тема: «Знакомство с электронными таблицами Excel».

Цель: закрепление умений по форматированию ячеек электронной таблицы, развитие алгоритмического и логического мышления.

Степень сложности: средняя.

Тип задания: индивидуальное.

Рекомендуемое время на выполнение: 20 мин.

Способ проверки: просмотр в классе через проектор, оценка выставляется коллегиально (учитель + мнение обучающихся).

какое разрешение понадобится чтобы отобразить а шахматную доску

4. Создание изображения шахматной доски в среде редактора растровой графики Gimp

Тема: «Обработка графической информации».

Цель: расширений знаний и умений по созданию растровых изображений, развитие алгоритмического и логического мышления.

Степень сложности: средняя.

Тип задания: индивидуальное.

Рекомендуемое время на выполнение: 30 мин.

Способ проверки: просмотр в классе через проектор, оценка выставляется коллегиально (учитель + мнение обучающихся).

какое разрешение понадобится чтобы отобразить а шахматную доску

5. Создание изображения шахматной доски в среде системы программирования ПаскальABC

Тема: «Программирование в среде ПаскальABC».

Цель: расширений знаний и умений по работе с модулем GraphABC, развитие алгоритмического и логического мышления.

Степень сложности: средняя.

Тип задания: индивидуальное.

Рекомендуемое время на выполнение: 30-40 мин.

Способ проверки: просмотр в классе через проектор, оценка выставляется коллегиально (учитель + мнение обучающихся).

какое разрешение понадобится чтобы отобразить а шахматную доску

Источник

ИмяДатаСообщениеЧитать обсуждение полностью:
Задача про шахматную доску
Frastber02.11.2021 20:47https://www.cyberforum.ru/post15818489.html

какое разрешение понадобится чтобы отобразить а шахматную доскуЗадача про шахматную доску
Добрый день. Задача №62 с сайта https://********. Известно, что шахматная доска имеет размерность.

Нарисовать шахматную доску
Задание из книги Страуструпа «Принципы и практика использования С++»: «Нарисуйте доску для шахмат.

создать шахматную доску
прошу помощи 1 Поле шахматної дошки визначаться парою натуральних чисел,кожне з яких не перевищує.

Нарисовать шахматную доску 8×8
Вообщем нужно создать программу которая выводит нарисованную шахматную доску 8×8.Если есть код с.

Обойти шахматную доску ходом коня
Обязательные условия: 1. Рекурсивный алгоритм. 2. Размер доски вводит пользователь. 3.

Вывод на экран консоли шахматную доску
Дело в том, что алгоритм у меня есть. Но я совсем не могу разобраться в скрипте. for (int i = 1;.

Вывести шахматную доску заданного размера
Ломаю голову над этой задачей. Неодходимо вывести шахматную доску с помощью цыклов. Размер.

какое разрешение понадобится чтобы отобразить а шахматную доскуКак в командной строке нарисовать шахматную доску?
Нужно, чтобы в командной строке было некое подобие клеток, не могу разобраться как это сделать.

Источник

Задача про шахматную доску

Помогите, пожалуйста, решить задачу на С++. Решить нужно под k) конь и ладья.

Комментарий модератора
какое разрешение понадобится чтобы отобразить а шахматную доскуПравило 5.18: Запрещено размещать задания и решения в виде картинок (кроме формул и блок-схем) и других файлов с их текстом.

Перепечатайте/скопируйте текст следующим постом

какое разрешение понадобится чтобы отобразить а шахматную доскуЗадача про шахматную доску
Добрый день. Задача №62 с сайта https://********. Известно, что шахматная доска имеет размерность.

Нарисовать шахматную доску
Задание из книги Страуструпа «Принципы и практика использования С++»: «Нарисуйте доску для шахмат.

создать шахматную доску
прошу помощи 1 Поле шахматної дошки визначаться парою натуральних чисел,кожне з яких не перевищує.

Нарисовать шахматную доску 8×8
Вообщем нужно создать программу которая выводит нарисованную шахматную доску 8×8.Если есть код с.

Обойти шахматную доску ходом коня
Обязательные условия: 1. Рекурсивный алгоритм. 2. Размер доски вводит пользователь. 3.

Вывод на экран консоли шахматную доску
Дело в том, что алгоритм у меня есть. Но я совсем не могу разобраться в скрипте. for (int i = 1;.

Вывести шахматную доску заданного размера
Ломаю голову над этой задачей. Неодходимо вывести шахматную доску с помощью цыклов. Размер.

какое разрешение понадобится чтобы отобразить а шахматную доскуКак в командной строке нарисовать шахматную доску?
Нужно, чтобы в командной строке было некое подобие клеток, не могу разобраться как это сделать.

Источник

Задача про шахматную доску

Помогите, пожалуйста, решить задачу на С++. Решить нужно под k) конь и ладья.

Комментарий модератора
какое разрешение понадобится чтобы отобразить а шахматную доскуПравило 5.18: Запрещено размещать задания и решения в виде картинок (кроме формул и блок-схем) и других файлов с их текстом.

Перепечатайте/скопируйте текст следующим постом

какое разрешение понадобится чтобы отобразить а шахматную доскуЗадача про шахматную доску
Добрый день. Задача №62 с сайта https://********. Известно, что шахматная доска имеет размерность.

Нарисовать шахматную доску
Задание из книги Страуструпа «Принципы и практика использования С++»: «Нарисуйте доску для шахмат.

создать шахматную доску
прошу помощи 1 Поле шахматної дошки визначаться парою натуральних чисел,кожне з яких не перевищує.

Нарисовать шахматную доску 8×8
Вообщем нужно создать программу которая выводит нарисованную шахматную доску 8×8.Если есть код с.

Обойти шахматную доску ходом коня
Обязательные условия: 1. Рекурсивный алгоритм. 2. Размер доски вводит пользователь. 3.

Вывод на экран консоли шахматную доску
Дело в том, что алгоритм у меня есть. Но я совсем не могу разобраться в скрипте. for (int i = 1;.

Вывести шахматную доску заданного размера
Ломаю голову над этой задачей. Неодходимо вывести шахматную доску с помощью цыклов. Размер.

какое разрешение понадобится чтобы отобразить а шахматную доскуКак в командной строке нарисовать шахматную доску?
Нужно, чтобы в командной строке было некое подобие клеток, не могу разобраться как это сделать.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *