[Résolu] Algorithme d'Euclide

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.

Modérateur: gdm_tex

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

Re: Gras et maths

Messagepar GMaths » Lundi 03 Janvier 2011, 19:13

Francky a écrit:@GM : tu peux la mettre quand même, je suis curieux


f98c90d2adddb9ab5b13c1764662abc8.png

Code: Tout sélectionner
unitsize(1cm);
void pgcd(int a, int b){
int a_=abs(a), b_=abs(b), r=a_;
pen[] p={red,blue,green,pink,.5yellow}; p.cyclic=true;
int k=0;
while (r>0)
{
frame f;
r=a_%b_;
label(f,string(a_),(0,0),2NW,p[k-1]);
label(f,string(b_),(0,0),2NE,p[k]);
label(f,string(r),(0,0),2SW,p[k+1]);
label(f,string(floor(a_/b_)),(0,0),2SE);
draw(f,(0,max(f).y)--(0,min(f).y)^^(0,0)--(max(f).x,0));
a_=b_;
b_=r;
add(f, truepoint(E), 20E);
++k;
}
label(format("\fbox{Le PGCD est le dernier reste non nul, \`a savoir : %i.}",a_),truepoint(S),2S,red);
}
pgcd(1025,719);


J'ai mis de la couleur plutôt que des flèches... car elles se croiseraient... et c'est plus simple.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: Gras et maths

Messagepar Francky » Lundi 03 Janvier 2011, 19:36

@GM, c'est beau.
Je ne vois qu'un défaut : ça sent l'overfullbox si on bourinne sur les entiers,
ce qui n'arrive pas au secondaire évidement, où ces couleurs seront bien appréciées.
--
c'est HS, mais c'est quoi truepoint*, car c'est le crux qui me (nous) manquait (avec Romain, je pense) pour bricoler les boîtes.
Merci d'avance.
* je pourrais chercher, mais je ne l'ai jamais croisé, donc, je fais le flemmard pour ce coup.
Linux Mint | TeXLive - TexMaker - asymptote | Python3 & C - Geany - Project Euler - SPOJ
Entia non sunt multiplicanda praeter necessitatem
Francky
Giga-utilisateur
 
Messages: 683
Inscription: Dimanche 11 Avril 2010, 13:01
Statut actuel: Actif et salarié | Enseignant

Re: Gras et maths

Messagepar GMaths » Lundi 03 Janvier 2011, 19:42

Francky a écrit:Je ne vois qu'un défaut : ça sent l'overfullbox si on bourinne sur les entiers

Je ne comprends pas ce que tu veux dire.

Francky a écrit:c'est HS, mais c'est quoi truepoint*, car c'est le crux qui me (nous) manquait (avec Romain, je pense) pour bricoler les boîtes.

En gros : cela permet d'aller chercher le bord de picture dans une direction donnée, à une instant t de la construction, en prenant en compte les labels.
En gros... car c'est plus subtil que cela : voir 4 figures ici.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Gras et maths

Messagepar un bon petit » Lundi 03 Janvier 2011, 19:52

Francky a écrit:1] je vais mettre des \num{.} de siunitx pour un affichage correct en cas de grands entier,
et ça va être difficile car j'ai du mal à mettre en gras avec \num. (d'où le premier post du fil !!!)

Oui, ou numprint que je préfère....
Francky a écrit:2] je pense que les espaces* du tableau de sont pas parfaits, mais là, ça semble être un boulot pour pg
(ce que j'ai tenté ressemble à une bidouille infâme)
* : entre les | et les nombres, et puis de part et d'autre de chaque tableau.

Je ne savais pas que pg était spécialiste dans les espacements et s'il l'est, comment saura t-il les espacements qui te conviennent ?
ceci dit, il suffit de modifier \arraycolsep
Francky a écrit:3] ajouter une option : le matériel intermédiaire entre deux tableaux : [\quad], [, puis] ou un stretch pour remplir la ligne.
Je devrait y arriver.

Un truc comme ça donc. Je te laisse peaufiner le bestiau car j'ai l'impression que ça ne va pas encore aller :oops: :
Code: Tout sélectionner
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[autolanguage]{numprint}
\usepackage[frenchb]{babel}
\makeatletter
\newcount\@quotient
\newcommand\algeuclide[3][\hfill]{%
   \noindent\def\inter@div{#1}\let\inter@@div\@empty
   \ifnum#3>#2
      \def\next{\@lgeuclide{#3}{#2}}%
   \else
      \def\next{\@lgeuclide{#2}{#3}}
   \fi\next}
\newcommand\@lgeuclide[2]{%
   \ifnum#2>\z@
      \inter@@div
      \@quotient#1
      \divide\@quotient#2
      \edef\next{\number\numexpr#1-\@quotient*#2}%
      $\begin{array}{r|l}\numprint{#1}&\mathbf{\numprint{#2}}\\\cline{2-2}\mathbf{\numprint\next}&\numprint{\number\@quotient}\end{array}$%
      \edef\next{\noexpand\@lgeuclide{#2}{\next}}%
      \let\inter@@div\inter@div
      \expandafter\next
   \else
      \smallbreak Le PGCD est #1.%
   \fi}
\makeatother
\begin{document}
\arraycolsep3pt
\algeuclide{850}{325}
\medskip

\algeuclide[, puis]{1600}{420}
\end{document}
Dernière édition par un bon petit le Lundi 03 Janvier 2011, 19:54, édité 2 fois.
un bon petit
Giga-utilisateur
 
Messages: 638
Inscription: Vendredi 12 Juin 2009, 21:35
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Re: [Résolu] Algorithme d'Euclide

Messagepar Francky » Lundi 03 Janvier 2011, 19:52

Je voulais dire que si tu demandes le pgcd d'entiers très grands, tu auras une ligne très longue de division, et dans un texte, ça va finir dans la marge, coupé ! Mais pas dans le secondaire, on est d'accord, on ne prends que des petits entiers !

--
Pour truepoint, en effet, il faut regarder à tête reposé.
--
Au passage, ton lien me donne une nouvelle présentation très jolie, alors que l'accès traditionnel (marris.org/asymptote , puis milieu) donne l'ancienne.
Je sais pas si c'est normal, je t'informe. Beau boulot en tout cas.
EDIT : je viens de voir le lien figure en haut à droite !!! Je ne sais pas depuis combien de temps il est là, tout est OK. Je le découvre.
C'est nickel.
Dernière édition par Francky le Lundi 03 Janvier 2011, 20:08, édité 1 fois.
Linux Mint | TeXLive - TexMaker - asymptote | Python3 & C - Geany - Project Euler - SPOJ
Entia non sunt multiplicanda praeter necessitatem
Francky
Giga-utilisateur
 
Messages: 683
Inscription: Dimanche 11 Avril 2010, 13:01
Statut actuel: Actif et salarié | Enseignant

Re: Gras et maths

Messagepar Francky » Lundi 03 Janvier 2011, 20:05

un bon petit a écrit: Un truc comme ça donc. Je te laisse peaufiner le bestiau car j'ai l'imprzession que ça ne va pas encore aller :oops: :

Arrête, c'est super.
Pour numprint, j'ai l'impression que je peu l'utiliser en complément de siunitx (que j'aime beaucoup).


Donc, c'est résolu. Et doublement. Merci à tous.
Linux Mint | TeXLive - TexMaker - asymptote | Python3 & C - Geany - Project Euler - SPOJ
Entia non sunt multiplicanda praeter necessitatem
Francky
Giga-utilisateur
 
Messages: 683
Inscription: Dimanche 11 Avril 2010, 13:01
Statut actuel: Actif et salarié | Enseignant

Re: [Résolu] Algorithme d'Euclide

Messagepar GMaths » Lundi 03 Janvier 2011, 20:12

Francky a écrit:Je voulais dire que si tu demandes le pgcd d'entiers très grands, tu auras une ligne très longue de division, et dans un texte, ça va finir dans la marge, coupé ! Mais pas dans le secondaire, on est d'accord, on ne prends que des petits entiers !

J'espère que tu ne doutes pas qu'il y a une solution pour gérer un retour à la la ligne.

Francky a écrit:Au passage, ton lien me donne une nouvelle présentation très jolie, alors que l'accès traditionnel (marris.org/asymptote , puis milieu) donne l'ancienne.
Je sais pas si c'est normal, je t'informe. Beau boulot en tout cas.


Cela existe depuis toujours (sous réserve que le navigateur aime le code javascript en question) : dans chaque galerie, il y a un lien "liste des figures" qui déroule une liste où on peut cliquer sur les figures... mais si tu cliques sur "liste des figures", on obtient une page avec les figures uniquement.

Image
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Résolu] Algorithme d'Euclide

Messagepar Francky » Lundi 03 Janvier 2011, 20:26

Merci GM, j'ai édité mon post plus haut, je viens en effet de découvrir ce bouton liste de figures.
Linux Mint | TeXLive - TexMaker - asymptote | Python3 & C - Geany - Project Euler - SPOJ
Entia non sunt multiplicanda praeter necessitatem
Francky
Giga-utilisateur
 
Messages: 683
Inscription: Dimanche 11 Avril 2010, 13:01
Statut actuel: Actif et salarié | Enseignant

Re: [Résolu] Algorithme d'Euclide

Messagepar Francky » Lundi 03 Janvier 2011, 22:17

Je veux pas faire mon pénible, mais voilà, c'est qu'il manque d'espace entre les lignes en cas de double ligne. (problème H)

Je me suis permis de modifier un peu :
- j'ai rendu le \enspace\hfil obligatoire en plus de l'argument optionnel [, puis] par exemple, j'ai trouvé ça bien (et j'ai réussi à le faire)
- j'ai mis le résultat dans une boîte, je ne voulais pas de césure dans le résultat - détail - boîte sur la même ligne si possible. et avec un hfill (2) final
- j'ai mis une réglure, mais je sais pas si c'est comme cela qu'il faut faire pour régler le problème H.
Code: Tout sélectionner
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[autolanguage]{numprint}
\usepackage[frenchb]{babel}
\makeatletter
\newcount\@quotient
\newcommand\algeuclide[3][]{%
   \noindent\def\inter@div{#1\enspace\hfil}\let\inter@@div\@empty
   \ifnum#3>#2
      \def\next{\@lgeuclide{#3}{#2}}%
   \else
      \def\next{\@lgeuclide{#2}{#3}}
   \fi\next}
\newcommand\@lgeuclide[2]{%
   \ifnum#2>\z@
      \inter@@div
      \@quotient#1
      \divide\@quotient#2
      \edef\next{\number\numexpr#1-\@quotient*#2}%
      \rule[-3.5ex]{0pt}{7ex}%
      $\begin{array}{r|l}%
      \numprint{#1}&\mathbf{\numprint{#2}}\\%
      \cline{2-2}\mathbf{\numprint\next}&\numprint{\number\@quotient}\end{array}$%
      \edef\next{\noexpand\@lgeuclide{#2}{\next}}%
      \let\inter@@div\inter@div
      \expandafter\next
   \else
      \quad\mbox{Le PGCD est #1.}\hfill%
   \fi}
\makeatother
\begin{document}
\hrule
\arraycolsep3pt
On a :\algeuclide{489854506}{74325}
\medskip

\algeuclide[, puis]{1600}{420}

%\medskip
\algeuclide{1600}{420}

\hrule

\medskip
AAAAAAaaaaaaaa

AAAAAAaaaaaaaa
\end{document}

Est-ce correct ?
J'espère ne pas paraître trop pénible.
Linux Mint | TeXLive - TexMaker - asymptote | Python3 & C - Geany - Project Euler - SPOJ
Entia non sunt multiplicanda praeter necessitatem
Francky
Giga-utilisateur
 
Messages: 683
Inscription: Dimanche 11 Avril 2010, 13:01
Statut actuel: Actif et salarié | Enseignant

Précédente

Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Bing [Bot], DotBot [Crawler], Google [Bot], Proximic [Spider], Yahoo [Bot] et 17 invités