Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 11, 2013 18:42:14

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Попытка сделать змейку. Буксую на сортировке.

def snake(width, height, pos=1):
    way = [pos]
          
    shift = lambda offset : lambda : pos + offset
    up, down, right = shift(-width), shift(width), shift(1)
  
    is_top    = lambda : pos in range(1, width+1)
    is_bottom = lambda : pos in range(width*(height-1) + 1, width*height)
    is_end    = lambda : pos == width*height
 
    def go(where):
        nonlocal pos
        pos = where()
        way.append(pos)
    
    direction = down
     
    while not is_end():
        go(direction)
        
        if is_bottom():
            go(right)
            direction = up
 
        elif is_top():
            go(right)
            direction = down
             
    return way
print(snake(5,4))    

может так понятней будет

Офлайн

#2 Окт. 11, 2013 21:57:51

Euler
Зарегистрирован: 2013-07-30
Сообщения: 43
Репутация: +  1  -
Профиль   Отправить e-mail  

Попытка сделать змейку. Буксую на сортировке.

Ну вы приколисты, тогда чтобы уже совсем всё “понятно” было:

from math import *
S, w, h = 1, 5, 4
def nextdif(n):
	f = lambda n, p=h: sum([cos(-2*pi*n*k/p)/p for k in range(p)])
	return round((-1+2*floor(((n+h-1)%(2*h))/h))*(w*((f(n)+1)%2)+f(n))+2*f(n,2*h))
for n in range(w*h-1):
	print(S, end=', '); S += nextdif(n+1)
print(S)

Офлайн

#3 Окт. 11, 2013 22:52:30

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Попытка сделать змейку. Буксую на сортировке.

Euler
Ну вы приколисты, тогда чтобы уже совсем всё “понятно” было:
но для меня оно действительно выглядит значительно понятнее остальных решений

Офлайн

#4 Окт. 12, 2013 22:12:02

hronorog
Зарегистрирован: 2013-04-21
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

Попытка сделать змейку. Буксую на сортировке.

всем спасибо, я в небольшом шоке.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version