Triangle de Pascal B) Modulo et Sierpiński

Description

Bonjour,

En se basant sur le triangle de Pascal modulo un nombre (tp[i] % m), on peut obtenir des représentations graphiques intéressantes.
Les figures produites ressemblent aux triangles de Sierpiński.

Définissons le triangle de Pascal à l'aide d'une structure:
struct TP {
  uint N,K=0,M;
  uint *tp,*md;

  TP(uint nL,uint m) {
    N=nL; K=(nL+1)*(nL+2)/2; M=m;
    tp=new uint[K]; md=new uint[K];
    tp[0]=tp[1]=tp[2]=1;
    for (uint n=2,i=0,I,k=3; n<=N; ++n) {
      tp[k++]=1;
      for (I=(i++)+n; i<I; ++i) tp[k++]=tp[i]+tp[i+1];
      tp[k++]=1;
    }
    for (uint k=0; k<K; ++k) md[k]=tp[k]%m;
  }

  ~TP() {if (K) {delete tp, delete md;}}

  void Print() {
    printf_s("Triangle de Pascal: N=%u, Modulo %u",N,M);
    for (uint n=0,k=0; n<=N; ++n) {
      printf_s("n%2u:",n);
      for (uint i=0; i<=n; ++i) printf_s(" %u",md[k++]);
    }
  }

  void Print2() {
    printf_s("Triangle de Pascal: N=%u, Modulo %u",N,M);
    for (uint n=0,k=0; n<=N; ++n) {
      printf_s("n%2u:",n);
      for (uint i=0; i<=n; ++i) printf_s("%c",md[k++]?'#':' ');
    }
  }
};
On y calcule également les coefficients modulo m.

Premier test, modulo 2 (pair/impair):
Avec Print(), l'"aspect Sierpiński" ne se remarque pas très bien.
Par contre, avec Print2(), l'effet est bien visible.

<Résultat de TrianglePascal_B.cpp:
Triangle de Pascal: N=31, Modulo 2
 0: 1
 1: 1 1
 2: 1 0 1
 3: 1 1 1 1
 4: 1 0 0 0 1
 5: 1 1 0 0 1 1
 6: 1 0 1 0 1 0 1
 7: 1 1 1 1 1 1 1 1
 8: 1 0 0 0 0 0 0 0 1
 9: 1 1 0 0 0 0 0 0 1 1
10: 1 0 1 0 0 0 0 0 1 0 1
11: 1 1 1 1 0 0 0 0 1 1 1 1
12: 1 0 0 0 1 0 0 0 1 0 0 0 1
13: 1 1 0 0 1 1 0 0 1 1 0 0 1 1
14: 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
15: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
16: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
17: 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
18: 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1
19: 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1
20: 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1
21: 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1
22: 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1
23: 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
24: 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1
25: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1
26: 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1
27: 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
28: 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1
29: 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
30: 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
31: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Triangle de Pascal: N=63, Modulo 2
 0:#
 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:##  ##  ##  ##                  ##  ##  ##  ##
46:# # # # # # # #                 # # # # # # # #
47:################                ################
48:#               #               #               #
49:##              ##              ##              ##
50:# #             # #             # #             # #
51:####            ####            ####            ####
52:#   #           #   #           #   #           #   #
53:##  ##          ##  ##          ##  ##          ##  ##
54:# # # #         # # # #         # # # #         # # # #
55:########        ########        ########        ########
56:#       #       #       #       #       #       #       #
57:##      ##      ##      ##      ##      ##      ##      ##
58:# #     # #     # #     # #     # #     # #     # #     # #
59:####    ####    ####    ####    ####    ####    ####    ####
60:#   #   #   #   #   #   #   #   #   #   #   #   #   #   #   #
61:##  ##  ##  ##  ##  ##  ##  ##  ##  ##  ##  ##  ##  ##  ##  ##
62:# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
63:################################################################


Prochainement, nous allons en améliorer l'aspect graphique.

Bonne lecture ...
 
 

Liens

WikipédiA: Triangle de Pascal
WikipédiA: Triangle de Sierpiński

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.