• [^] # Re: Mode triche on

    Posté par (Mastodon) . En réponse au message Avent du Code, jour 22. Évalué à 4.

    faces = " 12 3 56 4 " # positions des faces du d6 dans mon input, mis en ligne
    smax = cubesize - 1
    for row in range(totalsize):
     for col in range(totalsize):
     c = board2[row][col]
     if c == " ":
     continue
     color = {".": "Blue", "#": "Gray", "<": "White", ">": "White", "v": "White", "^": "White"}[c]
     face = faces[(col//cubesize) + (row//cubesize) * 4]
     a, b = col % cubesize, row % cubesize
     if face == "1":
     x, y, z, X, Y, Z = a, b, smax + 1, 1, 1, .01
     elif face == "2":
     x, y, z, X, Y, Z = smax + 1, b, smax - a, .01, 1, 1
     elif face == "3":
     x, y, z, X, Y, Z = a, 0, smax - b, 1, .01, 1
     elif face == "4":
     x, y, z, X, Y, Z = b, smax + 1, smax - a, 1, .01, 1
     elif face == "5":
     x, y, z, X, Y, Z = 0, smax - b, smax - a, .01, 1, 1
     elif face == "6":
     x, y, z, X, Y, Z = a, smax - b, 0, 1, 1, .01
     print(f"color(\"{color}\") translate([{x},{y},{z}]) cube([{X},{Y},{Z}]);")

    Le switch de 1 à 6 applique les rotations, et déplacements en 3D pour poser la surface de la face du cube sur la face du cube 3D, j'ai dû inverser des trucs à des endroits.
    C'est sous optimisé pour de l'openScad, mais j'ai fait ça rapidement, on génère tout de même 15000 objets (50x50x6), ça le perturbe pas beaucoup cela dit !

    Le fichier scad est xzippé ici : aoc-2022-22-01.scad.xz

    Et OpenScad se trouve dans toutes les bonnes crémeries de logiciels libres ;)

    • Yth.