※ 引述《yauhh (小y宝贝)》之铭言:
: ※ 引述《xatier (陪在妳身边 :))》之铭言:
: : 你的好做
: : (lambda s:
: : lambda sFixed=s.rstrip('z'):
: : lambda lz=len(s)-len(sFixed):
: : (sFixed[:-1] + chr(ord(sFixed[-1])+1) if sFixed else 'a') + 'a'*lz)
: : ('a')()()
: def part_zs(s):
: return s.rstrip('z'), (len(s)-len(s.rstrip('z')))
: def incaz((h, zn)):
: return (h[:-1] + chr(ord(h[-1])+1) if h else 'a') + 'a' * zn
: print(incaz(part_zs('au')))
: Functional Programming的重点在于函数本身要写得短,而且函数主题明确。
: 的确一个函数可以写成一行,但是,一个目标不见得要是一行完成。
: 其实写一行或写三行,所用到的函数一样多,挤成一行照样该跑多久就跑多久。
: 挤成一行甚至却换来难以阅读的问题。
乱入一个 perl 的.. :p
(呣.. 因为好像没有看到有人提供正规表达式作法, 等得心有点痒 ._.)
假设 $s 是放 input 字串, 例如 a, at, az, zzz 等等
$s =~ s(([^z])?(z*)$){
($1 ? chr(ord($1)+1) : 'a') .
'a' x length $2
}e;
执行完以后把 $s 取代为 output 字串, 例如 b, au, ba, aaaa
这样应该也可以算是一个 expression 哄?