Compare commits
2 Commits
894ea1502f
...
1fea329d28
Author | SHA1 | Date | |
---|---|---|---|
1fea329d28 | |||
d752c5bacc |
153
1-ComputationAndData/3ComputationAndData.html
Normal file
153
1-ComputationAndData/3ComputationAndData.html
Normal file
@@ -0,0 +1,153 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<title>3ComputationAndData.html</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<h1>Calculer en théorie et en pratique I/III</h1>
|
||||||
|
|
||||||
|
<p>Dans la prochaine séquence de cours, nous allons tenter de répondre à la question suivante.</p>
|
||||||
|
|
||||||
|
<p>C'est quoi un ordinateur?</p>
|
||||||
|
|
||||||
|
<p>Cette question s'apparente à celle que ce sont posés philosophes et mathématiciens de Leibnitz à Turing en passant par Hilbert.</p>
|
||||||
|
|
||||||
|
<p>Qu'est-ce qu'une question à laquelle on peut répondre de manière mécanique par un calcul?</p>
|
||||||
|
|
||||||
|
<p>Nous allons explorer rapidement ce sujet en évoquant à la fois des modèles théoriques et des explication sur l'architecture matérielle et le fonctionnement d'ordinateurs modernes.</p>
|
||||||
|
|
||||||
|
<h2>Calcul Matériel.</h2>
|
||||||
|
|
||||||
|
<p>Initialement, les "computer" sont des humains, qui s'aident de divers mécanisme pour faire des calculs rapidement en essayant de faire le moins d'erreurs possibles, par exemple avec un boulier ou des cordes nouées. </p>
|
||||||
|
|
||||||
|
<p>Les premières machines à calculer sont mécaniques et peuvent être discrètes (nombre fini de position avec par exemple des roues crantées) ou continues (position continue sur un astrolabe ou une table à tracer pour calculer des intégrales). </p>
|
||||||
|
|
||||||
|
<p>Les machines modernes possèdent différents composants electroniques et ce sont les transistors qui permettent de passer d'une information analogique/continue </p>
|
||||||
|
|
||||||
|
<blockquote>
|
||||||
|
<p>quelle est la puissance du courant?</p>
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
|
<p>à une information discrète, oui ou non, qu'on peut interpréter comme 0 ou 1.</p>
|
||||||
|
|
||||||
|
<blockquote>
|
||||||
|
<p>est-ce-que le courant dépasse un certain seuil?</p>
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
|
<p>On peut à l'aide de quelques composants de base faire des calculs sur ces valeurs 0 ou 1. On parle alors de calcul Booléen (du nom du logicien Boole).</p>
|
||||||
|
|
||||||
|
<h3>circuit booléen</h3>
|
||||||
|
|
||||||
|
<p>consiste en
|
||||||
|
1. des entrées contenant des valeurs booléennes.
|
||||||
|
1. des portes logiques permettant de calculer
|
||||||
|
* le ET binaire (&)
|
||||||
|
* le OU binaire (v)
|
||||||
|
* la négation NON unaire (-)
|
||||||
|
1. des "cables" pour relier ces portes
|
||||||
|
1. des sorties correspondant à la sortie du calcul.</p>
|
||||||
|
|
||||||
|
<p>Au tableau
|
||||||
|
* table du ET
|
||||||
|
* table du OU
|
||||||
|
* table du NON</p>
|
||||||
|
|
||||||
|
<h3>exercices</h3>
|
||||||
|
|
||||||
|
<ol>
|
||||||
|
<li>Écrire la table de Non de x ou y.</li>
|
||||||
|
<li>Décrire un circuit permettant de tester si deux entrée x et y sont égales.
|
||||||
|
Le circuit doit renvoyer 1 si c'est le cas et 0 sinon.
|
||||||
|
NB. on peut noter cette opération <-> ou </li>
|
||||||
|
<li>Même question pour le circuit qui permet de calculer le XOR (Ou eXclusif).</li>
|
||||||
|
<li>Même question pour le circuit permettant de calculer la majorité de trois arguments</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<h3>Digression : le schéma de chiffrement de Vernam</h3>
|
||||||
|
|
||||||
|
<p>Il s'agit d'un schéma très simple et incassable à moins de connaître la clé secrète.
|
||||||
|
L'inconvénient est qu'il faut fabriquer et partager avec son destinataire une clé secrète aussi longue que le message. On parle aussi de "one time pad" en anglais.</p>
|
||||||
|
|
||||||
|
<p>Pendant la seconde guerre mondiale, à Bletchley Park, des opératrices fabriquaient de telles clés mais en quantité trop réduite. Une tentative de mécanisation pour pallier à ce soucis a permis de générer des clés rapidement mais qui avaient une différence avec les véritables clés.</p>
|
||||||
|
|
||||||
|
<blockquote>
|
||||||
|
<p>"Enoch, why are you . . . here?"</p>
|
||||||
|
|
||||||
|
<p>"Oh. I am here, in a larger sense, because Mrs. Tenney, the vicar’s wife, has become sloppy, and forgot>ten to close her eyes when she takes the balls out of the bingo machine."</p>
|
||||||
|
|
||||||
|
<p>Neal Stephenson. Cryptonomicon.</p>
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
|
<p><a href="https://crypto.stackexchange.com/questions/25214/has-human-generated-entropy-ever-been-a-real-problem">Discussion sur stackexchange</a></p>
|
||||||
|
|
||||||
|
<p>Nous allons mettre en oeuvre ce chiffrement.
|
||||||
|
1. Tout d'abord le message à chiffrer M, qu'on suppose encodable en ASCII est transformé en un séquence de 0 et de 1 qu'on note B.
|
||||||
|
1. La clé secrète S est une série de 0 et de 1 de même longueur.
|
||||||
|
1. On additionne "modulo 2" B à S pour obtenir le message chiffré C (c'est le XOR de tout à l'heure).
|
||||||
|
1. On transmet le message chiffré C au destinataire.
|
||||||
|
1. La destinataire reçoit C.
|
||||||
|
1. Pour décoder, elle procède de même mais à l'envers.
|
||||||
|
* ajout de S à C
|
||||||
|
* découpage en bloc de 7 bits
|
||||||
|
* décodage ASCII</p>
|
||||||
|
|
||||||
|
<p><a href="https://fr.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange">page du code ASCII</a></p>
|
||||||
|
|
||||||
|
<p>NB. pour faire plus proche de la réalité, on préfixe le code ASCII d'un 0 pour obtenir un octet.</p>
|
||||||
|
|
||||||
|
<h3>exercice</h3>
|
||||||
|
|
||||||
|
<p>Nous allons mettre en oeuvre ce chiffrement pour le mot BINGO.
|
||||||
|
Fabriquez au préalable une clé de la taille adapté
|
||||||
|
(vous pouvez par exemple tirer à pile ou face successivement). </p>
|
||||||
|
|
||||||
|
<p>Pour simplifier, vous pouvez le faire avec OK.</p>
|
||||||
|
|
||||||
|
<p>Réfléchissez à une mise en oeuvre pratique sur papier.</p>
|
||||||
|
|
||||||
|
<h2>Retour à nos circuits.</h2>
|
||||||
|
|
||||||
|
<p>Nous allons maintenant mettre en oeuvre des circuits pour faire des opérations arithmétiques.</p>
|
||||||
|
|
||||||
|
<ol>
|
||||||
|
<li>Même question pour un circuit qui réalise une somme "modulo 2"
|
||||||
|
NB. c'est le chiffrement de Vernam.</li>
|
||||||
|
<li>Même question pour un circuit qui réalise une somme en binaire.
|
||||||
|
Pour ce second circuit on s'autorise une porte de duplication notée D qui prend en entrée x et a deux sorties valant toutes deux x.</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<h3>Indication.</h3>
|
||||||
|
|
||||||
|
<p>Pour rappel en binaire 1+1 vaut 10; 1+0 comme 0+1 valent 1; et, 0+0 vaut 0.</p>
|
||||||
|
|
||||||
|
<p><strong>Exemple</strong>
|
||||||
|
```
|
||||||
|
0110</p>
|
||||||
|
|
||||||
|
<h1>0111</h1>
|
||||||
|
|
||||||
|
<p>...1
|
||||||
|
..01 retenue 1
|
||||||
|
.101 retenue 1
|
||||||
|
1101 Fin
|
||||||
|
```</p>
|
||||||
|
|
||||||
|
<h3>Indication 2</h3>
|
||||||
|
|
||||||
|
<p>2 questions rhétoriques :</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Comment faire la retenue?</li>
|
||||||
|
<li>Comment calcule la somme dans la même colonne?</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
88
1-ComputationAndData/JFLAP/NDFAaabcc.jff
Normal file
88
1-ComputationAndData/JFLAP/NDFAaabcc.jff
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!--Created with JFLAP 7.1.--><structure>
|
||||||
|
<type>fa</type>
|
||||||
|
<automaton>
|
||||||
|
<!--The list of states.-->
|
||||||
|
<state id="0" name="q0">
|
||||||
|
<x>417.0</x>
|
||||||
|
<y>289.0</y>
|
||||||
|
<initial/>
|
||||||
|
</state>
|
||||||
|
<state id="1" name="q1">
|
||||||
|
<x>616.0</x>
|
||||||
|
<y>259.0</y>
|
||||||
|
</state>
|
||||||
|
<state id="2" name="q2">
|
||||||
|
<x>736.0</x>
|
||||||
|
<y>256.0</y>
|
||||||
|
</state>
|
||||||
|
<state id="3" name="q3">
|
||||||
|
<x>741.0</x>
|
||||||
|
<y>341.0</y>
|
||||||
|
</state>
|
||||||
|
<state id="4" name="q4">
|
||||||
|
<x>625.0</x>
|
||||||
|
<y>342.0</y>
|
||||||
|
</state>
|
||||||
|
<state id="5" name="q5">
|
||||||
|
<x>510.0</x>
|
||||||
|
<y>403.0</y>
|
||||||
|
<final/>
|
||||||
|
</state>
|
||||||
|
<!--The list of transitions.-->
|
||||||
|
<transition>
|
||||||
|
<from>0</from>
|
||||||
|
<to>0</to>
|
||||||
|
<read>a</read>
|
||||||
|
</transition>
|
||||||
|
<transition>
|
||||||
|
<from>5</from>
|
||||||
|
<to>5</to>
|
||||||
|
<read>a</read>
|
||||||
|
</transition>
|
||||||
|
<transition>
|
||||||
|
<from>0</from>
|
||||||
|
<to>0</to>
|
||||||
|
<read>b</read>
|
||||||
|
</transition>
|
||||||
|
<transition>
|
||||||
|
<from>5</from>
|
||||||
|
<to>5</to>
|
||||||
|
<read>b</read>
|
||||||
|
</transition>
|
||||||
|
<transition>
|
||||||
|
<from>0</from>
|
||||||
|
<to>0</to>
|
||||||
|
<read>c</read>
|
||||||
|
</transition>
|
||||||
|
<transition>
|
||||||
|
<from>5</from>
|
||||||
|
<to>5</to>
|
||||||
|
<read>c</read>
|
||||||
|
</transition>
|
||||||
|
<transition>
|
||||||
|
<from>3</from>
|
||||||
|
<to>4</to>
|
||||||
|
<read>c</read>
|
||||||
|
</transition>
|
||||||
|
<transition>
|
||||||
|
<from>0</from>
|
||||||
|
<to>1</to>
|
||||||
|
<read>a</read>
|
||||||
|
</transition>
|
||||||
|
<transition>
|
||||||
|
<from>1</from>
|
||||||
|
<to>2</to>
|
||||||
|
<read>a</read>
|
||||||
|
</transition>
|
||||||
|
<transition>
|
||||||
|
<from>2</from>
|
||||||
|
<to>3</to>
|
||||||
|
<read>b</read>
|
||||||
|
</transition>
|
||||||
|
<transition>
|
||||||
|
<from>4</from>
|
||||||
|
<to>5</to>
|
||||||
|
<read>c</read>
|
||||||
|
</transition>
|
||||||
|
</automaton>
|
||||||
|
</structure>
|
Binary file not shown.
@@ -1,11 +1,142 @@
|
|||||||
Cours de Florent.
|
|
||||||
|
|
||||||
# Information Theory / Brevet
|
# Information Theory / Brevet
|
||||||
|
|
||||||
|
Dans cette partie du cours, nous nous intéressons à la protection juridique de travail ou d'invention en lien avec l'informatique.
|
||||||
|
|
||||||
## Point rapide de Droit
|
## Licences.
|
||||||
|
|
||||||
|
Nous avons déjà abordé rapidement l'existence de divers licences originales pour protéger un programme informatique qui sont le dual des licences avec copy-right et sont dites copy-left.
|
||||||
|
|
||||||
|
Un aspect central consiste à demander à pouvoir disposer des sources du code sous licence et à autoriser sa réutilisation et les changements ultérieurs de celui-ci.
|
||||||
|
|
||||||
|
Le mouvement autour du logiciel libre s'officialise en particulier avec la création du free software foundation (FSF) aux états-unis en 1985, qui propose la licence GPL (General Public License).
|
||||||
|
|
||||||
|
* (GNU GPL)[https://en.wikipedia.org/wiki/GNU_General_Public_License]
|
||||||
|
|
||||||
|
Le noyaux Linux est traditionnellement protégé par cette licence GPL.
|
||||||
|
|
||||||
|
D'autres système d'exploitation libres basés sur unix, comme FreeBSD sont protégés par leur propre licence (licence BSD) plus permissive pour une intégration avec du lociel non-libre.
|
||||||
|
|
||||||
|
Il existe de facto un foisonnement de licences plus ou moins libres au sens qu'elles sont plus ou moins copy-left. La FSF elle-même propose une version plus permissive de sa licence GPL, particulièrement adaptée pour des librairies qui pourraient être compatibles avec des logiciels pourtant sous licence copy-right.
|
||||||
|
|
||||||
|
* (GNU Lesser GPL)[https://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License]
|
||||||
|
|
||||||
|
En France, une licence libre est proposée par plusieurs organismes de recherche.
|
||||||
|
|
||||||
|
* (CeCILL)[https://fr.wikipedia.org/wiki/Licence_CeCILL]
|
||||||
|
|
||||||
|
De manière générale, le militantisme tel que porté par la FSF trouve un terreau assez fertile dans de nombreuses universités dans les département d'informatique, ce qui va contribuer à faire évoluer les mentalités dans l'industrie assez rapidement.
|
||||||
|
* (Foisonnement de licences)[https://en.wikipedia.org/wiki/Free-software_license]
|
||||||
|
|
||||||
|
Un autre aspect plus restreint consiste à promouvoir des API ouvertes.
|
||||||
|
Une APi consiste à promouvoir la modularité et à documenter la manière d'interagir avec un composant, sans pour autant nécessairement rendre open source ce composant.
|
||||||
|
* (API)[https://en.wikipedia.org/wiki/API]
|
||||||
|
* (open API)[https://en.wikipedia.org/wiki/Open_API]
|
||||||
|
|
||||||
|
Un précurseur en terme d'API ouverte est par exemple la norme POSIX pour les systèmes unix en 1988 (en fait un standard pour unix).
|
||||||
|
|
||||||
|
L'archétype de l'entreprise initialement totalement opposée à la culture du logicel libre et de la transparence est Microsoft qui va pendant toutes les années 90 continuer à s'appuyer sur un copyright traditionnel, des sources non disponibles, deslogiciels qu'il faut acheter, et un système d'API peu documenté qui rend très difficile de faire un logiciel pour le système d'exploitation windows pour une entreprise tierce. En particulier, Microsoft a tout fait pour entraver l'adoption de standard du web et pour favoriser son propre navigateur Internet Explorer. L'entreprise a même poussé le vice jusqu'à faire semblant de suivre des standards en construction pour mieux les saborder (Embrace, extend and extinguish).
|
||||||
|
|
||||||
|
* (Monopole)[https://en.wikipedia.org/wiki/Microsoft_litigation]
|
||||||
|
* (Saborder les standards)[https://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguish]
|
||||||
|
* (le jeu XBill)[https://en.wikipedia.org/wiki/XBill]
|
||||||
|
|
||||||
|
On assiste in fine à une transformation de la manière dont les gros projet logiciels sont vendus et organisées depuis des logiciels des années 1980/90 comme ceux vendus par une entreprise comme Microsoft avec une industrie qui va s'approprier certaines pratiques promus par la mouvance du logiciel libre.
|
||||||
|
|
||||||
|
Par exemple, en 1998, Netscape entame le projet open source Mozilla et livre le code de son browser Netscape sous licence GPL. C'est ce projet qui distribue Firefox.
|
||||||
|
|
||||||
|
En 2001, même Microsoft fini par ouvrir les sources de son système d'exploitation.
|
||||||
|
|
||||||
|
* (Shared Source Initiative)[https://en.wikipedia.org/wiki/Shared_Source_Initiative]
|
||||||
|
|
||||||
|
En 2001, Apple propose Mac OS X qui est basé sur FreeBSD (sous Apple Public Source License); et, en 2005, Android alors racheté par Google développe son système d'exploitation basé sur linux (sous licence Apache) avec initialement une réimplémentation plus ou moins partielle de l'API du langage java.
|
||||||
|
|
||||||
|
Ceci n'a pas empêché les mastodontes d'abuser de leur position dominante sous couvert de veiller à la sécurité de leurs usagers et à la qualité des produits de prélever des frais fixe de 30 pour cent (apple store, google play)
|
||||||
|
|
||||||
|
Le fait que Android soit open source permet par exemple de réaliser des forks qui permettent une meilleure protection des données personnelles.
|
||||||
|
|
||||||
|
*(CalyxOS)[https://en.wikipedia.org/wiki/CalyxOS]
|
||||||
|
*(custom Android OS)[https://en.wikipedia.org/wiki/List_of_custom_Android_distributions]
|
||||||
|
|
||||||
|
Quelques affaires.
|
||||||
|
|
||||||
|
*(google vs Oracle)[https://en.wikipedia.org/wiki/Google_LLC_v._Oracle_America,_Inc]
|
||||||
|
* (Epic Game vs Apple)[https://en.wikipedia.org/wiki/Epic_Games_v._Apple]
|
||||||
|
* (Epic Game vs Google)[https://en.wikipedia.org/wiki/Epic_Games_v._Google]
|
||||||
|
|
||||||
|
|
||||||
|
## Patent in the US.
|
||||||
|
|
||||||
|
Aux états-unis, on peut déposer un brevet sur un algorithme (avec un contenu mathématique important et novateur ou pas).
|
||||||
|
|
||||||
|
Exemples de 3 brevets.
|
||||||
|
1. LZW compression et le format GIF
|
||||||
|
2. RSA Public Key encryption
|
||||||
|
3. Amazon One click Shopping
|
||||||
|
|
||||||
|
Nous avons déjà évoqué l'algorithme de compression LZW et son lien avec le format GIF.
|
||||||
|
|
||||||
|
Un autre exemple intéressant est le travail sur la crypto à clé publique avec RSA (papier en 76, RSA est l'initiale des trois auteurs, brevet en 1983) et peu d'alternatives pendant plusieurs années. RSA était utilisé au début des années 90 dans le programme PGP (pretty good privacy) ainsi que dans des protocoles comme SSL ou SSH.
|
||||||
|
|
||||||
|
Un exemple qui peut sembler un peu plus ridicule est l'achat en un clic d'amazon (plutôt pour se défendre de ces concurrents directs à l'époque dans la vente en ligne de livres), la demande est rejettée en 2007 pour un brevet européen (pas original) et au Canada (effet physique).
|
||||||
|
|
||||||
|
|
||||||
|
* (source un peu datée mais intéressante vieux projet à Stanford en 2000)[https://cs.stanford.edu/people/eroberts/courses/cs181/projects/1999-00/software-patents/]
|
||||||
|
|
||||||
|
* (one click)[https://en.wikipedia.org/wiki/1-Click]
|
||||||
|
|
||||||
|
Les trois brevets discutés dans cette section sont disponibles sur le git.
|
||||||
|
|
||||||
|
* (brevet Compression LZW US)[../Brevets/BrevetsHistoriques/US_4558302_A.pdf]
|
||||||
|
* (brevet RSA US)[../Brevets/BrevetsHistoriques/US4405829.pdf]
|
||||||
|
* (brevet One click US)[../Brevets/BrevetsHistoriques/US5960411.pdf]
|
||||||
|
|
||||||
|
Un peu d'histoire des brevets aux US avec les évolutions en particulier politique lorsque l'administration Clinton nomme à la tête de l'USPTO un ancien lobbyiste de l'industrie du logiciel.
|
||||||
|
|
||||||
|
* (software patent in the US)[https://en.wikipedia.org/wiki/Software_patents_under_United_States_patent_law]
|
||||||
|
|
||||||
|
## Brevets en Europe
|
||||||
|
|
||||||
|
Il y a une différence fondamentale entre le droit aux US et en Europe qui limite plus lourdement la brevetabilité d'un algorithme.
|
||||||
|
|
||||||
|
|
||||||
|
En France, depuis 2007, c'est la convention sur le brevet Européen (CBE) et ces directives qui sont applicables.
|
||||||
|
* (intro vulgarisée)[https://www.epo.org/fr/news-events/in-focus/ict/hardware-and-software]
|
||||||
|
|
||||||
|
En général en europe, on peut poser un brevet sur n'importe quelle technologie (article 52) à condition d'avoir 3 ingrédients : être novateur (détails à l'article 53), ne pas être évident (détails à l'article 56), être susceptible d'une application industrielle (détails à l'article 57).
|
||||||
|
|
||||||
|
Il y toutefois des exceptions. En particulier l'Article 52.2.a stipule qu'on ne peut pas poser un brevet sur
|
||||||
|
|
||||||
|
> les découvertes, les théories scientifiques et les méthodes mathématiques".
|
||||||
|
|
||||||
|
* (Article 52)[https://www.epo.org/fr/legal/epc/2020/a52.html]
|
||||||
|
|
||||||
|
On ne peut pas non plus poser de brevet sur du code qui lui relève du droit d'auteur.
|
||||||
|
|
||||||
|
Au final il semble qu'un ingrédient typique permettant de poser un brevet sur une idée informatique consiste à l'expliquer dans un contexte physique.
|
||||||
|
Par exemple de la compression dans le cadre d'un usage en télécommunication, de la cryptographie embarqué, ou encore de l'indexation dans le cadre d'un cache.
|
||||||
|
|
||||||
|
Dans les directives il faut plus spécifiquement regarder les articles en lien avec une invention mise en oeuvre par ordinateur (IMO, en anglais et en allemand CII).
|
||||||
|
La définition est reproduite ci-dessous.
|
||||||
|
|
||||||
|
> Une invention mise en œuvre par ordinateur (IMO) est une invention qui implique l'utilisation d'un ordinateur,
|
||||||
|
> d'un réseau informatique ou d'un autre appareil programmable et dont une ou plusieurs caractéristiques sont
|
||||||
|
> réalisées totalement ou en partie par un programme d'ordinateur.
|
||||||
|
|
||||||
|
> A computer-implemented invention (CII) is one which involves the use of a computer,
|
||||||
|
> computer network or other programmable apparatus, where one or more features
|
||||||
|
> are realised wholly or partly by means of a computer program.
|
||||||
|
|
||||||
|
Pour plus de détails une annexe propose
|
||||||
|
* (index IMO)[https://www.epo.org/fr/legal/guidelines-epc/2024/j.html#]
|
||||||
|
|
||||||
|
## Stratégie pour permettre de poser un brevet sur un algorithme
|
||||||
|
|
||||||
|
De manière générale, il est intéressant de mettre en avant la stratégie permettant de poser un brevet sur un algorithme.
|
||||||
|
|
||||||
|
Un aspect très fréquent semble consister à mettre en avant les aspects matériels.
|
||||||
|
|
||||||
|
Une autre technique consiste à rendre l'algorithme tellement flou qu'on peut mettre en avant d'autres aspects.
|
||||||
|
|
||||||
TO DO.
|
|
||||||
|
|
||||||
## Recherche de Brevets
|
## Recherche de Brevets
|
||||||
|
|
||||||
@@ -14,24 +145,25 @@ Exemples de sites pour trouver des brevets :
|
|||||||
* (en local)[../Brevets/]
|
* (en local)[../Brevets/]
|
||||||
* (inpi)[https://data.inpi.fr/recherche_avancee/brevets?advancedSearch=%257B%2522checkboxes%2522%253A%257B%2522bases_choice%2522%253A%257B%2522order%2522%253A0%252C%2522searchField%2522%253A%255B%2522origin%2522%255D%252C%2522values%2522%253A%255B%257B%2522value%2522%253A%2522FR%2522%252C%2522checked%2522%253Atrue%257D%252C%257B%2522value%2522%253A%2522CCP%2522%252C%2522checked%2522%253Atrue%257D%252C%257B%2522value%2522%253A%2522EP%2522%252C%2522checked%2522%253Atrue%257D%252C%257B%2522value%2522%253A%2522WO%2522%252C%2522checked%2522%253Atrue%257D%255D%257D%257D%252C%2522texts%2522%253A%257B%2522cpc%2522%253A%257B%2522order%2522%253A5%252C%2522searchField%2522%253A%255B%2522patentClassifications.classificationSymbol%2522%255D%252C%2522checkedSearchField%2522%253A%255B%255D%252C%2522value%2522%253A%2522H03M%25207%252F40%2522%257D%257D%252C%2522multipleSelects%2522%253A%257B%257D%252C%2522dates%2522%253A%257B%257D%257D]
|
* (inpi)[https://data.inpi.fr/recherche_avancee/brevets?advancedSearch=%257B%2522checkboxes%2522%253A%257B%2522bases_choice%2522%253A%257B%2522order%2522%253A0%252C%2522searchField%2522%253A%255B%2522origin%2522%255D%252C%2522values%2522%253A%255B%257B%2522value%2522%253A%2522FR%2522%252C%2522checked%2522%253Atrue%257D%252C%257B%2522value%2522%253A%2522CCP%2522%252C%2522checked%2522%253Atrue%257D%252C%257B%2522value%2522%253A%2522EP%2522%252C%2522checked%2522%253Atrue%257D%252C%257B%2522value%2522%253A%2522WO%2522%252C%2522checked%2522%253Atrue%257D%255D%257D%257D%252C%2522texts%2522%253A%257B%2522cpc%2522%253A%257B%2522order%2522%253A5%252C%2522searchField%2522%253A%255B%2522patentClassifications.classificationSymbol%2522%255D%252C%2522checkedSearchField%2522%253A%255B%255D%252C%2522value%2522%253A%2522H03M%25207%252F40%2522%257D%257D%252C%2522multipleSelects%2522%253A%257B%257D%252C%2522dates%2522%253A%257B%257D%257D]
|
||||||
* (recherche par code CDC)[https://worldwide.espacenet.com/classification?locale=fr_EP#!/CPC=H03M7/00]
|
* (recherche par code CDC)[https://worldwide.espacenet.com/classification?locale=fr_EP#!/CPC=H03M7/00]
|
||||||
|
* (google patent)[https://patents.google.com/]
|
||||||
|
|
||||||
|
## Exercice de compréhension et restitution d'un brevet
|
||||||
|
|
||||||
## Exercice de compréhension et restitution d'un brevet (pour les M1DN)
|
objectif : lire un brevet avec un aspect technique qui présente un contenu algorithmique. Le restituer en vulgarisant les aspects techniques et en mettant en avant.
|
||||||
|
|
||||||
objectif : lire un brevet avec un aspect technique, qui présente au moins un algorithme.
|
Soit dans la liste présenté, soit un de votre choix mais à faire valider par mes soins avant.
|
||||||
|
|
||||||
Soit dans la liste présenté, soit un de votre choix mais à faire vazlider par mes soins avant.
|
* restitution devantr un jury composé de Florent et Maïté
|
||||||
|
* 15 minutes environ par groupe
|
||||||
* restitution le 25 mars.
|
|
||||||
* 15 minutes environ pare groupe
|
|
||||||
* groupe de 2 ou 3
|
* groupe de 2 ou 3
|
||||||
* Préparer un support de présentation de 3 à 5 pages maximum : e.g. 1 page pour présenter le brevet très rapidement, 1 ou 2 pages pour présenter tout ou partie de l'aspect algorithmique (un ou plusieurs dessins du brevet, ou des versions simplifiées), 1 ou 2 pages pour parler plutôt de votre perception en temps que juriste. Si l'algorithme est très complioqué, vous pouvez présenter grossièrement l'algorithme général puis zoomer sur un point particulier.
|
* Préparer un support de présentation de 3 à 5 pages maximum : e.g. 1 page pour présenter le brevet très rapidement, 1 ou 2 pages pour présenter tout ou partie de l'aspect algorithmique (un ou plusieurs dessins du brevet, ou des versions simplifiées), 1 ou 2 pages pour parler plutôt de votre perception en temps que juriste. Si l'algorithme est très compliqué, vous pouvez présenter grossièrement l'algorithme général puis zoomer sur un point particulier.
|
||||||
|
|
||||||
Notation. Bienveillante. L'important est de faire l'exercice et de voir à quoi ressemble un brevet sur un sujet technique car ceci pourrait vous concerner dans votre travail à court ou moyen terme.
|
Notation. Bienveillante.
|
||||||
|
|
||||||
|
L'important est de faire l'exercice et de voir à quoi ressemble un brevet sur un sujet technique car ceci pourrait vous concerner dans votre travail à court ou moyen terme.
|
||||||
|
|
||||||
Autre aspect. Expliquer de manière vulgarisée un algorithme.
|
Autre aspect. Expliquer de manière vulgarisée un algorithme.
|
||||||
|
|
||||||
|
|
||||||
Cas d'usage qu'on ne verra pas pour aller au delà de l'exercice.
|
Cas d'usage qu'on ne verra pas pour aller au delà de l'exercice.
|
||||||
* une équipe technique souhaite poser un brevet.
|
* une équipe technique souhaite poser un brevet.
|
||||||
* Vous devez faire une étude préliminaire pour leur dire si c'est intéressant ou bien si il y a déjà des idées similaires trop proches qui sont déposées.
|
* Vous devez faire une étude préliminaire pour leur dire si c'est intéressant ou bien si il y a déjà des idées similaires trop proches qui sont déposées.
|
||||||
@@ -39,4 +171,3 @@ Cas d'usage qu'on ne verra pas pour aller au delà de l'exercice.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
67
3-GrapheSocial/4CM-M2TNT-Choix-social.html
Normal file
67
3-GrapheSocial/4CM-M2TNT-Choix-social.html
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
<h1 id="théorie-du-choix-social">Théorie du choix social</h1>
|
||||||
|
<p>M2 TNT Graphe social</p>
|
||||||
|
<p>## introduction.</p>
|
||||||
|
<p>Derrière le mot “voter” se cache un corpus vaste.</p>
|
||||||
|
<p>En tant que politiste vous avez probablement une sensibilité naturelle à la question, et vous n’êtes pas sans savoir que même si c’est un <a href="https://www.elections.interieur.gouv.fr/comprendre-elections/pourquoi-je-vote/limportance-du-droit-de-vote">droit fondamental en France</a>, les problèmes de représentativité réel ou perçus peuvent <a href="https://fr.wikipedia.org/wiki/Abstention_%C3%A9lectorale_en_France">détourner les électeurs des urnes</a>.</p>
|
||||||
|
<p>On peut s’intéresser à l’usage et au fonctionnement de <a href="https://en.wikipedia.org/wiki/Voting_machine">machines electroniques</a> voir de machines mécaniques, y compris avec un élément de hasard <a href="https://en.wikipedia.org/wiki/Kleroterion">déjà en usage en grèce antique</a>. Ces machines influencent d’ailleurs le langage comme dans l’expression anglaise <a href="https://en.wikipedia.org/wiki/Blackballing">blackballing</a>.</p>
|
||||||
|
<p>De manière générale la <a href="https://en.wikipedia.org/wiki/Electoral_fraud">fraude</a> présente dans un système classique sur papier, est encore possible voir encore plus prévalente dans un système de vote dématérialisé. L’acceptabilité du résultat de l’élection est également influencé par la capacité de vérifier le résultat facilement. Une procédure claire standardisée <a href="https://mobile.interieur.gouv.fr/Archives/Archives-elections/Comment-voter/Fonctionnement-d-un-bureau-de-vote">comme employée en France</a> offre de nombreux avantages. Le taux d’erreur d’une telle procédure manuelle n’est pas forcément plus mauvais d’ailleurs qu’un recomptage automatisé, même si dans le second cas une fraude est peut-être plus simple à organiser.</p>
|
||||||
|
<p>Il existe tout de même des procotoles permettant aux électeurs de vérifier la présence de leur bulletin tout en préservant une certaine anonymité. * <a href="https://en.wikipedia.org/wiki/End-to-end_auditable_voting_systems">reçus et résistance aux manipulations</a> Ce genre de méthode est proposé par exemple dans un service gratuit de l’INRIA. * <a href="https://www.belenios.org/howitworks.html">électronique et en ligne</a></p>
|
||||||
|
<p>Dans ce cours, je souhaite faire un pas de côté et me concentrer sur l’aspect purement mathématique de la méthode utilisée pour désigner un choix collectif à partir des choix individuels des citoyens. En effet, on peut considérer des systèmes de vote et les comparer en s’intéressant à ces systèmes en tant qu’objet d’étude mathématique. On peut proposer divers propriétés souhaitables d’un système de vote pour le bon fonctionnement d’une démocratie et indiquer pour chaque système de vote s’il satistait ou non une propriété souhaitable. Cette approche remonte aux alentours de la révolution française, quand des mathématiciens comme Condorcet et Borda ont montré les défauts du système de vote majoritaire et proposé des méthodes concurrentes pour y remédier.</p>
|
||||||
|
<p>On verra en particulier un <a href="https://fr.wikipedia.org/wiki/Th%C3%A9or%C3%A8me_d%27impossibilit%C3%A9_d%27Arrow">théorème dû à Arrow</a> publié en 1950 qui value à Arrow de recevoir le prix Nobel d’économie en 1972. Ce résultat appartient à un champs d’étude pluridisciplinaire, la <a href="https://fr.wikipedia.org/wiki/Th%C3%A9orie_du_choix_social">théorie du choix social</a>. On discutera si le temps le permet des variantes de ce théorème.</p>
|
||||||
|
<h2 id="flashback-le-paradoxe-de-condorcet">Flashback : Le paradoxe de Condorcet</h2>
|
||||||
|
<p>Condorcet remarque qu’on peut parfois obtenir si on a 3 alternatives (A, B et C), et plusieurs choix “rationnels” et “transitifs” exprimés (les individus classent A, B et C strictement), un résultat qui n’est pas transitif si on utilise la majorité pour comparer 2 à 2 des éléments parmi A,B,C en terme de choix “consensuel global”.</p>
|
||||||
|
<p>Exemple tiré de la page wikipedia du <a href="https://fr.wikipedia.org/wiki/Paradoxe_de_Condorcet">paradoxe de Condorcet</a></p>
|
||||||
|
<p>Considérons par exemple une assemblée de 60 votants ayant le choix entre trois propositions A, B et C. Les préférences se répartissent ainsi (en notant A > B, le fait que A est préféré à B) :</p>
|
||||||
|
<pre><code> 23 votants préfèrent : A > B > C
|
||||||
|
17 votants préfèrent : B > C > A
|
||||||
|
2 votants préfèrent : B > A > C
|
||||||
|
10 votants préfèrent : C > A > B
|
||||||
|
8 votants préfèrent : C > B > A</code></pre>
|
||||||
|
<p>Dans les comparaisons majoritaires par paires, on obtient :</p>
|
||||||
|
<pre><code> 33 préfèrent A > B contre 27 pour B > A
|
||||||
|
42 préfèrent B > C contre 18 pour C > B
|
||||||
|
35 préfèrent C > A contre 25 pour A > C</code></pre>
|
||||||
|
<p>Ce qui conduit à la contradiction interne A > B > C > A .</p>
|
||||||
|
<p>Quand ce paradoxe ne se produit pas, Condorcet propose d’élire ce vainqueur.</p>
|
||||||
|
<h2 id="théorème-darrow">Théorème d’Arrow</h2>
|
||||||
|
<p>Ce résultat vient confirmer l’intuition de Condorcet et démontrer que l’on ne peut pas dès qu’on a au moins 3 alternatives proposer de système de vote qui permette de garantir 3 propriétrés simultanées pourtant en apparence fortement souhaitables.</p>
|
||||||
|
<p>Il s’agit donc d’un résultat d’<strong>impossibilité</strong>.</p>
|
||||||
|
<p>On part d’une collection de préférences des individus. (En pratique beaucoup plus d’électeurs que d’alternatives). Une <strong>fonction de choix social</strong> est une fonction d’aggrégat qui à partir des préférences individuelles va construire une préférence collective.</p>
|
||||||
|
<p>Les propriétés. * universalité. La fonction de choix totale est toujours définie et n’utilise pas de hasard (elle est déterministe, si on “reconte” alores les résultat est le même). * pas de dictateur. * unanimité (optimum de Pareto) : si tout le monde a une préférence alors l’agrégat également. * indépendances des options non pertinentes ;</p>
|
||||||
|
<p>Cette dernière propriété n’est pas spécialement la plus facile à expliquer. Sa <a href="https://en.wikipedia.org/wiki/Independence_of_irrelevant_alternatives">page wikipedia anglaise</a> présente une histoire humoristique qui donne une première intuition.</p>
|
||||||
|
<blockquote>
|
||||||
|
<p>Morgenbesser, ordering dessert, is told by a waitress that he can choose between blueberry or apple pie. He orders apple. Soon the waitress comes back and explains cherry pie is also an option. Morgenbesser replies “In that case, I’ll have blueberry.”</p>
|
||||||
|
</blockquote>
|
||||||
|
<h2 id="les-propriétés-plus-formellement.">Les propriétés plus formellement.</h2>
|
||||||
|
<p>Il est utile de lire formellement les propriétés pour mieux comprendre leur signification.</p>
|
||||||
|
<p>Voir <a href="https://en.wikipedia.org/wiki/Arrow%27s_impossibility_theorem#Formal_statement_of_the_theorem">ici</a></p>
|
||||||
|
<h2 id="une-preuve-simplifiée">Une preuve simplifiée</h2>
|
||||||
|
<p>Voir <a href="https://en.wikipedia.org/wiki/Arrow%27s_impossibility_theorem#Proof_by_the_pivotal_voter">ici</a></p>
|
||||||
|
<p>Cette preuve suppose un ordre strict pour les préférence. Le théorème reste correct pour un ordre partiel.</p>
|
||||||
|
<h2 id="dépasser-le-paradoxe-darrow">Dépasser le paradoxe d’Arrow</h2>
|
||||||
|
<p>Certaines méthodes sont concernés par le théorème d’Arrow, mais sont plébiscités par certaines chercheurs, comme par exemple une méthode utilisée en Irlande et aux US : * <a href="https://en.wikipedia.org/wiki/Instant-runoff_voting">instant runoff ou alternative vote</a> Cette méthode est relativement complexe pour compter les votes manuellement, mais permet d’indiquer des préférences nuancés et de se passer d’un second tour.</p>
|
||||||
|
<p>Plus généralement, on peut se pencher sur des méthodes qui tentent d’apporter un élément quantitatif pour précisser les préférences. On parle de vote par valeurs (cardinal voting ou rated voting en anglais). Ceci est par opposition à la méthode de classement (ordinal voting en anglais).</p>
|
||||||
|
<p>Il existe divers méthodes proposées par des chercheurs en théorie du choix social comme par exemple : * <a href="https://en.wikipedia.org/wiki/Majority_judgment">Le jugement majoritaire</a></p>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://www.gate.cnrs.fr/vote/">Comparaison de différentes méthodes, en particulier en terme d’acceptabilité sociale</a></li>
|
||||||
|
</ul>
|
||||||
|
<h2 id="liens">Liens</h2>
|
||||||
|
<ul>
|
||||||
|
<li><p><a href="https://fr.wikipedia.org/wiki/Paradoxe_de_Condorcet">Paradoxe de Condorcet</a></p></li>
|
||||||
|
<li><p><a href="https://plato.stanford.edu/entries/arrows-theorem/">Théorème d’Arrow (encyclopédie de philosophie de Stanford)</a></p></li>
|
||||||
|
<li><p><a href="https://en.wikipedia.org/wiki/Gibbard%E2%80%93Satterthwaite_theorem">Gibbard–Satterthwaite theorem</a>)</p></li>
|
||||||
|
<li><p><a href="https://fr.wikipedia.org/wiki/Paradoxe_de_Sen">Paradoxe de Sen</a></p></li>
|
||||||
|
<li><p><a href="https://fr.wikipedia.org/wiki/Syst%C3%A8me_%C3%A9lectoral">Système de votes</a></p></li>
|
||||||
|
<li><p><a href="https://fr.wikipedia.org/wiki/Scrutin_uninominal_majoritaire_%C3%A0_un_tour">Comme au Royaume-uni Majoritaire un tour (first pas the post)</a></p></li>
|
||||||
|
<li><p><a href="https://fr.wikipedia.org/wiki/Scrutin_uninominal_majoritaire_%C3%A0_deux_tours">Comme la présidentielle française</a></p></li>
|
||||||
|
<li><p><a href="https://fr.wikipedia.org/wiki/M%C3%A9thode_Borda">Méthode de Borda</a></p></li>
|
||||||
|
<li><p><a href="https://fr.wikipedia.org/wiki/M%C3%A9thode_de_Condorcet">Méthode de Condorcet</a></p></li>
|
||||||
|
<li><p><a href="https://en.wikipedia.org/wiki/Instant-runoff_voting">instant runoff ou alternative vote</a></p></li>
|
||||||
|
<li><p><a href="https://en.wikipedia.org/wiki/Rated_voting">Vote par valeurs</a></p></li>
|
||||||
|
<li><p><a href="https://en.wikipedia.org/wiki/Majority_judgment">Le jugement majoritaire</a></p></li>
|
||||||
|
<li><p><a href="https://www.lamsade.dauphine.fr/~lang/runoff.pdf">Article vulgarisé inspiré élection 2017</a></p></li>
|
||||||
|
<li><p><a href="https://www.lamsade.dauphine.fr/~lang/grand-est.pdf">Vote tactique pour le perdant d’une élection tripartite qui veut faire barrage</a></p></li>
|
||||||
|
<li><p><a href="https://www.gate.cnrs.fr/vote/">Comparaison de différentes méthodes, en particulier en terme d’acceptabilité sociale</a></p></li>
|
||||||
|
<li><p><a href="https://en.wikipedia.org/wiki/Gerrymandering">Gerrymandering</a></p></li>
|
||||||
|
<li><p><a href="https://en.wikipedia.org/wiki/Blackballing">blackballing</a></p></li>
|
||||||
|
</ul>
|
Binary file not shown.
BIN
Brevets/BrevetsHistoriques/US4405829.pdf
Normal file
BIN
Brevets/BrevetsHistoriques/US4405829.pdf
Normal file
Binary file not shown.
BIN
Brevets/BrevetsHistoriques/US5960411.pdf
Normal file
BIN
Brevets/BrevetsHistoriques/US5960411.pdf
Normal file
Binary file not shown.
BIN
Brevets/BrevetsHistoriques/US7072849.pdf
Normal file
BIN
Brevets/BrevetsHistoriques/US7072849.pdf
Normal file
Binary file not shown.
BIN
Brevets/BrevetsHistoriques/US7702719.pdf
Normal file
BIN
Brevets/BrevetsHistoriques/US7702719.pdf
Normal file
Binary file not shown.
BIN
Brevets/BrevetsHistoriques/US_4558302_A.pdf
Normal file
BIN
Brevets/BrevetsHistoriques/US_4558302_A.pdf
Normal file
Binary file not shown.
BIN
Brevets/BrevetsNonChoisis/EP2044714B1.pdf
Normal file
BIN
Brevets/BrevetsNonChoisis/EP2044714B1.pdf
Normal file
Binary file not shown.
BIN
Brevets/BrevetsNonChoisis/EP2304895B1.pdf
Normal file
BIN
Brevets/BrevetsNonChoisis/EP2304895B1.pdf
Normal file
Binary file not shown.
BIN
Brevets/BrevetsNonChoisis/EP2449477B1.pdf
Normal file
BIN
Brevets/BrevetsNonChoisis/EP2449477B1.pdf
Normal file
Binary file not shown.
BIN
Brevets/BrevetsNonChoisis/EP2884392B1.pdf
Normal file
BIN
Brevets/BrevetsNonChoisis/EP2884392B1.pdf
Normal file
Binary file not shown.
BIN
Brevets/BrevetsNonChoisis/EP3301617B1.pdf
Normal file
BIN
Brevets/BrevetsNonChoisis/EP3301617B1.pdf
Normal file
Binary file not shown.
BIN
Brevets/BrevetsNonChoisis/EP3407223B1.pdf
Normal file
BIN
Brevets/BrevetsNonChoisis/EP3407223B1.pdf
Normal file
Binary file not shown.
BIN
Brevets/BrevetsNonChoisis/EP3446468B1.pdf
Normal file
BIN
Brevets/BrevetsNonChoisis/EP3446468B1.pdf
Normal file
Binary file not shown.
BIN
Brevets/BrevetsNonChoisis/EP3461059A1.pdf
Normal file
BIN
Brevets/BrevetsNonChoisis/EP3461059A1.pdf
Normal file
Binary file not shown.
BIN
Brevets/BrevetsNonChoisis/EP3469309B1.pdf
Normal file
BIN
Brevets/BrevetsNonChoisis/EP3469309B1.pdf
Normal file
Binary file not shown.
BIN
Brevets/BrevetsNonChoisis/EP3718245B1.pdf
Normal file
BIN
Brevets/BrevetsNonChoisis/EP3718245B1.pdf
Normal file
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,8 +1,20 @@
|
|||||||
#! /usr/bin/python3
|
#! /usr/bin/python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
voyelles="aeiouy"
|
voyelles="unechaînedecharactère#%@&❤"
|
||||||
|
out=" "
|
||||||
for element in voyelles:
|
for élément in voyelles:
|
||||||
print(element," ", end=' ')
|
#print(element,", ", end='')
|
||||||
print("\n")
|
out= out + élément + ", " # concaténation
|
||||||
|
# slicing
|
||||||
|
print(out[0:-2])
|
||||||
|
#
|
||||||
|
#print(out[1:-2])
|
||||||
|
#print(out[3:-2])
|
||||||
|
#
|
||||||
|
#liste=[0,1,2,3,4,5,6,7,8,9]
|
||||||
|
#print(liste)
|
||||||
|
#print(liste[0:-1]) #enlever le dernier
|
||||||
|
#print(liste[1:-1]) #enlever le premier aussi
|
||||||
|
#print(liste[-4:-2])
|
||||||
|
#print("\n")
|
||||||
|
0
python/2/1LoopOnWord.py
Normal file → Executable file
0
python/2/1LoopOnWord.py
Normal file → Executable file
19
python/2/2Rot13.py
Normal file → Executable file
19
python/2/2Rot13.py
Normal file → Executable file
@@ -1,11 +1,22 @@
|
|||||||
#! /usr/bin/python3
|
#! /usr/bin/python3
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
message="secretfrperg"
|
|
||||||
|
|
||||||
|
def carot13(c):
|
||||||
|
""" transforme le caractère c en un caractère rot13 de c i.e. 13 lettres plus loin"""
|
||||||
|
n=ord(c)-97 # transforme la lettre minuscule entre a et z en un entier entre 0 et 25
|
||||||
|
m=(n+13)%26 # phase de César je tourne la roue (avec des nombres de 0 à 25) d'un demi tour
|
||||||
|
rotc=chr(m+97) # traduction en charactère entre a et z
|
||||||
|
return rotc
|
||||||
|
|
||||||
|
message="abcdefghijklmnopqrstuvwxyz"
|
||||||
|
|
||||||
for element in message:
|
for element in message:
|
||||||
n=ord(element)-97
|
# n=ord(element)-97 # transforme la lettre minuscule entre a et z en un entier entre 0 et 25
|
||||||
m=(n+13)%26
|
# m=(n+13)%26 # phase de César je tourne la roue (avec des nombres de 0 à 25) d'un demi tour
|
||||||
rot=chr(m+97)
|
# rot=chr(m+97) # traduction en charactère entre a et z
|
||||||
|
rot=carot13(element)
|
||||||
print(rot,end='')
|
print(rot,end='')
|
||||||
print("\n")
|
print("\n")
|
||||||
|
|
||||||
|
0
python/2/3Rot13.py
Normal file → Executable file
0
python/2/3Rot13.py
Normal file → Executable file
0
python/2/4Rot13.py
Normal file → Executable file
0
python/2/4Rot13.py
Normal file → Executable file
Reference in New Issue
Block a user