pythonでキリ番かどうか判定する
pythonで与えられた数字がキリ番かどうかを判定するコード書きました。ほぼ正規表現です。
import re
def isKiri(x):
if re.match('^([0-9])\\1+$', str(x)): # ゾロ目
return True
if re.match('^[0-9]0+$', str(x)): # 100とか200とか。(なんて言うんだ)
return True
if str(x) in '01234567890' or str(x) in '09876543210': # 連番
return True
return False
こんな感じで。
連番だけちょっと綺麗じゃない感じになってしまった。 0123とかなら対応できるけど、7890123みたいのはダメ。まあ、そいつをキリ番に含めるのかどうかは知らないけれど。
def isKiri(x):
if all(y == str(x)[0] for y in str(x)[1:]): # ゾロ目
return True
if all(y == '0' for y in str(x)[1:]): # 100とか200とか。(なんて言うんだ)
return True
if str(x) in '01234567890' or str(x) in '09876543210': # 連番
return True
return False
正規表現使わないとこんな感じ。 大して長さは変わらないけれど、読みづらい。