Fonction ZZ dans Sage

Bonjour
J'essaye de traduire un code Sage en R. J'ai cette fonction Sage :
prime_colour = lambda x, c : x[0][ int(ZZ(c).is_prime()) ]
Je ne sais pas ce que fait ZZ(c). Ici c est un nombre décimal. Est-ce que ZZ(c) retourne l'entier le plus proche de c, ou un truc comme ça ? Ensuite j'imagine que int(true) = 1 et int(false) = 0.

Réponses

  • Normalement, Sage est fourni avec de la documentation et help(ZZ) devrait te donner une réponse au top.
    Algebraic symbols are used when you do not know what you are talking about.
            -- Schnoebelen, Philippe
  • Mais je n'ai pas installé Sage.
  • https://doc.sagemath.org/html/en/reference/rings_standard/sage/rings/integer_ring.html
    ZZ n’est pas une fonction mais une classe, ZZ(truc) appelle le constructeur de la classe ZZ en lui donnant truc comme argument. En clair, ça tente de convertir truc en un entier.
    Algebraic symbols are used when you do not know what you are talking about.
            -- Schnoebelen, Philippe
  • Anéfé, et si truc n'est pas entier (par exemple 0.5), ça génère une exception :
    TypeError: Attempt to coerce non-integral RealNumber to Integer
    
  • Hmm bizarre je pensais que c pouvait être décimal. Voilà le truc que je convertis en R. Je n'ai pas encore fait la gestion des couleurs, donc pas encore utilisé ZZ, mais sinon ça marche :-) Merci pour l'aide !94208
  • Bonjour,

    Tu pourrais nous monter le code Sage en entier ?

    Cordialement,

    Rescassol
  • @Rescassol: j'ai mis le lien (clique sur "le truc" dans mon post précédent).
  • Bonjour,

    Merci Saturne, mais je n'ai pas su en extraire ce code pour le regarder sans utiliser Sage.

    Cordialement,

    Rescassol
  • Sauf si j'ai raté quelque chose, la ligne comportant ZZ n'est pas utilisée. J'ai pu lancer le :
    gaussian_coords_20 = precompute_circles( -1, 20, 0.5, 1 )  # Precompute up to curvature 20, in a window extending +/- 0.5 horizontally, +/- 1 vertically around the origin
    gaussian_circs_20 = filter_circles_circular( -1, gaussian_coords_20, 1, 20, 0, 1/2, 0.25 )  # ask for curvs 1 through 20, inside circle ctrd at (0,1/2) with radius 0.25
    black_gaussian_doiley = circle_picture( gaussian_circs_20 )  # default style is for black circles
    black_gaussian_doiley.show( axes=False )  # show with no axes
    
    et le
    coloured_gaussian_doiley = circle_picture(
        gaussian_circs_20,
        circle_colour_scheme=modular_colour,
        circle_colour_parameter_list = [colour_pool, [4, 1, 0]])
    coloured_gaussian_doiley.show( axes=False )
    
    dans un sage qui tourne localement après avoir remplacé les ^ par ** ainsi que
    for s in range(s_lower, xmax*curvature_bound):
    
    par
    for s in range(s_lower, int(xmax*curvature_bound)):
    
    (peut-être fallait-il arrondir à l'entier le plus proche, mais ça a l'air de marcher ainsi). Ensuite, si l'on commente :
    prime_colour = lambda x, c : x[0][ int(ZZ(c).is_prime()) ]  # Two-colours (first two of some scheme)
    
    ça marche encore, vu que ce code n'est pas utilisé par la partie que j'ai testée (cela dit, comme il y a plusieurs morceaux sur le site, il est peut-être utilisé ailleurs...).

    Edit : les résultats sont certes jolis, mais différents de ce qu'a fourni Saturne et qu'on voit sur le site, même avec round() au lieu de int(), donc il faut peut-être changer d'autres choses.
  • Si, j'ai les mêmes résultats maintenant que j'ai géré les couleurs. Terrible ce truc. Mais je ne comprends rien à comment ça marche.
    Le truc avec ZZ est utilisé dans un exemple : "Gaussian Mandala: Primality of Curvatures".94226
    94228
  • Et hopla je l'ai programmé avec Asymptote maintenant. Super rapide, et la qualité y est !94272
    zzz.png 854.8K
  • Bonsoir,

    Ça y est,quand j'ouvre la page, je n'ai rien, mais si je la rafraîchis, le code apparaît, je vais pouvoir avancer, il suffisait de le savoir.

    Cordialement,

    Rescassol
  • Et hop, en voici un en JavaScript, avec la librairie paper.js (terrifique).94866
Connectez-vous ou Inscrivez-vous pour répondre.