Re: [问题] 如何能做到字母进位呢?

楼主: CindyLinz (Cindy Wang)   2014-12-14 00:04:41
※ 引述《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 哄?
作者: LiloHuang (十年一刻)   2014-12-14 00:16:00
真是优雅的解法 :)
楼主: CindyLinz (Cindy Wang)   2014-12-14 00:49:00
啊想到可以把 ($1 ? chr(ord($1)+1) : 'a') 换成chr(ord($1 // '`')+1) 利用 ` 是 a 的前一个字 :p
作者: xatier (一切重来就好了...)   2014-12-14 22:20:00
解接乱入www
作者: apua (Apua)   2014-12-21 21:34:00
chr(ord($1 || '`')+1) 似乎也可; Python 只能这样缩(翻译)__import__('re').sub(r'([^z])?(z*)$',lambda m:chr(ord(m.group(1) or '`')+1) +len(m.group(2))*'a',s)

Links booklink

Contact Us: admin [ a t ] ucptt.com