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

Выведите единственное число — максимальное количество баллов, которое смогут набрать Гоша и Тимофей

22.05.2021, 22:18. Показов 25013. Ответов 6

Студворк — интернет-сервис помощи студентам
Всем привет! Недавно изучаю алгоритмические задачи на питоне, сделал одну задачу, хотел бы узнать, как её можно улучшить? (можно побольше объяснений).

Гоша и Тимофей нашли необычный тренажёр для скоростной печати и хотят освоить его. Тренажёр представляет собой поле из клавиш 4×4, в котором на каждом раунде появляется конфигурация цифр и точек. На клавише написана либо точка, либо цифра от 1 до 9. В момент времени t игрок должен одновременно нажать на все клавиши, на которых написана цифра t. Гоша и Тимофей могут нажать в один момент времени на k клавиш каждый. Если в момент времени t были нажаты все нужные клавиши, то игроки получают 1 балл.
Найдите число баллов, которое смогут заработать Гоша и Тимофей, если будут нажимать на клавиши вдвоём.



Формат ввода

В первой строке дано целое число k (1 ≤ k ≤ 5).
В четырёх следующих строках задан вид тренажёра –— по 4 символа в каждой строке. Каждый символ —– либо точка, либо цифра от 1 до 9. Символы одной строки идут подряд и не разделены пробелами.

Формат вывода

Выведите единственное число –— максимальное количество баллов, которое смогут набрать Гоша и Тимофей.

Пример 1:

Ввод:

Python
1
2
3
4
5
3
1231
2..2
2..2
2..2
Вывод:

Python
1
2
Пример 2:

Ввод:

Python
1
2
3
4
5
4
1111
9999
1111
9911
Вывод:

Python
1
1
Пример 3:

Ввод:

Python
1
2
3
4
5
4
1111
1111
1111
1111
Вывод:
0

Ограничение времени - 1 секунда | Ограничение памяти - 64mb

Мой вариант:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
k = int(input()) * 2 #Эти 2 части перенести в if __name__ == "__main__"  и сделать def "snake_case"
matrix = []
for i in range(4):
    numbers = input()
    matrix += numbers
t = 1
score = 0
while t <= 9:
    count_t = matrix.count(str(t))
    if 0 < count_t <= k:
        score += 1 #Тут была идея сделать функцию sum() с условием, чтобы избавиться от лишних строк, но не знаю, нужно это или нет
    t += 1
print(score)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.05.2021, 22:18
Ответы с готовыми решениями:

Гость из прошлого. Выведите одно целое число — максимальное количество литров кефира, которое сможет выпить Коля
Коля Герасимов очень любит кефир, и в своём 1984 году он освоил все тонкости покупки этого чудесного напитка. Но однажды, как вам,...

Выведите одно целое число — максимальное число, которое могло получиться в протоколе при игре на данном поле
У Пети имеется игровое поле размером 3×3 , заполненное числами от 1 до 9. В начале игры он может поставить фишку в любую клетку поля. На...

Выведите одно целое число — максимальное число, которое могло получиться в протоколе при игре на данном поле
У пети имеется игровое поле размером 3х3, заполненное числами от 1 до 9. В начале игры он может поставить фишку в любую клетку поля. На...

6
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
23.05.2021, 00:59
Лучший ответ Сообщение было отмечено bdcry как решение

Решение

Python
1
2
3
4
5
6
from collections import Counter
 
k = int(input())
c = Counter(int(x) for _ in range(4) for x in input() if x != ".")
result = sum(x <= 2 * k for x in c.values())
print(result)
1
0 / 0 / 0
Регистрация: 01.09.2013
Сообщений: 23
03.09.2021, 16:56
привет. а можете подсказать как убрать input() из 4ой строки но при этом чтобы код работал?
я создаю переменную и присваиваю input() ей, а в 4ой строке вместо input() пишу название переменной, но это не работает..
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
03.09.2021, 19:07
Taron8117, вообще-то это не одна строка, а 4.
0
0 / 0 / 0
Регистрация: 01.09.2013
Сообщений: 23
03.09.2021, 23:16
не совсем вас понял) я просто говорю про 4ую строчку.
Code
1
c = Counter(int(x) for _ in range(4) for x in input() if x != ".")
уже второй день пытаюсь убрать из условия input() и заменить его параметром, но код перестает работать. Поэтому решил у вас попросить, если такая возможность есть, то подсказать как это сделать. А сделать это я хочу потому что от меня это требуют
Чтобы эту функцию можно было применять в проекте, она должна получать все данные для работы через параметры.
А сейчас часть данных - через параметр
Часть - она сама извлекает через input()
Удалите из функции вызовы input()


Добавлено через 4 минуты
Python
1
2
3
4
5
6
7
8
9
10
11
from collections import Counter
def game(k, j):
 
    c = Counter(int(x) for _ in range(4) for x in j if x != ".")
    result = sum(x <= 2 * k for x in c.values())
    return result
 
if __name__ == '__main__':
    k = int(input())
    j = input()
    print(game(k, j))
для наглядности хочу сделать что-то такое, но в данном виде код не работает
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
04.09.2021, 00:17
Taron8117,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from collections import Counter
 
 
def solution(k, matrix):
    c = Counter(int(x) for row in matrix for x in row if x != ".")
    return sum(x <= 2 * k for x in c.values())
    
def main():
    k = int(input())
    matrix = (input() for _ in range(4))
    result = solution(k, matrix)
    print(result)
    
if __name__ == "__main__":
    main()
1
0 / 0 / 0
Регистрация: 01.09.2013
Сообщений: 23
04.09.2021, 00:48
огромное спасибо, теперь буду знать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.09.2021, 00:48
Помогаю со студенческими работами здесь

Выведите максимальное число кусков длины 10, которое сможет получить повар, сделав не более m разрезов
Как решить задачу на c++? У повара есть n кусков лапши, длина i-го куска равна ai сантиметров. Однажды к нему пришел очень важный, но...

Выведите в файл то число, которое встречается в массиве наибольшее количество раз
Большее из частейших Прочитайте из первой строки число n, 1 ≤ n ≤ 15 000, со второй строки – n элементов массива a, -32 767 ≤ a ≤...

Выведите одно число-количество деталей, которое может получиться по заданной технологии
Имеется N кг металлического сплава.Из него изготавливают заготовки массой K кг каждая.Поле этого из каждой заготовки вытачиваются детали...

Выведите целое число M – максимальное количество черепах, которые могут говорить правду
Широко известна следующая задача для младших школьников. Три черепахи ползут по дороге. Одна черепаха говорит: “Впереди меня две черепахи”....

Найти единственное число, которое повторяется в массиве дважды
Дан массив размера N из целых чисел, принимающих любое целое значение в диапазоне от 1 до M, при этом одно число в этом массиве повторяется...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru