Enigma...

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.

Enigma...

Messagepar loicwood » Mercredi 26 Avril 2017, 15:59

Bonjour,

je souhaite représenter deux cercles concentriques : le premier avec les lettres de l'alphabet dans l'ordre, le second (à l'intérieur du premier) avec les lettres de l'alphabet dans un ordre (déterminé au hasard), ceci afin de représenter des rotors pour la machine Enigma.

Est-ce qu'il existe des commandes Pstricks qui pourraient me simplifier la vie, ou il va falloir que j'utilise GeoGebra pour construire les cercles et placer les lettres sur les cercles (de façon plus ou moins approximative...) ?

Je sais construire les cercles, je dois pouvoir tracer les segments avec GeoGebra, mais placer les lettres c'est plus compliqué (avec la rotation qui va bien)...

Merci
loicwood
Kilo-utilisateur
 
Messages: 102
Inscription: Dimanche 23 Octobre 2011, 10:24
Localisation: Souppes sur Loing
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: Enigma...

Messagepar kojak » Mercredi 26 Avril 2017, 17:09

Bonjour,

Oui c'est possible d'écrire selon une courbe choisie avec pstricks : voir pstextpath dans la doc de pstricks et/ou celle de pst-text-doc.pdf
pas d'aide par MP
kojak
Modérateur
 
Messages: 10318
Inscription: Samedi 18 Novembre 2006, 19:50
Statut actuel: Actif et salarié | Enseignant

Re: Enigma...

Messagepar marco56 » Mercredi 26 Avril 2017, 17:44

J'ai cela en magasin. Cela arrive...
Dernière édition par marco56 le Mercredi 26 Avril 2017, 17:56, édité 1 fois.
marco56
Giga-utilisateur
 
Messages: 675
Inscription: Jeudi 25 Novembre 2010, 22:10
Statut actuel: Actif et salarié | Enseignant

Re: Enigma...

Messagepar marco56 » Mercredi 26 Avril 2017, 17:55

Désolé, c'est en tikz, mais cela compile sans pb via dvi->ps :
Code: Tout sélectionner
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[francais]{babel}

\usepackage{tikz}
\usepackage{tkz-tab}

\newcounter{anninterieur}
\newcounter{annexterieur}

\newcommand{\increase}[1]{%command to increase a counter by 1 modulo 26
\ifthenelse{\arabic{#1}<26}{\addtocounter{#1}{1}}{\setcounter{#1}{1}}
}
\newcommand{\cesb}{
\begin{tikzpicture}[scale=0.4]
\setcounter{anninterieur}{10}
\setcounter{annexterieur}{13}
\draw(0,0)circle(5)circle(7)circle(9);
\foreach \x in {1,2,...,26}
{
\draw(\x*360/26:5)--(\x*360/26:9);
\node at (\x*360/26+360/26+180/26:6){\Alph{anninterieur}};
\node at (\x*360/26+360/26+180/26:8){\Alph{annexterieur}};
\increase{anninterieur}
\increase{annexterieur}
}
\end{tikzpicture}
}


\begin{document}

\begin{center}
\cesb
\end{center}

\end{document}
marco56
Giga-utilisateur
 
Messages: 675
Inscription: Jeudi 25 Novembre 2010, 22:10
Statut actuel: Actif et salarié | Enseignant

Re: Enigma...

Messagepar loicwood » Mercredi 26 Avril 2017, 20:05

Merci pour vos réponses.

J'ai essayé avec pstextpath, mais je ne sais pas comment faire pour que le texte fasse le tour entier du cercle (et que les lettres soient tournées vers l'extérieur et non l'intérieur).

Avec la solution donnée en tikz, sur l'anneau intérieur, les lettres sont également dans l'ordre alphabétique, et j'aurais voulu pouvoir les placer dans un ordre aléatoire (voire rajouter des chiffres), mais je ne sais pas comment modifier le code pour ce faire.
loicwood
Kilo-utilisateur
 
Messages: 102
Inscription: Dimanche 23 Octobre 2011, 10:24
Localisation: Souppes sur Loing
Statut actuel: Actif et salarié | Enseignant

Re: Enigma...

Messagepar rebouxo » Mercredi 26 Avril 2017, 22:01

Pour placer du texte, il faut utiliser \uput[angle](x,y){label}.
angle permet de le mettre dans la bonne direction.
\rotatebox{angle}{texte} : permet de tourner un texte.
\psrandom permet de tirer des nombres au hasard, on doit pouvoir faire le tirage des lettres, lier avec xstring, on doit pouvoir faire un tirage au hasard.

Voilà, mes deux sous.

Olivier
A line is a point that went for a walk. Paul Klee
Par solidarité, pas de MP
rebouxo
Modérateur
 
Messages: 6771
Inscription: Mercredi 15 Février 2006, 13:18
Localisation: le havre
Statut actuel: Actif et salarié | Enseignant

Re: Enigma...

Messagepar marco56 » Jeudi 27 Avril 2017, 00:22

Avec des trucs piqués sur le net, j'arrive à créer une liste aléatoire mais je n'arrive pas à la mettre en \Alph :
Code: Tout sélectionner
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[francais]{babel}

\usepackage{tikz,calc}
\usepackage{tkz-tab}
\usepackage{pgfplots}
\usepackage{pgffor}

\newcounter{anninterieur}
\newcounter{annexterieur}

\newcommand{\increase}[1]{%command to increase a counter by 1 modulo 26
\ifthenelse{\arabic{#1}<26}{\addtocounter{#1}{1}}{\setcounter{#1}{1}}
}
\newcommand{\cesb}{
\begin{tikzpicture}[scale=0.4]
\setcounter{anninterieur}{10}
\setcounter{annexterieur}{13}
\draw(0,0)circle(5)circle(7)circle(9);
\foreach \x in {1,2,...,26}
{
\draw(\x*360/26:5)--(\x*360/26:9);
\node at (\x*360/26+360/26+180/26:6){\Alph{anninterieur}};
\node at (\x*360/26+360/26+180/26:8){\Alph{annexterieur}};
\increase{anninterieur}
\increase{annexterieur}
}
\end{tikzpicture}
}


\begin{document}

\begin{center}
\cesb
\end{center}



\newcommand{\mylista}{}% reserve global name

\begin{tikzpicture}[scale=0.4]
\foreach \i in {0,...,25} {\expandafter\xdef\csname index\i\endcsname{\i}}% create indexes
\foreach \i in {0,...,25} {% randomise (last step redundant)
  \pgfmathparse{int(random(\i,25))}%
  \let\j=\pgfmathresult
  \expandafter\let\expandafter\tempa\csname index\i\endcsname
  \expandafter\let\expandafter\tempb\csname index\j\endcsname
  \global\expandafter\let\csname index\i\endcsname=\tempb
  \global\expandafter\let\csname index\j\endcsname=\tempa
}%
\xdef\mylista{\csname index0\endcsname}% create comma delimited list
\foreach \i in {1,...,25} {\xdef\mylista{\mylista, \csname index\i\endcsname}}
\end{tikzpicture}

\noindent\mylista

\begin{tikzpicture}[scale=0.3]
%\foreach \i/\j in {{1,2,3,...,25}/\mylist}
%\draw(0,\i) node{\j};

\foreach \i [count=\c,evaluate=\c as \j using {{\mylista}[\c-1]}]  in {1,...,25} {
    \draw(0,\i) node{\i \hspace*{2cm} \j};
  }
\end{tikzpicture}


\newcommand{\mylistb}{}% reserve global name


\begin{tikzpicture}{overlay}% ignore spaces
\foreach \i in {0,...,25} {\expandafter\xdef\csname index\i\endcsname{\i}}% create indexes
\foreach \i in {0,...,25} {% randomise (last step redundant)
  \pgfmathparse{int(random(\i,25))}%
  \let\j=\pgfmathresult
  \expandafter\let\expandafter\tempc\csname index\i\endcsname
  \expandafter\let\expandafter\tempd\csname index\j\endcsname
  \global\expandafter\let\csname index\i\endcsname=\tempd
  \global\expandafter\let\csname index\j\endcsname=\tempc
}%
\xdef\mylistb{\csname index0\endcsname}% create comma delimited list
\foreach \i in {1,...,25} {\xdef\mylistb{\mylistb, \csname index\i\endcsname}}%
\end{tikzpicture}

\noindent\mylistb

\end{document}


Si qqn sait le faire ? (Ce dont je ne doute pas...)
marco56
Giga-utilisateur
 
Messages: 675
Inscription: Jeudi 25 Novembre 2010, 22:10
Statut actuel: Actif et salarié | Enseignant

Re: Enigma...

Messagepar loicwood » Jeudi 27 Avril 2017, 06:11

merci de vous intéresser à mon problème.

il n'est pas obligatoire que l'ordre soit tiré au hasard, je veux juste pouvoir mettre les lettres dans l'ordre qui m'intéresse, avec un tableau des lettres (j'ai trouvé l'ordre des lettres sur les différents rotors sur WikiPedia)
loicwood
Kilo-utilisateur
 
Messages: 102
Inscription: Dimanche 23 Octobre 2011, 10:24
Localisation: Souppes sur Loing
Statut actuel: Actif et salarié | Enseignant

Re: Enigma...

Messagepar marco56 » Jeudi 27 Avril 2017, 07:17

Dans ce cas, cela va être beaucoup plus simple mais je n'aurai pas le temps aujourd'hui.
Est-ce qu'il serait possible de les avoir sous la forme :
{A, C, H, ...} ?
marco56
Giga-utilisateur
 
Messages: 675
Inscription: Jeudi 25 Novembre 2010, 22:10
Statut actuel: Actif et salarié | Enseignant

Re: Enigma...

Messagepar marco56 » Jeudi 27 Avril 2017, 13:34

Hello !
J'ai enfin réussi :
Code: Tout sélectionner
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[francais]{babel}

\usepackage{tikz,calc}
\usepackage{tkz-tab}
\usepackage{pgfplots}
\usepackage{pgffor}

\newcounter{annenigma}
%\newcounter{anninterieur}
\newcounter{annexterieur}

\newcommand{\increase}[1]{%command to increase a counter by 1 modulo 26
\ifthenelse{\arabic{#1}<26}{\addtocounter{#1}{1}}{\setcounter{#1}{1}}
}
%\newcommand{\cesb}{
%\begin{tikzpicture}[scale=0.4]
%\setcounter{anninterieur}{10}
%\setcounter{annexterieur}{13}
%\draw(0,0)circle(5)circle(7)circle(9);
%\foreach \x in {1,2,...,26}
%{
%\draw(\x*360/26:5)--(\x*360/26:9);
%\node at (\x*360/26+360/26+180/26:6){\Alph{anninterieur}};
%\node at (\x*360/26+360/26+180/26:8){\Alph{annexterieur}};
%\increase{anninterieur}
%\increase{annexterieur}
%}
%\end{tikzpicture}
%}



\begin{document}

%\begin{center}
%\cesb
%\end{center}
%
%
%
%\newcommand{\mylista}{}% reserve global name
%
%\begin{tikzpicture}[scale=0.4]
%\foreach \i in {0,...,25} {\expandafter\xdef\csname index\i\endcsname{\i}}% create indexes
%\foreach \i in {0,...,25} {% randomise (last step redundant)
%  \pgfmathparse{int(random(\i,25))}%
%  \let\j=\pgfmathresult
%  \expandafter\let\expandafter\tempa\csname index\i\endcsname
%  \expandafter\let\expandafter\tempb\csname index\j\endcsname
%  \global\expandafter\let\csname index\i\endcsname=\tempb
%  \global\expandafter\let\csname index\j\endcsname=\tempa
%}%
%\xdef\mylista{\csname index0\endcsname}% create comma delimited list
%\foreach \i in {1,...,25} {\xdef\mylista{\mylista, \csname index\i\endcsname}}
%\end{tikzpicture}
%
%\noindent\mylista
%
%\begin{tikzpicture}[scale=0.3]
%%\foreach \i/\j in {{1,2,3,...,25}/\mylist}
%%\draw(0,\i) node{\j};
%
%\foreach \i [count=\c,evaluate=\c as \j using {{\mylista}[\c-1]}]  in {1,...,25} {
%    \draw(0,\i) node{\i \hspace*{2cm} \j};
%  }
%\end{tikzpicture}
%
%
%\newcommand{\mylistb}{}% reserve global name
%
%
%\begin{tikzpicture}{overlay}% ignore spaces
%\foreach \i in {0,...,25} {\expandafter\xdef\csname index\i\endcsname{\i}}% create indexes
%\foreach \i in {0,...,25} {% randomise (last step redundant)
%  \pgfmathparse{int(random(\i,25))}%
%  \let\j=\pgfmathresult
%  \expandafter\let\expandafter\tempc\csname index\i\endcsname
%  \expandafter\let\expandafter\tempd\csname index\j\endcsname
%  \global\expandafter\let\csname index\i\endcsname=\tempd
%  \global\expandafter\let\csname index\j\endcsname=\tempc
%}%
%\xdef\mylistb{\csname index0\endcsname}% create comma delimited list
%\foreach \i in {1,...,25} {\xdef\mylistb{\mylistb, \csname index\i\endcsname}}%
%\end{tikzpicture}
%
%\noindent\mylistb
%
%\begin{tikzpicture}[scale=0.4]
%    \foreach \c [count=\x from 0] in {{A},{C},{B},{E},{G},{F}}
%        \node at (0,\x) {\x \hspace*{1cm} \c};
%\end{tikzpicture}

\begin{tikzpicture}[scale=0.4]
\setcounter{annexterieur}{13}
\draw(0,0)circle(5)circle(7)circle(9);
\foreach \c [count=\x from 0] in {{R},{A},{N},{C},{B},{E},{Q},{G},{F},{Z},{L},
{H},{K},{S},{M},{X},{J},{O},{T},{Y},{I},{U},{V},{W},{D},{P}}
{
\draw(\x*360/26:5)--(\x*360/26:9);
\node at (\x*360/26+360/26+180/26:6){\c};
\node at (\x*360/26+360/26+180/26:8){\Alph{annexterieur}};
\increase{annexterieur}
}
\end{tikzpicture}


\end{document}

J'ai laissé tous mes essais pour y comprendre qqchose.
marco56
Giga-utilisateur
 
Messages: 675
Inscription: Jeudi 25 Novembre 2010, 22:10
Statut actuel: Actif et salarié | Enseignant

Re: Enigma...

Messagepar loicwood » Jeudi 27 Avril 2017, 20:03

Génial, merci beaucoup !!!

Je dois pouvoir me débrouiller pour rajouter un rotor. Quelle est la partie du code qui donne les angles, je voudrais mettre le A extérieur en haut.

Est-il possible de mettre de la couleur ?
loicwood
Kilo-utilisateur
 
Messages: 102
Inscription: Dimanche 23 Octobre 2011, 10:24
Localisation: Souppes sur Loing
Statut actuel: Actif et salarié | Enseignant

Re: Enigma...

Messagepar marco56 » Jeudi 27 Avril 2017, 22:49

Pour la position de A, c'est :
Code: Tout sélectionner
\setcounter{annexterieur}{13}

Pour la couleur et autres, tout est possible mais je te laisse le soin de te pencher sur le pb.
Tu fais un cours sur la crypto ?
marco56
Giga-utilisateur
 
Messages: 675
Inscription: Jeudi 25 Novembre 2010, 22:10
Statut actuel: Actif et salarié | Enseignant

Re: Enigma...

Messagepar loicwood » Vendredi 28 Avril 2017, 06:04

D'accord merci pour la position de A.

je suppose qu'il y a une doc aussi fournie pour tikz que pour pstricks, donc je devrais trouver mon bonheur.

Pas vraiment un cours... J'entraîne quelques élèves à décrypter des messages, et Enigma est intéressante (mais en simplifiant beaucoup, donc je me contente des rotors). Et surtout, je m'amuse beaucoup !
loicwood
Kilo-utilisateur
 
Messages: 102
Inscription: Dimanche 23 Octobre 2011, 10:24
Localisation: Souppes sur Loing
Statut actuel: Actif et salarié | Enseignant

Re: Enigma...

Messagepar marco56 » Vendredi 28 Avril 2017, 06:39

La doc de tikz est conséquente (Tikz pour l'Impatient par exemple).
Je fais de la crypto (légère) mais je me suis limité à des choses assez simples :
César et Vigenère notamment, d'où mes anneaux.
Je précise que ce n'est pas moi qui ai fait le code... (je préfère également pstricks).
marco56
Giga-utilisateur
 
Messages: 675
Inscription: Jeudi 25 Novembre 2010, 22:10
Statut actuel: Actif et salarié | Enseignant

Re: Enigma...

Messagepar loicwood » Vendredi 28 Avril 2017, 08:12

Merci pour le nom de la doc

J'ai préparé quelques codes avec le chiffrement ADFGVX, et quelques grilles. Et je vais tester pour Enigma.

Ça me permet de programmer un peu en Python également
loicwood
Kilo-utilisateur
 
Messages: 102
Inscription: Dimanche 23 Octobre 2011, 10:24
Localisation: Souppes sur Loing
Statut actuel: Actif et salarié | Enseignant

Re: Enigma...

Messagepar marco56 » Vendredi 28 Avril 2017, 12:23

On peut peut-être mettre en commun des doc. Je fais également du python.
Tu peux me contacter en mp si cela t'intéresse.
marco56
Giga-utilisateur
 
Messages: 675
Inscription: Jeudi 25 Novembre 2010, 22:10
Statut actuel: Actif et salarié | Enseignant

Re: Enigma...

Messagepar rebouxo » Vendredi 28 Avril 2017, 15:50

La doc de TiKz est énorme : 1161 pages, rien de comparable avec TiKz pour l'impatient.
Par contre elle est relativement pédagogue.

Pour ce genre de projet, il me semble qu'il serait intéressant de regarder du côté de processing : langage à destination des graphistes et artistes, visibles dans un navigateur WEB.
Olivier : utilisateur occasionnel de TiKz, ex-utilisateur de psticks et qui s'éclate avec asymptote.
D'ailleurs, si tu peux faire une image, j'essayerais de le faire en asymptote.
A line is a point that went for a walk. Paul Klee
Par solidarité, pas de MP
rebouxo
Modérateur
 
Messages: 6771
Inscription: Mercredi 15 Février 2006, 13:18
Localisation: le havre
Statut actuel: Actif et salarié | Enseignant

Re: Enigma...

Messagepar marco56 » Vendredi 28 Avril 2017, 16:00

Voici l'image.
Fichiers joints
enigma.pdf
(7.56 Kio) Téléchargé 32 fois
marco56
Giga-utilisateur
 
Messages: 675
Inscription: Jeudi 25 Novembre 2010, 22:10
Statut actuel: Actif et salarié | Enseignant

Re: Enigma...

Messagepar loicwood » Vendredi 28 Avril 2017, 17:32

J'ai réussi à mettre des couleurs.

C'est peut-être possible également de faire ce genre de dessin en HTML5 avec Canvas
loicwood
Kilo-utilisateur
 
Messages: 102
Inscription: Dimanche 23 Octobre 2011, 10:24
Localisation: Souppes sur Loing
Statut actuel: Actif et salarié | Enseignant

Re: Enigma...

Messagepar marco56 » Samedi 29 Avril 2017, 11:51

N'hésite pas à poster tes améliorations, cela peut servir à tout le monde.
marco56
Giga-utilisateur
 
Messages: 675
Inscription: Jeudi 25 Novembre 2010, 22:10
Statut actuel: Actif et salarié | Enseignant

Suivante

Retourner vers LaTeX

Qui est en ligne

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