Как вынести часть кода?
from collections import Counter
def sleight_of_hand(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 = sleight_of_hand(k, matrix)
print(result)
if __name__ == "__main__":
main()
Как и куда можно вынести 2 * k?
Ответы (2 шт):
Автор решения: Xander
→ Ссылка
Замените вот это:
return sum(x <= 2 * k for x in c.values())
на это
k2 = k * 2
return sum(x <= k2 for x in c.values())
Автор решения: CrazyElf
→ Ссылка
Поскольку k вообще в чистом виде не используется, как вариант можно вообще сразу умножить его на 2 после ввода, но лучше таки переобозвать переменную, чтобы потом не путаться при отладке где у вас что:
def sleight_of_hand(k2, matrix):
...
return sum(x <= k2 for x in c.values())
def main():
k2 = 2 * int(input())
...
result = sleight_of_hand(k2, matrix)