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

Прямоугольник m×n составлен из единичных квадратов

27.08.2023, 21:52. Показов 6756. Ответов 8

Студворк — интернет-сервис помощи студентам
Прямоугольник m×n составлен из единичных квадратов. Некоторые из этих квадратов пусты, на остальных проведён один отрезок: любая из двух диагоналей или любой из двух отрезков, соединяющих середины противоположных сторон.

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

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

Формат входных данных
Первая строка входного файла содержит два целых числа n и m (1 ⩽ n, m ⩽ 100) — высота и ширина прямоугольника соответственно.

Следующие n строк содержат по m символов «/», «\», «-», «|» или «.», задающих прямоугольник. Первые четыре символа обозначают отрезок под соответствующим углом, а последний — пустую клетку.

Формат результата
Выходной файл должен содержать одно целое число — количество сегментов.

Примеры
Входные данные
4 5
..|/.
..|..
./|..
-----
Результат работы
4
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.08.2023, 21:52
Ответы с готовыми решениями:

Задача Robot. Найти количество единичных квадратов, на которых робот побывал более одного раза
Задача Robot. Робот находится на плоскости, которая разбита на единичные квадраты. Робот может двигаться в четырех направлениях на...

Определить сколько квадратов входит в прямоугольник
Дан прямоугольник размером n×m. Напишите программу, вычисляющую, сколько квадратов со стороной m от него получится отрезать. На вход...

Определить, на сколько квадратов будет разрезан прямоугольник
Ограничение времени 1 секунда Ограничение памяти 64Mb Ввод стандартный ввод или input.txt Вывод стандартный вывод или output.txt ...

8
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
27.08.2023, 23:32
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
def is_correct_coord(coord):
    return 0 <= coord[0] < n and 0 <= coord[1] < m
 
def is_begin_of_segment(i, j):
    L = '\\'
    R = '/'
    H = '-'
    V = '|'
 
    prev_coord_of_symb =    {
                                L:(i-1,j-1),
                                R:(i-1,j+1),
                                H:(i,j-1),
                                V:(i-1,j)
                            }
    symb = arr[i][j]
    if not symb in prev_coord_of_symb:
        return False
    prev_coord = prev_coord_of_symb[symb]
    return not (is_correct_coord(prev_coord) and arr[prev_coord[0]][prev_coord[1]] == symb)
 
n, m = [int(x) for x in input('n,m->').split()]
arr = []
for i in range(n):
    arr.append(input(f'строка {i+1}->'))
 
res = 0
for i in range(n):
    for j in range(m):
        res += is_begin_of_segment(i,j)
print(res)
0
Заблокирован
27.08.2023, 23:45
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
n, m = map(int, input().split())
a = [input() for i in range(n)]
ans = 0
for i in range(n):
    for j in range(m):
        if a[i][j] == '.':
            continue
        if j + 1 < m and a[i][j] == '-' and a[i][j + 1] == '-':
            continue
        if i + 1 < n and a[i][j] == '|' and a[i + 1][j] == '|':
            continue
        ans += 1
print(ans)
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
27.08.2023, 23:58
nikulin_artyom1, а где же у вас диагональные символы?
0
Заблокирован
28.08.2023, 00:02
idealist, у меня выдаёт его результат. попробовал другим способом
0
4 / 4 / 2
Регистрация: 27.08.2023
Сообщений: 106
28.08.2023, 10:14  [ТС]
Не проходят остальные тесты
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
28.08.2023, 11:38
Лучший ответ Сообщение было отмечено Cookien как решение

Решение

Цитата Сообщение от Cookien Посмотреть сообщение
Не проходят остальные тесты
Если моя программа не проходит, то так попробуйте:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
def is_correct_coord(coord):
    return 0 <= coord[0] < n and 0 <= coord[1] < m
 
def is_begin_of_segment(i, j):
    prev_coord_of_symb =    {
                                chr(92): (i - 1, j - 1),
                                '/': (i - 1, j + 1),
                                '-': (i, j - 1),
                                '|': (i - 1, j)
                            }
    symb = arr[i][j]
    if not symb in prev_coord_of_symb:
        return False
    prev_coord = prev_coord_of_symb[symb]
    return not (is_correct_coord(prev_coord) and arr[prev_coord[0]][prev_coord[1]] == symb)
 
n, m = [int(x) for x in input().split()]
arr = []
for i in range(n):
    arr.append(input())
 
res = 0
for i in range(n):
    for j in range(m):
        res += is_begin_of_segment(i, j)
print(res)
1
4 / 4 / 2
Регистрация: 27.08.2023
Сообщений: 106
29.08.2023, 10:51  [ТС]
Спасибо!

Добавлено через 1 минуту
А могли бы еще решение объяснить? Интересно просто
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
29.08.2023, 11:59
Цитата Сообщение от Cookien Посмотреть сообщение
А могли бы еще решение объяснить?
Ну, если отрезки образуют сегменты, то можно считать концы этих сегментов, договорившись, который из двух выбирать. Я подсчитываю левые верхние концы всех сегментов.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.08.2023, 11:59
Помогаю со студенческими работами здесь

Дан прямоугольник размером 543х130 мм. Сколько квадратов
Дан прямоугольник размером 543х130 мм. Сколько квадратов со стороной 130 мм можно отрезать от него?Какую функцию взять?И какая формула...

Определить, на сколько квадратов можно разрезать прямоугольник
Дан прямоугольник, длины которого заданы натуральными числами. На сколько квадратов, стороны которых выражены натуральными числами, можно...

На сколько квадратов можно разрезать данный прямоугольник
Помогите, пожалуйста, решить! Очень надо, но не знаю как их решать! 4. Стороны прямоугольника заданы числами N и M. Составить...

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

На сколько квадратов можно разрезать данный прямоугольник
Задача. Стороны прямоугольника заданы натуральными числами M и N. Составьте программу, которая будет находить, на сколько квадратов,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru