Уведомления

Группа в Telegram: @pythonsu

#1 Июль 7, 2011 15:40:54

Felix_228
От:
Зарегистрирован: 2011-07-06
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите плиз!

Код:
import sys
from copy import deepcopy
sys.setrecursionlimit = 1000000
doska = [ for i in xrange(8)]
def print_doska(doska):
for i in doska:
print i
print ‘————————’
print_doska(doska)
horse =
n = input()
doska[horse][horse] = -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 = N-n
step(N,n-1,x-2,y-1,step1)
if x>=2 and y<=6:
step2=deepcopy(doska)
step2 = N-n
step(N,n-1,x-2,y+1,step2)
if x>=1 and y<=5:
step3=deepcopy(doska)
step3=N-n
step(N,n-1,x-1,y+2,step3)
if x<=6 and y<=5:
step4=deepcopy(doska)
step4 = N-n
step(N,n-1,x+1,y+2,step4)
if x<=5 and y<=6:
step5=deepcopy(doska)
step5=N-n
step(N,n-1,x+2,y+1,step5)
if x<=5 and y>=1:
step6=deepcopy(doska)
step6=N-n
step(N,n-1,x+2,y-1,step6)
if x<=6 and y>=2:
step7=deepcopy(doska)
step7=N-n
step(N,n-1,x+1,y-2,step7)
if x>=1 and y>=2:
step8=deepcopy(doska)
step8=N-n
step(N,n-1,x-1,y-2,step8)
step(n,n,horse,horse,doska)






вот смотрите задача про коня “На шахматной доске определите поля,в которые может попасть конь за n ходов из указанной позиции. Результат отобразить на экране.”. Там помогите с ходами! если задать 1 ход с координатами 0;1 как сделать так что бы он выбрал за этот ход не 1 клетку а 3 так как там кроме коня ничего нет! получается что он стоит на А2 и может пойти и на С1 и на С3 и на B4. как это описать я не знаю(((((((((( помогите!!!!!!



Офлайн

#2 Июль 7, 2011 19:44:44

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Помогите плиз!

Ну если в лоб, то как-то так:

#!/usr/bin/python
import sys

KNIGTH_STEP = ((-2,-1),(-2,1),(-1,-2),(-1,2),(1,-2),(1,2),(2,-1),(2,1))

def pos_in_desk(pos):
return pos[0] >= 0 and pos[0] < 8 and pos[1] >= 0 and pos[1] < 8

def step(pos):
return [x for x in ((pos[0]+x,pos[1]+y) for x,y in KNIGTH_STEP) if pos_in_desk(x)]

def unique(sq):
dt = dict((x, True) for x in sq)
return dt.keys()


def find_steps(start, depth):

def _find(ls, n):
if n:
new_ls = []
for x in ls:
new_ls.extend(step(x))
ls.extend(_find(new_ls, n-1))
return unique(ls)
else:
return ls

return _find(step(start), depth-1)


def n2l(n):
return chr(ord('A')+n-1)

def l2n(l):
return ord(l)-ord('A')

def str2pos(s):
return (l2n(s[0].upper()), int(s[1])-1)

def print_desk(start=None, ls=()):
desk = [[' ' for x in range(8)] for y in range(8)]
for x in ls:
desk[x[1]][x[0]] = '+'
if start:
desk[start[1]][start[0]] = '0'
for i, x in enumerate(reversed(desk)):
print '%d|%s|' % (8-i, '|'.join(x))
print ' ', ' '.join(n2l(x) for x in range(1,9))

start = str2pos(sys.argv[1])
print_desk(start, find_steps(start, int(sys.argv[2])))
pooh@PooHland:~$ ./test.py e4 1
8| | | | | | | | |
7| | | | | | | | |
6| | | |+| |+| | |
5| | |+| | | |+| |
4| | | | |0| | | |
3| | |+| | | |+| |
2| | | |+| |+| | |
1| | | | | | | | |
A B C D E F G H
pooh@PooHland:~$ ./test.py e4 2
8| | |+| |+| |+| |
7| |+| |+| |+| |+|
6|+| | |+|+|+| | |
5| |+|+|+| |+|+|+|
4|+| |+| |0| |+| |
3| |+|+|+| |+|+|+|
2|+| | |+|+|+| | |
1| |+| |+| |+| |+|
A B C D E F G H



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#3 Июль 7, 2011 19:53:27

Felix_228
От:
Зарегистрирован: 2011-07-06
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите плиз!

у меня ошибку выдает в этой строчке start = str2pos(sys.argv)



Офлайн

#4 Июль 7, 2011 20:05:28

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Помогите плиз!

Felix_228
у меня ошибку выдает в этой строчке start = str2pos(sys.argv)
а посмотреть как запускать?
./test.py e4 2



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#5 Июль 7, 2011 20:09:33

Felix_228
От:
Зарегистрирован: 2011-07-06
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите плиз!

я что то туплю объясни как запустить а то я уже не могу мозги не варят!



Офлайн

#6 Июль 7, 2011 20:14:24

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Помогите плиз!

Felix_228
я что то туплю объясни как запустить а то я уже не могу мозги не варят!
sys.argv - доступ к аргументам командной строки
запускать, с параметрами: ./test.py <начальная клетка a1, e2, g4 и т.д.> <на сколько шагов считать>



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#7 Июль 7, 2011 20:18:55

Felix_228
От:
Зарегистрирован: 2011-07-06
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите плиз!

посмотри в личку)))



Офлайн

#8 Июль 7, 2011 20:31:18

Felix_228
От:
Зарегистрирован: 2011-07-06
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите плиз!

Парни объсните как запустить ничего не понимаю! что в начале надо открыть что потом и где это открывать!



Офлайн

#9 Июль 7, 2011 21:57:24

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

Помогите плиз!

пуск- выполнить- cmd
путь\до\питона\python.exe путь\до\файла.py e4 2



Офлайн

#10 Июль 8, 2011 02:05:59

Actor
От:
Зарегистрирован: 2010-10-10
Сообщения: 39
Репутация: +  0  -
Профиль  

Помогите плиз!

python же вроде добавляется в переменные среды, или не всегда?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version