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