Aller au contenu
zigzagmat

Matrice ZigZag

Une matrice \(n\times n\) dite « ZigZag » est remplie d’entiers consécutifs (commençant à 1 par exemple) de telle sorte que le premier entier est placé en haut à gauche. […]

Théorème de Zeckendorf

Ce théorème stipule que tout nombre entier positif peut s’écrire de façon unique comme somme d’entiers, tous différents, figurant dans la suite de Fibonacci, où ces entiers : sont tous […]

Suite de Syracuse

La suite de Syracuse est bien connue : on part d’un entier strictement positif. S’il est pair, on le divise par 2 et s’il est impair, on le multiplie par […]

Le package listofitems

Un nouveau package, tiens… Ça faisait longtemps ! Il répond au doux nom de listofitems et il fait suite à une correspondance assez soutenue que j’ai eue avec Steven B. Segletes. En effet, Steven a publié le package getargs sur le CTAN le 22 mai 2016. Par simple curiosité (et connaissant un peu la façon de coder de l’individu, j’avoue), j’ai été voir le code et j’en suis ressorti carrément refroidi ! Le code est buggué et il manque des fonctionnalités, ce que j’ai immédiatement signalé à Steven. Au fil de presque 3 mois d’échanges d’email, j’ai donc écrit un package ressemblant à getargs, mais n’ayant pas ses travers. Continuer la lecture

pi_x_1

Tracer la fonction π(x)

Suite à une nouvelle question sur tex.stackexchange.com, poursuivons sur la lancée des nombres premiers et demandons-nous à présent comme tracer la fonction \(\pi(x)\) qui, lorsque \(x\) est entier, représente le nombre d’entiers premiers inférieurs ou égaux à \(x\).

Avant d’envisager tout tracé, il faut élaborer un test qui décide si un nombre est premier ou pas. Une multitude de tests existent, dont la complexité asymptotique va de l’exponentielle au polynomial. Nous n’irons pas bien loin dans les valeurs de \(x\), il est donc inutile de programmer très élaboré. Une approche naïve suffira amplement. Continuer la lecture

coprime_annonce

Entiers premiers entre-eux

Une question amusante a vu le jour sur tex.stackexchange.com : il s’agit de représenter sur une grille carrée de dimension les couples (<a> ; <b>) de nombres premiers entre-eux (coprime, en anglais) : pour ce faire, le pixel de coordonnées  (<a> ; <b>) est affiché si PGCD(a ; b)=1.

Bien sûr, la solution la plus immédiate est de faire appel à tikz ou sa sous-couche pgfplot et c’est d’ailleurs ce qui a été fait, malgré une certaine lenteur. Juste pour voir la différence de vitesse, j’ai codé en quelques minutes l’équivalent en TeX pur.

Pour marquer tous les couples d’entiers premiers entre-eux dans la grille de dimensions (200 ; 200), il faut environ 1,25 seconde sur mon PC. La même chose demande environ 17,5 secondes à tikz, ce qui le rend 14 fois plus lent ! Et oui, tikz se traîne grave, vous ne le saviez pas ? Continuer la lecture

loop

Boucle \for à syntaxe souple

De nombreuses boucles de type for ont été écrites, la plus célèbre est \foreach de l’extension pgffor qui a de très nombreuses fonctionnalités dont les principales sont :

  • itérer une variable sur un ou plusieurs intervalles avec choix du pas ;
  • itérer plusieurs variables simultanément.

Les inconvénients sont connus :

  • l’exécution d’une boucle se déroule dans un groupe ;
  • il n’est pas possible de choisir la syntaxe des variables itérées qui doivent être séparées les unes des autres par /.

Continuer la lecture

maze_4

Construire un labyrinthe

La génération d’un labyrinthe n’est pas une chose bien difficile en programmation. En fait, un labyrinthe est un tableau de cellules séparées par des murs. Tout l’art consiste à abattre certains murs pour obtenir un labyrinthe. Comme l’explique wikipédia, il existe deux algorithmes principaux pour générer un labyrinthe parfait. Nous utiliserons ici celui par « exploration exhaustive ». Continuer la lecture