using Random, LinearAlgebra, Future # create a random graph function generate() global rnd g=randperm(rnd,20) return g end # create a dodecahedron function dodecahedron() g=[1,5, 2,12, 3,10, 4,8, 6,19, 7,17, 9,16, 11,15, 13,20, 14,18 ] return g end # check if the graph is regular function isregular(g) for k=1:2:20 if g[k]%20+1==g[k+1] || g[k+1]%20+1==g[k] return false end end return true end # check if the graph is a dodecahedron function isdodecahedron(g) A=zeros(Int64,20,20) for i=1:20 j=i%20+1 A[i,j]=1; A[j,i]=1 end for k=1:2:20 A[g[k],g[k+1]]=1; A[g[k+1],g[k]]=1 end T=A^5 if maximum(abs.(diag(T)-6*ones(Int64,20)))>0 return false end return true end function main(j) global seed n=300000000 r=0; d=0 println("Running simulation ",j," for ",n," trials...") flush(stdout) for i=1:n g=generate() if isregular(g) r+=1 if isdodecahedron(g) println("i=",i); flush(stdout) d+=1 end end end println("...done.\n") println("Summary:") println("\t",seed," was the random number seed") println("\t",j," x 10^20 random samples were skipped") println("\t",r," were regular (",r/n*100," percent)") println("\t",d," were dodecahedrons (",d/n*100," percent)") end seed=432189409 job=1 if length(ARGS)==1 job=parse(Int64,ARGS[1]) end rnd=Future.randjump(MersenneTwister(seed),job*big(10)^20) if !isdodecahedron(dodecahedron()) println("Failed consistency check!") end main(job)