这里有C的解答。我承认,我花的时间有些长——所以我不适合吃程序员的饭——但是我不认为笔试考这个有什么意义。
'''
如图:
7(-1,-1)
8(0,-1)
9(1,-1)
10(2,-1)
6(-1,0)
1(0,0)
2(1,0)
11(2,0)
5(-1,1)
4(0,1)
3(1,1)
12(2,1)
17(-2,2)
16(-1,2)
15(0,2)
14(1,2)
13(2,2)
设“1”的坐标为(0,0) “7”的坐标为(-1,-1)
编写一个小程序,使程序做到输入坐标(X,Y)之后
显示出相应的数字。
有人管这东西叫“螺旋队列”
'''
def _getxy(x,y):
#根据坐标返回元素值
#最里面的是第一圈坐标是(+/-1, +/-1),也就是说,没有0坐标
if x<0 and -x>=abs(y) and -x!=y: #left
n=-x
if y>0:
return (2*n-2)**2+(n-y)
else:
return (2*n-2)**2+(n-y)-1
elif y<0 and -y>=abs(x): #up
n=-y
if x<0:
return (2*n-2)**2+(2*n-1)+(x+n)
else:
return (2*n-2)**2+(2*n-1)+(x+n)-1
elif x>0 and x>abs(y): #right
n=x
if y<0:
return (2*n-2)**2+(2*n-1)*2+(y+n)
else:
return (2*n-2)**2+(2*n-1)*2+(y+n)-1
else: #bottom
n=y
if x>0:
return (2*n-2)**2+(2*n-1)*3+(n-x)
else:
return (2*n-2)**2+(2*n-1)*3+(n-x)-1
def getxy(x,y):
#根据题目要求的坐标返回元素值,实际是对上面_getxy坐标的偏移
#在1上建立坐标原点,7是(-1,-1)
if x<1:
x-=1
if y<1:
y-=1
return _getxy(x,y)
if __name__=='__main__':
N=5 #完整的圈数
'''
xrange=range(-N,N+1)
xrange=filter(lambda e:e!=0, xrange)
yrange=range(-N,N+1)
yrange=filter(lambda e:e!=0, yrange)
row=''
for y in xrange:
for x in yrange:
row+='%3d(%-2d, %-2d)' % (_getxy(x,y), x ,y)
print row
row=''
'''
row=''
for y in range(-3,4+1):
for x in range(-3,4+1):
row+='%3d(%-2d, %-2d)' % (getxy(x,y), x ,y)
print row
row=''
#下面输出到html文件
htm_head='''<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="GENERATOR" content="getxy.py">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>无聊的笔试题目</title>
</head>
<body>
<table border="1">'''
htm_tail='''
</table>
</body>
</html>
'''
xy=r'''<td>
<p align="center" text-align:center"><font color="%s">%3d<sub>(%-i,%-i)</sub></font></p>
</td>'''
f=open('getxy.htm','w')
print >>f, htm_head
row=''
for y in range(-N,N+1):
print>>f, '<tr>\n'
for x in range(-N,N+1):
tx, ty=x, y
if tx<1:
tx-=1
if ty<1:
ty-=1
if max(abs(tx),abs(ty)) % 2:
color=''
else:
color='#FF0000'
print >>f, xy % (color, getxy(x,y), x ,y)
print>>f, '</tr>\n'
print >>f, htm_tail
f.close()
你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=5816608
|
- 评论人:对联横批
2007-10-13 16:31:41
|
|||
谭浩强那本C语言的练习册里就有这题... |
||||