一直都计划好好学算法,一直都计划好好看书刷题,却几乎从来没更新过(算法)博客,几乎从来没有花苦功夫学过。
糜烂的四月,最后一天,更新一些自己看到的小 trick 吧,以后一定要多多更新算法博客。
1. 一道小学三年级的数学题:
【题目】:5□5□5□5□5=1
每个方框中都可选择填入+-×÷,不能添加括号,使得上式成立。
>>> from itertools import product >>> [x for x in product(['', '+', '-', '*', '/'], repeat = 4) if eval('5%s5%s5%s5%s5' % x) == 1] [('', '/', '-', '-')]
2. 不用 loop or library funtion 实现 list 的求和。
sum_t = 0 L = range(10) def plus(x): global sum_t sum_t += x return sum_t print(list(map(plus, L))[-1])
from functools import reduce L = range(20) reduce(lambda x, y : x + [x[-1] + y], L, [0])[-1]
def cumsum(L): if L[ : -1] == []: return L ret = cumsum(L[ : -1]) ret.append(ret[-1] + L[-1]) return ret
3. C++ 10行内实现八皇后。