1зад. На лявата фигура е показана развива на зарче за игра .На дясната фигура е показано зарчето след сглобяването му. Кое число ще се вижда на защрихованата страна на зарчето от дясната фигура ?
а) 1
б) 5
в) 4
г) 6
Gruicho написа:Peyo ще те призная ако тая задача я решиш с pyton :p
peyo написа:Gruicho написа:Peyo ще те призная ако тая задача я решиш с pyton :p
Ok, трябва да помисля малко.
Може би следния подход:
1. Генерираме всички възможни кубове и вземаме техните развивки.
2. На тези на които развивката им съответства на лявата картинка изчисляваме всички пространествени изгледи където се виждат 3 страни.
3. На тези на които виждаме 2 и 3 така, че 3 е отляво на 2 гледаме коя е третата страна и я печатаме.
cube = [4,5,1,2,6,3]
for view in [[0,1,2],[0,2,3],[0,3,4],[0,4,1],[5,1,2],[5,2,3],[5,3,4],[5,4,1]]:
visible = [cube[i] for i in view]
for rotation in [[0,1,2],[1,2,0],[2,0,1]]:
rotated_view = [visible[j] for j in rotation]
if rotated_view[:2] == [2,3] or rotated_view[:2] == [3,2]:
print( "Found", rotated_view[2] )peyo написа:Found 1
Found 6
Имаме 2 отговора, защото не знаем дали търсим подредба 3,2 или 2,3, защото не знаем какво е дясно и какво е ляво в нашата подредба. Но със сигурност можем да твърдим, че е или 2 или 3 или и двете.
def rot_left(cube):
return tuple([ cube[i] for i in [0,2,3,4,1,5]])
def rot_up(cube):
return tuple([ cube[i] for i in [1,5,2,0,4,3]])
def search(cube, cache=set()):
if cube in cache:
return
if cube[1] == 3 and cube[2]==2:
print("Solution:", cube[0])
cache.add(cube)
search(rot_left(cube), cache)
search(rot_up(cube), cache)
search((4,5,1,2,6,3))
Гост написа:Съжалявам,не разбрах нищо от казаното от вас!
Регистрирани потребители: Davids, Google [Bot]