码迷,mamicode.com
首页 > 编程语言 > 详细

Python趣味百题链接地址:http://www.cheemoedu.com/exercise_list/

时间:2015-11-06 11:09:27      阅读:434      评论:0      收藏:0      [点我收藏+]

标签:

 

python趣味百题:http://www.cheemoedu.com/exercise_list/

汉诺塔问题

def move(a,b,c,n):#x原坐标 ,y终点坐标,z辅助坐标,n个数
if n==1:
print‘%s->%s:%s‘%(a[0],b[0],a[-1])
b.append(b.pop())
print x,y,z
return
move(a,c,b,n-1)
print ‘%s->%s:%s‘%(a[0],b[0],a[-1])
b.append(a.pop())
print x,y,z
move(c,b,a,n-1)

x=[‘x‘,5,4,3,2,1]
y=[‘y‘]
z=[‘z‘]
move(x,y,z,5)
print x,y,z
运行结果

x->y:1
[‘x‘, 5, 4, 3, 2, 1] [‘y‘] [‘z‘]
x->z:1
[‘x‘, 5, 4, 3, 2] [‘y‘] [‘z‘, 1]
y->z:y
[‘x‘, 5, 4, 3, 2] [‘y‘] [‘z‘, 1]
x->y:2
[‘x‘, 5, 4, 3] [‘y‘, 2] [‘z‘, 1]
z->x:1
[‘x‘, 5, 4, 3] [‘y‘, 2] [‘z‘, 1]
z->y:1
[‘x‘, 5, 4, 3] [‘y‘, 2, 1] [‘z‘]
x->y:3
[‘x‘, 5, 4, 3] [‘y‘, 2, 1] [‘z‘]
x->z:3
[‘x‘, 5, 4] [‘y‘, 2, 1] [‘z‘, 3]
y->z:1
[‘x‘, 5, 4] [‘y‘, 2, 1] [‘z‘, 3]
y->x:1
[‘x‘, 5, 4, 1] [‘y‘, 2] [‘z‘, 3]
z->x:3
[‘x‘, 5, 4, 1] [‘y‘, 2] [‘z‘, 3]
y->z:2
[‘x‘, 5, 4, 1] [‘y‘] [‘z‘, 3, 2]
x->y:1
[‘x‘, 5, 4, 1] [‘y‘] [‘z‘, 3, 2]
x->z:1
[‘x‘, 5, 4] [‘y‘] [‘z‘, 3, 2, 1]
y->z:y
[‘x‘, 5, 4] [‘y‘] [‘z‘, 3, 2, 1]
x->y:4
[‘x‘, 5] [‘y‘, 4] [‘z‘, 3, 2, 1]
z->x:1
[‘x‘, 5] [‘y‘, 4] [‘z‘, 3, 2, 1]
z->y:1
[‘x‘, 5] [‘y‘, 4, 1] [‘z‘, 3, 2]
x->y:5
[‘x‘, 5] [‘y‘, 4, 1] [‘z‘, 3, 2]
z->x:2
[‘x‘, 5, 2] [‘y‘, 4, 1] [‘z‘, 3]
y->z:1
[‘x‘, 5, 2] [‘y‘, 4, 1] [‘z‘, 3]
y->x:1
[‘x‘, 5, 2, 1] [‘y‘, 4] [‘z‘, 3]
z->x:3
[‘x‘, 5, 2, 1] [‘y‘, 4] [‘z‘, 3]
z->y:3
[‘x‘, 5, 2, 1] [‘y‘, 4, 3] [‘z‘]
x->y:1
[‘x‘, 5, 2, 1] [‘y‘, 4, 3] [‘z‘]
x->z:1
[‘x‘, 5, 2] [‘y‘, 4, 3] [‘z‘, 1]
y->z:3
[‘x‘, 5, 2] [‘y‘, 4, 3] [‘z‘, 1]
x->y:2
[‘x‘, 5] [‘y‘, 4, 3, 2] [‘z‘, 1]
z->x:1
[‘x‘, 5] [‘y‘, 4, 3, 2] [‘z‘, 1]
z->y:1
[‘x‘, 5] [‘y‘, 4, 3, 2, 1] [‘z‘]
x->y:5
[‘x‘, 5] [‘y‘, 4, 3, 2, 1] [‘z‘]
[‘x‘, 5] [‘y‘, 4, 3, 2, 1] [‘z‘]

原理:先拿下的,再拿大的,先放大的,再放小的

 回形矩阵

def sankeaart(n):
a=[[0]*n for x in range(n)]
p=0
q=n-1
t=1
while p<q:
for i in range(p,q):
a[p][i]=t
t+=1
for i in range(p,q):
a[i][q]=t
t+=1
for i in range(q,p,-1):
a[q][i]=t
t+=1
for i in range(q,p,-1):
a[i][p]=t
t+=1
p+=1
q-=1
if p==q:#如果是奇数时
a[p][p]=t
return a
a=sankeaart(5)
for i in a:
print i
完全数
"""
完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。例如,第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。
"""
def isPerfectNumer(n):
a=1
b=n
s=0
while a<b:
if n%a==0:
s+=(a+b)
a+=1
b=n/a
if a==b and a*b==n:
s+=a
return s-n==n
for i in range(2,10000):
if isPerfectNumer(i):
print i

Python趣味百题链接地址:http://www.cheemoedu.com/exercise_list/

标签:

原文地址:http://www.cnblogs.com/mhxy13867806343/p/4941742.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!