Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 10.11.2021
Сообщений: 16

Ксоне на день рождения подарили бесконечную шахматную доску, в которой каждая ячейка выкрашена в черный или белый цвет

05.02.2022, 13:02. Показов 925. Ответов 4

Студворк — интернет-сервис помощи студентам
Помогите с задачей на пайтоне. Буду очень благодарен!

Ксоне на день рождения подарили бесконечную шахматную доску, в которой каждая ячейка выкрашена в черный или белый цвет. Она хочет вырезать из нее связную фигуру, но такую, чтобы в ней было ровно b черных ячеек ровно и w белых. Фигура не обязательно должна быть полностью заполнена, но должна быть связной.

"example1.png"

Пример подходящей фигуры. Неважно, что средняя клетка незаполнена. Главное, чтобы фигура была связной. У этой фигуры четыре белых клетки, а также четыре черных клетки.

"example2.png"

Пример не подходящей фигуры, потому что она не связна.
Входные данные:
Первая строка содержит два целых числа w и b (0≤w,b≤100) — количество белых и черных ячеек соответственно.
Исходные данные:
Если решение не существует, выведите единственное число "-1".
Иначе, в первой строке выведите два целых числа n, m (1≤n,m≤250) — размеры прямоугольника, в который входит искомая фигура. Можно показать, что если решение существует, существует решение, которое вкладывается в эти ограничения.
Далее выведите n строк по m символов каждой – описание фигуры. Если ячейка прямоугольника пуста выведите «.», если эта ячейка белая – «W», если черная – «B».
Фигура, полученная в виде этого прямоугольника, должна быть связной, содержать ровно w белых ячеек и ровно b черных и быть зарисованной в шахматном порядке (соседними с белой ячейкой должны быть только пустые и черные, а с черной — пустые и белые).
Входные данные №1:
2 2
Выходные данные №1:
3 5
.....
BWBW.
.....
P.S. точки должны быть равны кол-ву букв. и быть над ними и под ними.
Входные данные №2:
3 4
Выходные данные №2:
3 7
.......
BWBWBWB
.......
Входные данные №3:
3 100
Выходные данные №3:
-1
Миниатюры
Ксоне на день рождения подарили бесконечную шахматную доску, в которой каждая ячейка выкрашена в черный или белый цвет   Ксоне на день рождения подарили бесконечную шахматную доску, в которой каждая ячейка выкрашена в черный или белый цвет  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.02.2022, 13:02
Ответы с готовыми решениями:

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

Вывести данные в виде таблицы, каждая ячейка которой имеет свои значение и цвет
Здравствуйте. Подскажите, есть ли адекватный способ с помощью DataGrid или GridView вывести разноцветную таблицу? Есть список...

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

4
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
05.02.2022, 13:41
Python
1
2
3
4
5
6
w, b = ( int(x) for x in input( 'w, b = ' ).split() )
if abs(w-b) > 1:
    print(-1)
else:
    print(1, w+b)
    print('B'*(b>w) + 'WB'*min(w, b) + 'W'*(w>b))
0
0 / 0 / 0
Регистрация: 10.11.2021
Сообщений: 16
05.02.2022, 13:51  [ТС]
idealist, неправильное решение(
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
05.02.2022, 18:38
Да, это немножко не то.

Добавлено через 2 часа 41 минуту
Вот так более правильно:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
w, b = ( int(x) for x in input( 'w, b = ' ).split() )
ma = max(w, b)
dif = abs(w-b)
if dif > 3 or dif > 1 and min(w,b) == 0:
    print(-1)
else:
    if ma == 0:
        print(0,0)
    else:
        A = ['W','B'][b>w]
        B = ['W','B'][A == 'W']
        row = [B,A]*(ma+1)
        row = row[:ma*2 + (dif==3)]
        m = 1 + (dif > 1) * 2
        row = row + ['.']*( (m - len(row)%m)%m )
        n = len(row)//m
        ind = [{}, {0},{0,2},{0,2,6,8}]
        for i in ind[dif]:
            row[i] = '.'
        print(n, m)
        for i in range(n):
            print( ''.join( row[ m*i: m*(i+1) ] ) )
2
0 / 0 / 0
Регистрация: 05.02.2022
Сообщений: 1
05.02.2022, 20:03
Не очень честно просить решения задач, параллельно участвуя в олимпиаде от Киевской области

Добавлено через 4 минуты
тут есть объяснения для решения, только на украинском, и первый тур олимпиады закончился в 15.06 сегодня

https://oi.in.ua/wp-content/up... orials.pdf
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.02.2022, 20:03
Помогаю со студенческими работами здесь

Недавно Пете на день рождения подарили книгу «Yandex Internships: Step To Success»
Недавно Пете на день рождения подарили книгу «Yandex Internships: Step To Success». Пете она так понравилась, что он решил написать в...

Нарисовать на экране шахматную доску и периодически через 2-5 секунд инвертировать цвет
.model tiny .386 .code org 100h start: mov ax,3 int 10h mov...

Программа, в которой конь заполнит ходами шахматную доску, не наступив на клеточку дважды
Всем доброго времени суток!!! Мне нужно написать программу, в которой конь заполнит ходами шахматную доску(n-го размера), не наступив на...

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

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru