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

ASCII графика

07.04.2022, 16:33. Показов 3930. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вам дан многоугольник, нарисованный с помощью ASCII-графики. Ваша задача — найти его площадь.

Картинка состоит из символов «.», «\» и «/». Каждый символ изображает единичный квадрат картинки. Символ «.» обозначает пустой квадрат, символ «/» — квадрат с отрезком из левого нижнего угла в правый верхний, а символ «\» — квадрат с отрезком из левого верхнего угла в правый нижний.




Входные данные:
Первая строка входных данных содержит два числа h и w — высота и ширина изображения (2≤h,w≤100). Следующие h строк, по w символов в каждой, содержат описание многоугольника, нарисованного с помощью ASCII-графики.

Гарантируется, что картинка содержит ровно один многоугольник, не имеющий самопересечений и самокасаний.




Выходные данные:
Выведите одно целое число — площадь многоугольника (можно показать, что площадь всегда будет целым числом).



Пример:
входные данные
4 4
/\/\
\../
.\.\
..\/
выходные данные
8
Миниатюры
ASCII графика  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.04.2022, 16:33
Ответы с готовыми решениями:

При построении графика точки выстраиваются в прямую линию, хотя должны быть распределены по всей площади графика
Хочу построить график по значения x и y, которые рандомно генерируются и записываются в два файла x_val и y_val соответственно. При...

ASCII-графика
Привет,программисты.Помогите пожалуйста с заданием на фото.Снимок.PNG .Сложный рисунок не нужно.Там делов на 2минуты,разумеется для тех кто...

ASCII графика в консоли VS
Есть интересная, ну или не очень, задачка, нужно вывести в консольном приложении VS, графику из ASCII символов, с помощью прогрессивной ТВ...

12
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
07.04.2022, 17:57
Формула Пика
0
-2 / 6 / 5
Регистрация: 19.01.2022
Сообщений: 201
07.04.2022, 18:09  [ТС]
Ого

S=B+Г/2-1

Для примера:
Внутри 2 узла
на границе 6 углов
S = 2+6/2 - 1 = 2+3 - 1 = 4

но в примере указано что 8

Добавлено через 5 минут
Чето я не очень понимаю сколько в примере внутри и на границе вершин
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
07.04.2022, 18:38
дальше сам думай или "жди у моря погоды".
0
-2 / 6 / 5
Регистрация: 19.01.2022
Сообщений: 201
07.04.2022, 19:28  [ТС]
и как сделать чтобы программа находила количество точек внутри? ну здесь 4 точки внутри и 10 на границе
0
290 / 170 / 92
Регистрация: 21.03.2016
Сообщений: 400
07.04.2022, 20:42
Лучший ответ Сообщение было отмечено shinzin как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
polygon = ['/\/\\',
           '\../',
           '.\.\\',
           '..\/', ]
h = 4
w = 4
 
dot_inside = False
square = 0
for line in polygon:
    for char in line:
        if char in ('\\', '/'):
            square += .5
            flag = not dot_inside
        if char == '.' and dot_inside:
            square += 1
print(int(square))
1
-2 / 6 / 5
Регистрация: 19.01.2022
Сообщений: 201
07.04.2022, 23:29  [ТС]
polygon это какой тип данных?

Добавлено через 4 минуты
неверно тут, когда пример то выводит 5 вместо 8
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
08.04.2022, 00:08
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def get_square(row):
    # ==========================================================================
    def symb_square(symb):
        if symb in '\/':
            return 0.5
        elif symb == '.':
            return 1
        else: 
            return 0
    #==========================================================================
    row = row.strip('.')
    return sum( map( symb_square, row ) )
#==============================================================================
h, w = map( int, input('h, w = ').split() )
res = 0
for i in range(h):
    res += get_square( input('-> ') )
print(res)
0
0 / 0 / 0
Регистрация: 20.02.2022
Сообщений: 22
Записей в блоге: 4
10.04.2022, 14:40
ломается на 7 тесте
0
-2 / 6 / 5
Регистрация: 19.01.2022
Сообщений: 201
10.04.2022, 16:26  [ТС]
Потому что в этом решении не формула пика
Надо узнаьт сколько на границе вершин и сколько внутри
Вот в примере на границе 10, внутри 4
Получаем
4 + (10/2) - 1 = 4 + 5 - 1 = 8
Но чтобы программа посчитала сколько на границе и внутри тут надо уже подумать как это реализовать

((В + (Г / 2) − 1), где В — количество целочисленных точек внутри многоугольника, а Г — количество целочисленных точек на границе многоугольника.)
0
1 / 0 / 1
Регистрация: 10.04.2022
Сообщений: 1
10.04.2022, 17:09
Лучший ответ Сообщение было отмечено shinzin как решение

Решение

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
a=[int(i) for i in input().split()]
counter=0
point=0
z=0
x=0
c=0
f=['\\','/','|']
for i in range(a[0]):
    q=list(input())
    last=q[0]
    for j in range(1,len(q)):
        z=0
        x=0
        c=0
        if q[j]=="." and last in f:
            point+=1
        if q[j]=="" and last=="/":
            point+=1
        if q[j]=="/" and last=="":
            point+=1
    z=q.count('/')
    x=q.count('\\')
    c=q.count('|')
    counter+=z+x+c
print((point-1)+(counter/2)-1)
Подскажите как улучшить, делал через формулу Пика на 4 тесте беда.
0
4 / 3 / 1
Регистрация: 24.03.2021
Сообщений: 71
10.04.2022, 17:55
zykineg, решил? Если да, то скинь скорее пожалуйста.Либо снос стен

Добавлено через 2 минуты
Lama11007, а ты решил? Скинь пожалуйста трже или снос стен.
0
-2 / 6 / 5
Регистрация: 19.01.2022
Сообщений: 201
10.04.2022, 20:28  [ТС]
Задача не закрыта

Добавлено через 1 час 44 минуты
Помогите решить
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.04.2022, 20:28
Помогаю со студенческими работами здесь

Как использовать charsToTrim с ASCII кодом? или как удалить множество символов из строки используя код ASCII
Как использовать charsToTrim с ASCII кодом? или как удалить множество символов из строки используя код ASCII

Автозамена ASCII->Unicode при наборе и Unicode->ASCII при сохранении
Кто-нибудь видел хоть в одном редакторе (желательно "программистский") способность отображать одни символы вместо других? Например,...

Chart - диаграмма: изменить точность делений графика, установить центр графика в (0,0)
Создал диаграмму (все прекрасно считается точки расставляются), но есть проблемыЖ 1. В случае диаграммы - "Спектр амплитуд",...

Рисование графика: обработка новых входящих данных и движение графика на форме
Подскажите каким способом можно вывести график частью главного окна программы, при чем график получает данные *в живую* с устройства по...

Реализация загрузки данных графика, а затем построение этого графика
Добрый день! Есть окно в GUIDE, в нем кнопка Загрузить данные. По нажатию на эту кнопку, она обрабатывает данные и сразу строит график в...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
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 - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru