__repr__ d'une lambda double array

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour à tous, je suis en train d'exploiter un code d'AlphaZeta vraiment pas mal pour générer le terrain, et voulant pas me faire chi.. avec des conditions à ralonge de 400 blocs, je pass par un for. Or Zeta a utilisé une class à laquelle on fournit une lambda de double array. Et moi je cherche à obtenir cet array. Mais ce code ne me donne que : <function lambda at …>

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
class Structure:
    structures = []

    def __init__(self, pattern, base, cond=lambda: True):
        self.pattern = pattern
        self.base = base
        self.cond = cond

        Structure.structures.append(self)

    def substitute(self, x, y):
        base_x, base_y = self.base
        get_absolute = lambda rel_x, rel_y: (x+rel_x, y+rel_y)
        get_relative_from_base = lambda abs_x, abs_y: (abs_x-base_x, abs_y-base_y)

        block_dict = {}
        for iy, line in enumerate(self.pattern()):
            for ix, block in enumerate(line):
                if block is not None:
                    block = Block.from_id[block]
                    abs_pos = get_absolute(*get_relative_from_base(ix, iy))
                    block_dict[abs_pos] = block
        return block_dict.items()

    def __repr__(self):
        return self.pattern


TREE = Structure(
    lambda: [
        [None, None, None, 6   , 6   , 6   , 6   , None, None, None],
        [None, 6   , 6   , 6   , 6   , 6   , 6   , 6   , 6   , 6   ],
        [6   , 6   , 6   , 6   , 6   , 6   , 6   , 6   , 6   , 6   ],
        [6   , 6   , 6   , 6   , 6   , 6   , 6   , 6   , 6   , 6   ],
        [6   , 6   , 6   , 6   , 6   , 6   , 6   , 6   , 6   , 6   ],
        [None, None, 6   , 6   , 6   , 6   , 6   , 6   , None, None],
        [None, None, None, None, 5   , 5   , 5   , None, None, None],
        [None, None, None, None, 5   , 5   , None, None, None, None],
        [None, None, None, None, 5   , 5   , None, None, None, None],
        [None, None, None, None, 5   , 5   , None, None, None, None],
        [None, None, None, None, 5   , 5   , None, None, None, None]
    ],
    base=(4, 10),
    cond=condition.TREE
)

je vous ai mis l'arbre en exemple avec moi j'aimerai pouvoir faire :

1
TREE.__repr__()

et que cela me retourne le double array.

merci de votre aide :D

edit : parfois je suis bete, exposer mon probleme m'aide et là ca m'a bien aidé (et j'espere que d'autres auront ce probleme et passeront par ici) ligne 26, dans la class structure : return self.pattern() désolé du post inutile

Édité par anonyme

+1 -0

Mais… Qu'est-ce que tu fais à mon code ? ;d

Pourquoi t'as besoin d'avoir la double array ?

Structure.substitute te permet d'obtenir les coordonnées absolues d'un bloc depuis une base, regard mon gentest.py dans le repo GitHub, le Structure.pattern n'est pas utile dans ton code (il ne l'est que dans le mien ^^).

Anciennement AlphaZeta

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte