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

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

05.02.2022, 13:02. Показов 902. Ответов 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,707
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,707
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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru