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

Книге — место

01.05.2020, 15:31. Показов 828. Ответов 1

Студворк — интернет-сервис помощи студентам
В одном домике на улице Колокольчиков жил коротыш по имени Знайка. Его так называли потому, что он очень много знал, а знал он много потому, что много читал. Книги у него в комнате лежали повсюду: и на столе, и под столом, и на кровати, и под кроватью. Их было так много, что для того, чтобы осталось место для самого Знайки, пришлось вызвать уборочную машину, перекладывающую книги на полки. Ей нужно показать обложку книги, а куда ее убрать машина определит автоматически. Алгоритм перемещения машины следующий: вычисляется среднее арифметическое значение вертикальных координат заданного цвета. Затем номер полки вычисляется по формуле: Y ∗ 25∕height, где Y — вычисленное среднее, а height — высота изображения.
Напишите функцию find_shelf(image, color), принимающую изображение обложки и опорный цвет, а возвращающую номер полки, вычисленный по формуле.

Пример 1
Ввод Вывод
test.png
255 0 0
4
Пример 2
Ввод Вывод
test.png
255 255 255
20
Примечания
Для простоты вычеслений используйте только целочисленное деление.
Файл test.png из примеров:

Название: image_2021-05-09_163628.png
Просмотров: 17

Размер: 960 байт
Для проверки примеров из условия можно написать примерно такой код:

Python
1
2
3
image = Image.open(input())  
color = tuple(map(int, input().split()))  
print(find_shelf(image, color))
Не забудьте удалить или закомментировать его перед отправкой!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.05.2020, 15:31
Ответы с готовыми решениями:

Книге - место
В одном домике на улице Колокольчиков жил коротыш по имени Знайка. Его так называли потому, что он очень много знал, а знал он много...

Нужно чтобы столбик в одной книге преобразовать в строку в другой книге
Здравствуйте. Нет ли какого изящного решения, чтобы столбик в одной книге преобразовать в строку в другой книге. Или надо переносить по...

Как организовать поиск в другой книге или в этой же книге, поиск по слову на определенных листах
Всем привет!) Как организовать поиск в другой книге или в этой же книге, поиск по слову на определенных листах? Например слово...

1
0 / 0 / 0
Регистрация: 13.03.2021
Сообщений: 35
08.05.2021, 14:05
Много времени прошло с момента этого поста. Сегодня сам решал эту задачу. Следовательно, необходимости в создании темы не было. Ступор вызвала фраза: "вычисляется среднее арифметическое значение вертикальных координат заданного цвета". Как только выяснил, что имелось в виду, то задачу решил. Правда на выяснение ушло много времени.

Не по теме:

Довольно странные формулировки. Их нужно переводить с русского на русский :) Ещё Л. ДаВинчи говорил: "Корректно сформулированная задача решена уже наполовину". Но оставим лирику...



Суть решения сводится к следующему. Начинаем сканировать предлагаемое изображение "test.png" (ссылка на него выше) построчно. Если в одной из строк встречается цвет, заданный вторым аргументом функции (т.е. color), то, с этого момента на координате X "тормозимся" и начинаем, при неизменном значении X, сканировать изображение, но уже по Y, до тех пор, пока совпадения заданного цвета (color) и текущего цвета пикселя картинки "test.png" не прекратятся. При это считаем число совпадений и суммируем все значения координат по Y. Код получается следующий:

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
from PIL import Image
 
 
def find_shelf(image, color):
    pixels = image.load()
    x, y = image.size
    
    y_ver = 0  # текущее значение вертикальной координаты для заданного цвета color
    counter = 0  # счётчик совпадений
 
    for i in range(y):
        for j in range(x):
            cur = pixels[j, i]
            if cur[0] == color[0] and cur[1] == color[1] and cur[2] == color[2]:
                y_ver += i  # складываем все координаты по Y
                counter += 1  # считаем число совпадений по Y
                break
 
    average = y_ver // counter  # вычисляем то самое "среднее арифметическое значение вертикальных координат"
 
    res = average * 25 // y  # считаем по предлагаемой формуле и
    return res  # возвращаем значение номера полки
 
 
image = Image.open('test.png')  
color = (255, 0, 0)  # выдаёт 4
# color = (255, 255, 255)  # выдало 20  
print(find_shelf(image, color))
Ни коим образом не претендую на то, что моё решение идеально. Тем более, что уже не проверить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.05.2021, 14:05
Помогаю со студенческими работами здесь

Записать на место отрицательных элементов матрицы нули, а на место положительных – единицы.
Дана квадратная матрица A. Записать на место отрицательных элементов матрицы нули, а на место положительных – единицы.

Записать на место отрицательных элементов матрицы нули, а на место положительных – единицы
Составить программу для обработки матрицы. Размеры матрицы нужно задавать с клавиатуры.Вариант который нужно сделать ниже Записать на...

Записать на место отрицательных элементов матрицы нули, а на место положительных - единицы
Дана квадратная матрица A. Записать на место отрицательных элементов матрицы нули, а на место положительных - единицы. Вывести на печать...

На место отрицательных элементов матрицы записать нули, а на место положительных - единицы
Сформируйте двумерный массив X(m,n) заданных размеров из случайных вещественных чисел в заданном диапазоне. Если в нем нет строк,...

Записать на место отрицательных элементов матрицы нули, а на место положительных единицу
Прошу помочь написать программу на Visual Basic.: "Записать на место отрицательных элементов матрицы нули, а на место поло-жительных -...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
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 —. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru