Форум сайта python.su
может завтра напишу. но тут проще всего рекурсией, имхо
Офлайн
спасибо выручишь))))) а то я совсем запутался(((
Офлайн
import sys
from copy import deepcopy
sys.setrecursionlimit = 1000000
doska = [[-2 for i in xrange(8)] for i in xrange(8)]
def print_doska(doska):
for i in doska:
print i
print '------------------------'
print_doska(doska)
horse = [input(),input()]
n = input()
doska[horse[0]][horse[1]] = -1
print_doska(doska)
def step(N,n,x,y,doska):
if n == 0:
print_doska(doska)
else:
if x>=2 and y>=1:
step1 = deepcopy(doska)
step1[x-2][y-1] = N-n
step(N,n-1,x-2,y-1,step1)
if x>=2 and y<=6:
step2=deepcopy(doska)
step2[x-2][y+1] = N-n
step(N,n-1,x-2,y+1,step2)
if x>=1 and y<=5:
step3=deepcopy(doska)
step3[x-1][y+2]=N-n
step(N,n-1,x-1,y+2,step3)
if x<=6 and y<=5:
step4=deepcopy(doska)
step4[x+1][y+2] = N-n
step(N,n-1,x+1,y+2,step4)
if x<=5 and y<=6:
step5=deepcopy(doska)
step5[x+2][y+1]=N-n
step(N,n-1,x+2,y+1,step5)
if x<=5 and y>=1:
step6=deepcopy(doska)
step6[x+2][y-1]=N-n
step(N,n-1,x+2,y-1,step6)
if x<=6 and y>=2:
step7=deepcopy(doska)
step7[x+1][y-2]=N-n
step(N,n-1,x+1,y-2,step7)
if x>=1 and y>=2:
step8=deepcopy(doska)
step8[x-1][y-2]=N-n
step(N,n-1,x-1,y-2,step8)
step(n,n,horse[0],horse[1],doska)
import sys
from copy import deepcopy
sys.setrecursionlimit = 1000000
doska = [[0 for i in xrange(8)] for i in xrange(8)]
def print_doska(doska):
for i in doska:
print i
print '------------------------'
horse = [input(),input()]
n = input()
def step(N,n,x,y,doska):
if n == 0:
pass
## print_doska(doska)
elif n <>1:
if x>=2 and y>=1:
step(N,n-1,x-2,y-1,doska)
if x>=2 and y<=6:
step(N,n-1,x-2,y+1,doska)
if x>=1 and y<=5:
step(N,n-1,x-1,y+2,doska)
if x<=6 and y<=5:
step(N,n-1,x+1,y+2,doska)
if x<=5 and y<=6:
step(N,n-1,x+2,y+1,doska)
if x<=5 and y>=1:
step(N,n-1,x+2,y-1,doska)
if x<=6 and y>=2:
step(N,n-1,x+1,y-2,doska)
if x>=1 and y>=2:
step(N,n-1,x-1,y-2,doska)
else:
if x>=2 and y>=1:
doska[x-2][y-1] = 2
step(N,n-1,x-2,y-1,doska)
if x>=2 and y<=6:
doska[x-2][y+1] = 2
step(N,n-1,x-2,y+1,doska)
if x>=1 and y<=5:
doska[x-1][y+1] = 2
step(N,n-1,x-1,y+2,doska)
if x<=6 and y<=5:
doska[x+1][y+2] = 2
step(N,n-1,x+1,y+2,doska)
if x<=5 and y<=6:
doska[x-2][y-1] = 2
step(N,n-1,x-2,y-1,doska)
if x<=5 and y>=1:
doska[x-2][y-1] = 2
step(N,n-1,x-2,y-1,doska)
if x<=6 and y>=2:
doska[x+1][y-2] = 2
step(N,n-1,x+1,y-2,doska)
if x>=1 and y>=2:
doska[x-1][y-2] = 2
step(N,n-1,x-1,y-2,doska)
step(n,n,horse[0],horse[1],doska)
print_doska(doska)
Отредактировано (Июль 6, 2011 02:09:50)
Офлайн
2 Necron:
в первом коде есть небольшая ошибка. тут она исправлена
import math
doska = [[0 for i in xrange(8)] for i in xrange(8)]
def print_doska(doska):
for i in doska:
print i
print '-------------------------------------'
print_doska(doska)
f = [[0,0],[0,0],[0,0]]
for i in xrange(3):
f[i][0] = input()
f[i][1] = input()
doska[f[i][0]][f[i][1]] = i + 1
print_doska(doska)
def check_tura(f):
if f[0][0] == f[2][0]:
if (f[0][0]==f[1][0]) and ((f[0][1]<f[1][1]<f[2][1]) or (f[2][1]<f[1][1]<f[0][1])): return False
else: return True
elif f[0][1] == f[2][1]:
if (f[0][1]==f[1][1]) and ((f[0][0]<f[1][0]<f[2][0]) or (f[2][0]<f[1][0]<f[0][0])): return False
else: return True
else: return False
def check_officer(f):
if (math.fabs(f[0][0]-f[1][0])==math.fabs(f[0][1]-f[1][1])):
if (math.fabs(f[0][0]-f[2][0])==math.fabs(f[0][1]-f[2][1])):
if ((f[0][0]<f[2][0]<f[1][0]) and (f[0][1]<f[2][1]<f[1][1])) or \
((f[0][0]>f[2][0]>f[1][0]) and (f[0][1]<f[2][1]<f[1][1])) or \
((f[0][0]<f[2][0]<f[1][0]) and (f[0][1]>f[2][1]>f[1][1])) or \
((f[0][0]>f[2][0]>f[1][0]) and (f[0][1]>f[2][1]>f[1][1])):
return False
else: return True
else: return True
else: return False
print 'Bjet tura - ', check_tura(f), ', bjet officer - ', check_officer(f)
Офлайн
Спасибо большое)))))
Офлайн
У меня почему то он ошибку выдает присохранении “… print i
print ‘————————’…” в начале к i придерается потом к кавычке последней и почему то отступы считает ошибкой((((
Офлайн
Felix_228Что то мне подсказывает что у вас Python 3.x…
У меня почему то он ошибку выдает присохранении “… print i
print ‘————————’…” в начале к i придерается потом к кавычке последней и почему то отступы считает ошибкой((((
Офлайн
да
Офлайн
а это на каком?
Офлайн
2.7 скорее всего.
Отредактировано (Июль 6, 2011 10:44:07)
Офлайн