Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 00:49 11.07.25 
Клубове/ Компютри и Интернет / Програмисти Пълен преглед*
Информация за клуба
Тема Решение на задачата [re: eфp. Лyk]
Автор eфp. Лyk (*)
Публикувано22.06.06 14:59  



Следва точно решение на задачата на Python:


clone = lambda m: [ x[:] for x in [y[:] for y in m] ] # deepcopy

def R( m, k, d=-1): #rotate right
o= clone(m)
o[k] = [ m[k][(a+d)%len(o[k])] for a in range(len(o[k]))]
return o

def L( m, k): return R(m,k,1) #rotate left

def U( m, k, d=1): #rotate up
o= clone(m)
for a in range(len(o)):
o[a][k]=m[(a+d)%len(o)][k]
return o

def D( m, k): return U(m,k,-1) #rotate down

def gen(m, m_goal, (F1, F2), D,queue):
""" generate all 1 move next states from current state m using F1,F2"""
for x in range(D):
for F in (F1, F2):
cmd=F.__name__ + str(x+1)
next = F(m, x)
if m == m_goal: # solved!!!
print >> open("SHIFTING.OUT","w"), " ".join(queue[0][1])
return True
queue.append( (next, queue[0][1] + [cmd] ) )

def solve(m, m_goal, M, N ):
"""solve by breadth first searching all posibilities."""
queue=[ (m, []) ];
while True:
if gen(m, m_goal, (U,D), M, queue):
return
if gen(m, m_goal, (L,R), N, queue):
return
del queue[0]
m = queue[0][0]

if __name__ == "__main__":
lines = open("SHIFTING.INP").readlines()
M,N,C = map(int, lines[0].split())
m=[]; m_goal=[]
for a in lines[1:N+1]:
m.append( map(int, a.split()) )
for a in lines[N+1:]:
m_goal.append( map(int, a.split()) )

solve( m, m_goal, M,N)



Пояснения:

Решението е малко дълго. Цели 50 реда. И сам не знам защо съм писал толкова много.

Това е напълно валидно решение и ако намеря начин да го направя на exe може и да участвам, затова никой да не мисли, че може да прати това на конкурса вместо мен.

Този алгоритъм намира най-краткото решение ГАРАНТИРАНО. Затова ако участвам никой няма шанс да ме бие по тази точка.

За ваше щастие този алгоритъм е малко бавен и затруднява компютъра дори и за простият пример от матрица 3 на 4.

Така че не се отчайвайте.

Поздрави,
Лук



Цялата тема
ТемаАвторПубликувано
* Конкурс по програмиране "Изместване" eфp. Лyk   12.06.06 11:55
. * Re: Конкурс по програмиране "Изместване" kalitar   12.06.06 12:07
. * Re: Конкурс по програмиране "Изместване" eфp. Лyk   12.06.06 12:30
. * Re: Конкурс по програмиране "Изместване" bulcore   12.06.06 16:13
. * Re: Конкурс по програмиране "Изместване" eфp. Лyk   12.06.06 16:42
. * Re: MAT   12.06.06 17:10
. * Re: eфp. Лyk   12.06.06 17:35
. * Re: Конкурс по програмиране "Изместване" Programmerrr   13.06.06 11:39
. * Re: MAT   13.06.06 12:18
. * Re: Programmerrr   13.06.06 12:23
. * Re: DrmR   13.06.06 14:08
. * Re: eфp. Лyk   13.06.06 14:33
. * Re: Programmerrr   13.06.06 15:33
. * Re: eфp. Лyk   13.06.06 15:50
. * Re: Programmerrr   13.06.06 16:14
. * Решение на задачата eфp. Лyk   22.06.06 14:59
. * Re: Todor Balabanov   23.06.06 08:57
. * Re: Конкурс по програмиране "Изместване" w   24.06.06 00:37
. * Re: Конкурс по програмиране "Изместване" krassiholmz   24.06.06 12:53
. * и кво требе да значи изчисляване на пи до 10^6? ~!@$%^amp;*()_+   24.06.06 15:45
. * Нещо етакова: krassiholmz   25.06.06 00:37
. * Re: Нещо етакова: eфp. Лyk   25.06.06 22:51
. * Re: Нещо етакова: XaMaB2   26.06.06 18:22
. * Re: и кво требе да значи изчисляване на пи до 10^6? krassi@holmz   25.06.06 00:39
. * Re: и кво требе да значи изчисляване на пи до 10^6? ~!@$%^amp;*()_+   26.06.06 05:21
. * Re: и кво требе да значи изчисляване на пи до 10^6? krassiholmz   26.06.06 08:33
. * Re: Конкурс по програмиране "Изместване" w   25.06.06 23:02
. * Конкурс по програмиране и смях в залата eфp. Лyk   11.07.06 14:50
. * Re: Конкурс по програмиране и смях в залата wqw   11.07.06 15:01
. * Re: Конкурс по програмиране и смях в залата ceko   11.07.06 20:43
. * Re: Конкурс по програмиране и смях в залата MaтaKocмaтa   11.07.06 21:06
. * Re: Конкурс по програмиране и смях в залата ceko   11.07.06 22:42
. * Re: Конкурс по програмиране и смях в залата MaтaKocмaтa   11.07.06 23:47
. * Адвоката на Дявола eфp. Лyk   12.07.06 10:24
. * Re: Адвоката на Дявола MaтaKocмaтa   12.07.06 11:08
. * Re: Адвоката на Дявола цeko   12.07.06 11:43
. * Re: Адвоката на Дявола цeko   12.07.06 11:34
. * Re: Адвоката на Дявола kибиk   12.07.06 11:59
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2025 Dir.bg Всички права запазени.