# Deux problèmes de programmation proposés par pourexemple # http://www.les-mathematiques.net/phorum/read.php?12,1364120,1364944 # testé compatible Julia 0.7 import Base.* mutable struct affinite a::Int b::Int end *(x::affinite,y::affinite)=affinite(y.a*x.a,y.a*x.b+y.b) code(x::affinite,n)=((x.a-1)%n)*n+(x.b)%n+1 identite=affinite(1,0) n=5 N=n*(n-1) m=zeros(UInt128,N,N) #m=zeros(N,N) f=affinite(3,1) g=affinite(2,0) for a=1:n-1 for b=0:n z=affinite(a,b) m[code(z,n),code(z*f,n)]=1 m[code(z,n),code(z*g,n)]=1 end end print("On considère le graphe de Cailey du groupe affine sur F_5 engendré par x->2x et x->3x+1\n") print("On part de l'identité.\n") print("Nombre de chemins de longueur 100 ne repassant pas par l'identité\n") v=copy(m) v[1:N,code(identite,n)].=0 r=v^100 resultat=sum(r[1,1:N]) print(resultat,"\n") print("Nombre de chemins de longueur 100 ne passant par aucune translation, excepté l'identité\n") v=copy(m) for i=1:n-1 v[1:N,code(affinite(1,i),n)].=0 end r=v^100 resultat=sum(r[1,1:N]) print(resultat,"\n")