leetcode 2144. сегодня я узнал о существовании функции батчт в итертулз. нравицо
return sum(a[0]+ (a[1] if len(a)>1 else 0) for a in batched(sorted(cost, reverse=True), 3))
leetcode 2784 ванлайнер с эндами и валрусами
return (c:=Counter(nums)) and len(nums) == (ma:=max(c))+1 and c[ma]==2 and all(c[i]==1 for i in range(1, ma))
leetcode 2553. иногда попадается такой изи, что на некоторое непродолжительное время начинает казаться, что что-то могу, что-то умею...
return [int(ch) for nu in nums for ch in str(nu)]
leetcode 1848. думал ограничиться одним редьюсом, но передумал
return min(filter(lambda p: p[1]==target, [(abs(i-start), v) for i, v in enumerate(nums)]), key=lambda p: p[0])[0]
leetcode 1886. поборол лень и прикрутил редьюс вместо цикла
return reduce(lambda acc, _: (acc[0] or acc[1] == target, [list(r) for r in zip(*acc[1][::-1])]), range(4), (False, mat))[0]
литкод 1622. это конечно не ванлайнер, но задаче не решается, если не знать, что деление в поле простого числа - это умножение на модульное обратное. и вот я думаю, наверно с точки зрения программирования есть разница между незнанием что такое хип и что такое модельное обратное?
leetcode 1680
return reduce(lambda acc, cur: ((acc<<cur.bit_length()) + cur)%(10**9+7), range(1, n+1), 0)
хороший вариант использовать редьюс. заодно узнал, что у сложения приоритет выше, чем у побитового сдвига.