(Python)
从itertools导入islice
def occurrence_swaps(w,s,t):
out,oi=[],w.find(s)
当oi!=-1:
out.append(w[:oi]+t+w[oi+len(s):])
oi=w.查找(s,oi+1)
返回
def-moves(w):#移动MIU系统中的单词w,编码为310
nxt=[]
如果w[-1]==“1”:nxt.append(w+“0”)#规则1
如果w[0]==“3”:nxt.append(w+w[1:])#规则2
nxt.extend(occurrence_swaps(w,'111','0'))#规则3
nxt.extend(occurrence_swaps(w,'00',''))#规则4
返回nxt
def agen():#术语生成器
边界={'31'}
当len(前沿)>0时:
屈服透镜(前沿)
reach1=集合(m代表边界中的p,m代表移动中的m(p))
前沿,reach1=reach1,set()
打印(列表(islice(agen(),10))#迈克尔·布拉尼基2024年1月14日
|