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

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

05.02.2022, 13:02. Показов 972. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru