Size: a a a

Сообщество Python Программистов

2020 December 06

AT

Alexander T in Сообщество Python Программистов
👑OGURCHIK🖤 ️
Ваша задача - написать программу, сканирующую такую матрицу и подсчитывающую количество выставленных в ней плюсов. В рамках этой задачи условимся, что все плюсы ровные и их линии параллельны границам бланка, а их толщина ограничена одной единицей. При этом плюсы могут касаться друг друга, и их размеры произвольные, но для отдельного плюса совпадают во всех направлениях. В рамках этой задачи матрица не содержит иных фигур и шумов.

Входной формат: прямоугольная матрица размером 200 столбцов на 300 строк из нулей и единиц. Матрица будет передана в программу в следующем виде (строки слитные и разделены переносом):

010101010010101
100101010101010
101001010101001
101010101001010

Выходной формат: единственное целое число, количество плюсов в матрице.
for y in range(len(data) - 2):
   for x in range(1, len(data[0]) - 1):
       for dy, dx in [(0, 0), (1, 0), (1, -1), (1, 1), (2, 0)]:
           if data[y + dy][x + dx] != '1':
               break
       else:
           count += 1
источник

👑️

👑OGURCHIK🖤 ️ in Сообщество Python Программистов
Alexander T
for y in range(len(data) - 2):
   for x in range(1, len(data[0]) - 1):
       for dy, dx in [(0, 0), (1, 0), (1, -1), (1, 1), (2, 0)]:
           if data[y + dy][x + dx] != '1':
               break
       else:
           count += 1
в функцию запакуй плез
источник

E

Egor in Сообщество Python Программистов
а за мою возьметесь?
источник

AE

Aleksandr Emoteview in Сообщество Python Программистов
Alexander T
for y in range(len(data) - 2):
   for x in range(1, len(data[0]) - 1):
       for dy, dx in [(0, 0), (1, 0), (1, -1), (1, 1), (2, 0)]:
           if data[y + dy][x + dx] != '1':
               break
       else:
           count += 1
таки эти люди будут мне говорить что "он не программист" ц ц ц..
источник

E

Egor in Сообщество Python Программистов
👑OGURCHIK🖤 ️
в функцию запакуй плез
jopa(data):
   его код
   return count
источник

in Сообщество Python Программистов
Скачать pycharm что ли, помню Вадим красивые картинки кидал из профайлера
Всё ясно, это вонючий вскод отжирал память...

Запустил скрипт в консоли и всё работает как и ожидалось
источник

AT

Alexander T in Сообщество Python Программистов
👑OGURCHIK🖤 ️
в функцию запакуй плез
def f(s):
   data = s.split('\n')
   count = 0
   for y in range(len(data) - 2):
       for x in range(1, len(data[0]) - 1):
           for dy, dx in [(0, 0), (1, 0), (1, -1), (1, 1), (2, 0)]:
               if data[y + dy][x + dx] != '1':
                   break
           else:
               count += 1
   return count
источник

👑️

👑OGURCHIK🖤 ️ in Сообщество Python Программистов
😀 люнукс чего ты опять не в настроении
источник

E

Egor in Сообщество Python Программистов
👑OGURCHIK🖤 ️
😀 люнукс чего ты опять не в настроении
а?
источник

AT

Alexander T in Сообщество Python Программистов
я не запускал это только ни разу
источник

AT

Alexander T in Сообщество Python Программистов
дай тестовые данные что ли
ну или сам проверь
источник

👑️

👑OGURCHIK🖤 ️ in Сообщество Python Программистов
👑OGURCHIK🖤 ️
10111
10111
10111
да вот например
источник

👑️

👑OGURCHIK🖤 ️ in Сообщество Python Программистов
а так тестим на сиде 1 и матрица 1300х1200
источник

AT

Alexander T in Сообщество Python Программистов
👑OGURCHIK🖤 ️
да вот например
1 дает
источник

👑️

👑OGURCHIK🖤 ️ in Сообщество Python Программистов
источник

h

hoster in Сообщество Python Программистов
Можно сначала только по у смотреть сумму, если она равно 3,то проверять по х соседние значения
источник

AT

Alexander T in Сообщество Python Программистов
ну оно теоретически работает, алгоритм верный, вопрос нет ли ошибок в реализации
источник

h

hoster in Сообщество Python Программистов
Или наоборот
источник

👑️

👑OGURCHIK🖤 ️ in Сообщество Python Программистов
работает
источник

AT

Alexander T in Сообщество Python Программистов
ну и збс
источник