From 61f0a2413077a80f869754afc3a96371e579de78 Mon Sep 17 00:00:00 2001 From: glazk0 <43091603+glazk0@users.noreply.github.com> Date: Wed, 22 Nov 2023 23:07:21 +0100 Subject: [PATCH] rust & C --- .gitignore | 6 +- .../semaine-1}/automatisation/main.c | 0 .../semaine-1}/belle-console/main.c | 0 .../semaine-1}/bienvenue-a-bord/main.c | 0 .../semaine-1}/cybersecurite/README.md | 0 .../semaine-1}/deferlez-les-voiles/main.c | 0 {semaine-1 => c/semaine-1}/type/main.c | 0 .../semaine-2}/exemple-reflexion/main.c | 0 .../semaine-2}/faire-tant-que/main.c | 0 .../semaine-2}/for-punition/main.c | 0 .../semaine-2}/forgotten-code/main.c | 0 .../une-boucle-dans-une-boucle/main.c | 0 {semaine-2 => c/semaine-2}/while-not/main.c | 0 {semaine-3 => c/semaine-3}/and-or/main.c | 0 {semaine-3 => c/semaine-3}/boolean/main.c | 0 {semaine-3 => c/semaine-3}/multiple/main.c | 0 .../multiplications-multiples/main.c | 0 {semaine-3 => c/semaine-3}/neurones/main.c | 0 .../semaine-3}/simple-choice/main.c | 0 c/semaine-4/hidden-message/main.c | 34 ++++++++++ c/semaine-4/hidden-message/messageIA.txt | 1 + .../locker-code-reminder/cypherpunk.txt | 1 + c/semaine-4/locker-code-reminder/main.c | 25 +++++++ c/semaine-4/own-rot-convertor/main.c | 22 +++++++ c/semaine-4/palindrome/main.c | 45 +++++++++++++ c/semaine-4/palindrome/palindrome.txt | 1 + c/semaine-4/password-generator/cypherpunk.txt | 1 + c/semaine-4/password-generator/main.js | 15 +++++ c/semaine-4/vie-privee/cypherpunk.txt | 1 + c/semaine-4/vie-privee/main.c | 34 ++++++++++ rust/semaine-1/belle-console/Cargo.toml | 8 +++ rust/semaine-1/belle-console/src/main.rs | 3 + rust/semaine-1/bienvenue-a-bord/Cargo.toml | 8 +++ rust/semaine-1/bienvenue-a-bord/src/main.rs | 3 + rust/semaine-3/neurones/Cargo.toml | 8 +++ rust/semaine-3/neurones/src/main.rs | 16 +++++ rust/semaine-4/hidden-message/Cargo.toml | 8 +++ rust/semaine-4/hidden-message/messageIA.txt | 1 + rust/semaine-4/hidden-message/src/main.rs | 11 ++++ .../semaine-4/locker-code-reminder/Cargo.toml | 8 +++ .../locker-code-reminder/cypherpunk.txt | 1 + .../locker-code-reminder/src/main.rs | 11 ++++ rust/semaine-4/own-rot-convertor/Cargo.toml | 8 +++ rust/semaine-4/own-rot-convertor/src/main.rs | 46 +++++++++++++ rust/semaine-4/palindrome/Cargo.toml | 8 +++ rust/semaine-4/palindrome/palindrome.txt | 1 + rust/semaine-4/palindrome/src/main.rs | 19 ++++++ rust/semaine-4/password-generator/Cargo.toml | 8 +++ .../password-generator/cypherpunk.txt | 1 + rust/semaine-4/password-generator/src/main.rs | 17 +++++ rust/semaine-4/vie-privee/Cargo.toml | 8 +++ rust/semaine-4/vie-privee/cypherpunk.txt | 1 + rust/semaine-4/vie-privee/src/main.rs | 11 ++++ .../first-temperature-list/Cargo.toml | 8 +++ .../first-temperature-list/src/main.rs | 16 +++++ rust/semaine-5/melting-pot/Cargo.toml | 8 +++ rust/semaine-5/melting-pot/letterCount.txt | 1 + rust/semaine-5/melting-pot/src/main.rs | 24 +++++++ rust/semaine-5/rot-decryption/Cargo.toml | 8 +++ rust/semaine-5/rot-decryption/src/main.rs | 49 ++++++++++++++ rust/semaine-5/sort/100days.txt | 2 + rust/semaine-5/sort/Cargo.toml | 8 +++ rust/semaine-5/sort/src/main.rs | 30 +++++++++ rust/semaine-5/two-steps-by-step/Cargo.toml | 8 +++ rust/semaine-5/two-steps-by-step/src/main.rs | 40 +++++++++++ rust/semaine-5/work-on-the-first/100days.txt | 1 + rust/semaine-5/work-on-the-first/Cargo.toml | 8 +++ rust/semaine-5/work-on-the-first/src/main.rs | 18 +++++ rust/semaine-6/beggin-of-line/Cargo.toml | 9 +++ .../semaine-6/beggin-of-line/independance.txt | 66 +++++++++++++++++++ rust/semaine-6/beggin-of-line/src/main.rs | 15 +++++ rust/semaine-6/doublons-doublons/Cargo.toml | 9 +++ .../semaine-6/doublons-doublons/macDouble.txt | 1 + rust/semaine-6/doublons-doublons/src/main.rs | 16 +++++ rust/semaine-6/first-regex/Cargo.toml | 9 +++ rust/semaine-6/first-regex/independance.txt | 66 +++++++++++++++++++ rust/semaine-6/first-regex/src/main.rs | 15 +++++ rust/semaine-6/in-set/Cargo.toml | 9 +++ rust/semaine-6/in-set/independance.txt | 66 +++++++++++++++++++ rust/semaine-6/in-set/src/main.rs | 15 +++++ rust/semaine-6/optional/Cargo.toml | 9 +++ rust/semaine-6/optional/independance.txt | 66 +++++++++++++++++++ rust/semaine-6/optional/src/main.rs | 17 +++++ 83 files changed, 1016 insertions(+), 1 deletion(-) rename {semaine-1 => c/semaine-1}/automatisation/main.c (100%) rename {semaine-1 => c/semaine-1}/belle-console/main.c (100%) rename {semaine-1 => c/semaine-1}/bienvenue-a-bord/main.c (100%) rename {semaine-1 => c/semaine-1}/cybersecurite/README.md (100%) rename {semaine-1 => c/semaine-1}/deferlez-les-voiles/main.c (100%) rename {semaine-1 => c/semaine-1}/type/main.c (100%) rename {semaine-2 => c/semaine-2}/exemple-reflexion/main.c (100%) rename {semaine-2 => c/semaine-2}/faire-tant-que/main.c (100%) rename {semaine-2 => c/semaine-2}/for-punition/main.c (100%) rename {semaine-2 => c/semaine-2}/forgotten-code/main.c (100%) rename {semaine-2 => c/semaine-2}/une-boucle-dans-une-boucle/main.c (100%) rename {semaine-2 => c/semaine-2}/while-not/main.c (100%) rename {semaine-3 => c/semaine-3}/and-or/main.c (100%) rename {semaine-3 => c/semaine-3}/boolean/main.c (100%) rename {semaine-3 => c/semaine-3}/multiple/main.c (100%) rename {semaine-3 => c/semaine-3}/multiplications-multiples/main.c (100%) rename {semaine-3 => c/semaine-3}/neurones/main.c (100%) rename {semaine-3 => c/semaine-3}/simple-choice/main.c (100%) create mode 100644 c/semaine-4/hidden-message/main.c create mode 100644 c/semaine-4/hidden-message/messageIA.txt create mode 100644 c/semaine-4/locker-code-reminder/cypherpunk.txt create mode 100644 c/semaine-4/locker-code-reminder/main.c create mode 100644 c/semaine-4/own-rot-convertor/main.c create mode 100644 c/semaine-4/palindrome/main.c create mode 100644 c/semaine-4/palindrome/palindrome.txt create mode 100644 c/semaine-4/password-generator/cypherpunk.txt create mode 100644 c/semaine-4/password-generator/main.js create mode 100644 c/semaine-4/vie-privee/cypherpunk.txt create mode 100644 c/semaine-4/vie-privee/main.c create mode 100644 rust/semaine-1/belle-console/Cargo.toml create mode 100644 rust/semaine-1/belle-console/src/main.rs create mode 100644 rust/semaine-1/bienvenue-a-bord/Cargo.toml create mode 100644 rust/semaine-1/bienvenue-a-bord/src/main.rs create mode 100644 rust/semaine-3/neurones/Cargo.toml create mode 100644 rust/semaine-3/neurones/src/main.rs create mode 100644 rust/semaine-4/hidden-message/Cargo.toml create mode 100644 rust/semaine-4/hidden-message/messageIA.txt create mode 100644 rust/semaine-4/hidden-message/src/main.rs create mode 100644 rust/semaine-4/locker-code-reminder/Cargo.toml create mode 100644 rust/semaine-4/locker-code-reminder/cypherpunk.txt create mode 100644 rust/semaine-4/locker-code-reminder/src/main.rs create mode 100644 rust/semaine-4/own-rot-convertor/Cargo.toml create mode 100644 rust/semaine-4/own-rot-convertor/src/main.rs create mode 100644 rust/semaine-4/palindrome/Cargo.toml create mode 100644 rust/semaine-4/palindrome/palindrome.txt create mode 100644 rust/semaine-4/palindrome/src/main.rs create mode 100644 rust/semaine-4/password-generator/Cargo.toml create mode 100644 rust/semaine-4/password-generator/cypherpunk.txt create mode 100644 rust/semaine-4/password-generator/src/main.rs create mode 100644 rust/semaine-4/vie-privee/Cargo.toml create mode 100644 rust/semaine-4/vie-privee/cypherpunk.txt create mode 100644 rust/semaine-4/vie-privee/src/main.rs create mode 100644 rust/semaine-5/first-temperature-list/Cargo.toml create mode 100644 rust/semaine-5/first-temperature-list/src/main.rs create mode 100644 rust/semaine-5/melting-pot/Cargo.toml create mode 100644 rust/semaine-5/melting-pot/letterCount.txt create mode 100644 rust/semaine-5/melting-pot/src/main.rs create mode 100644 rust/semaine-5/rot-decryption/Cargo.toml create mode 100644 rust/semaine-5/rot-decryption/src/main.rs create mode 100644 rust/semaine-5/sort/100days.txt create mode 100644 rust/semaine-5/sort/Cargo.toml create mode 100644 rust/semaine-5/sort/src/main.rs create mode 100644 rust/semaine-5/two-steps-by-step/Cargo.toml create mode 100644 rust/semaine-5/two-steps-by-step/src/main.rs create mode 100644 rust/semaine-5/work-on-the-first/100days.txt create mode 100644 rust/semaine-5/work-on-the-first/Cargo.toml create mode 100644 rust/semaine-5/work-on-the-first/src/main.rs create mode 100644 rust/semaine-6/beggin-of-line/Cargo.toml create mode 100644 rust/semaine-6/beggin-of-line/independance.txt create mode 100644 rust/semaine-6/beggin-of-line/src/main.rs create mode 100644 rust/semaine-6/doublons-doublons/Cargo.toml create mode 100644 rust/semaine-6/doublons-doublons/macDouble.txt create mode 100644 rust/semaine-6/doublons-doublons/src/main.rs create mode 100644 rust/semaine-6/first-regex/Cargo.toml create mode 100644 rust/semaine-6/first-regex/independance.txt create mode 100644 rust/semaine-6/first-regex/src/main.rs create mode 100644 rust/semaine-6/in-set/Cargo.toml create mode 100644 rust/semaine-6/in-set/independance.txt create mode 100644 rust/semaine-6/in-set/src/main.rs create mode 100644 rust/semaine-6/optional/Cargo.toml create mode 100644 rust/semaine-6/optional/independance.txt create mode 100644 rust/semaine-6/optional/src/main.rs diff --git a/.gitignore b/.gitignore index 6d5206b..ce0060b 100644 --- a/.gitignore +++ b/.gitignore @@ -49,4 +49,8 @@ modules.order Module.symvers Mkfile.old -dkms.conf \ No newline at end of file +dkms.conf + +# Rust +target/ +Cargo.lock diff --git a/semaine-1/automatisation/main.c b/c/semaine-1/automatisation/main.c similarity index 100% rename from semaine-1/automatisation/main.c rename to c/semaine-1/automatisation/main.c diff --git a/semaine-1/belle-console/main.c b/c/semaine-1/belle-console/main.c similarity index 100% rename from semaine-1/belle-console/main.c rename to c/semaine-1/belle-console/main.c diff --git a/semaine-1/bienvenue-a-bord/main.c b/c/semaine-1/bienvenue-a-bord/main.c similarity index 100% rename from semaine-1/bienvenue-a-bord/main.c rename to c/semaine-1/bienvenue-a-bord/main.c diff --git a/semaine-1/cybersecurite/README.md b/c/semaine-1/cybersecurite/README.md similarity index 100% rename from semaine-1/cybersecurite/README.md rename to c/semaine-1/cybersecurite/README.md diff --git a/semaine-1/deferlez-les-voiles/main.c b/c/semaine-1/deferlez-les-voiles/main.c similarity index 100% rename from semaine-1/deferlez-les-voiles/main.c rename to c/semaine-1/deferlez-les-voiles/main.c diff --git a/semaine-1/type/main.c b/c/semaine-1/type/main.c similarity index 100% rename from semaine-1/type/main.c rename to c/semaine-1/type/main.c diff --git a/semaine-2/exemple-reflexion/main.c b/c/semaine-2/exemple-reflexion/main.c similarity index 100% rename from semaine-2/exemple-reflexion/main.c rename to c/semaine-2/exemple-reflexion/main.c diff --git a/semaine-2/faire-tant-que/main.c b/c/semaine-2/faire-tant-que/main.c similarity index 100% rename from semaine-2/faire-tant-que/main.c rename to c/semaine-2/faire-tant-que/main.c diff --git a/semaine-2/for-punition/main.c b/c/semaine-2/for-punition/main.c similarity index 100% rename from semaine-2/for-punition/main.c rename to c/semaine-2/for-punition/main.c diff --git a/semaine-2/forgotten-code/main.c b/c/semaine-2/forgotten-code/main.c similarity index 100% rename from semaine-2/forgotten-code/main.c rename to c/semaine-2/forgotten-code/main.c diff --git a/semaine-2/une-boucle-dans-une-boucle/main.c b/c/semaine-2/une-boucle-dans-une-boucle/main.c similarity index 100% rename from semaine-2/une-boucle-dans-une-boucle/main.c rename to c/semaine-2/une-boucle-dans-une-boucle/main.c diff --git a/semaine-2/while-not/main.c b/c/semaine-2/while-not/main.c similarity index 100% rename from semaine-2/while-not/main.c rename to c/semaine-2/while-not/main.c diff --git a/semaine-3/and-or/main.c b/c/semaine-3/and-or/main.c similarity index 100% rename from semaine-3/and-or/main.c rename to c/semaine-3/and-or/main.c diff --git a/semaine-3/boolean/main.c b/c/semaine-3/boolean/main.c similarity index 100% rename from semaine-3/boolean/main.c rename to c/semaine-3/boolean/main.c diff --git a/semaine-3/multiple/main.c b/c/semaine-3/multiple/main.c similarity index 100% rename from semaine-3/multiple/main.c rename to c/semaine-3/multiple/main.c diff --git a/semaine-3/multiplications-multiples/main.c b/c/semaine-3/multiplications-multiples/main.c similarity index 100% rename from semaine-3/multiplications-multiples/main.c rename to c/semaine-3/multiplications-multiples/main.c diff --git a/semaine-3/neurones/main.c b/c/semaine-3/neurones/main.c similarity index 100% rename from semaine-3/neurones/main.c rename to c/semaine-3/neurones/main.c diff --git a/semaine-3/simple-choice/main.c b/c/semaine-3/simple-choice/main.c similarity index 100% rename from semaine-3/simple-choice/main.c rename to c/semaine-3/simple-choice/main.c diff --git a/c/semaine-4/hidden-message/main.c b/c/semaine-4/hidden-message/main.c new file mode 100644 index 0000000..83f43ee --- /dev/null +++ b/c/semaine-4/hidden-message/main.c @@ -0,0 +1,34 @@ +#include +#include +#include +#include + +int main(void) { + + FILE *file; + size_t length; + char text[500], message[500]; + int i; + + file = fopen("messageIA.txt", "r"); + + if (file == NULL) { + printf("failed reading file"); + return EXIT_FAILURE; + } + + fgets(text, sizeof(text), file); + + length = strlen(text); + + for (i = 0; i < length; i += 3) { + strncat(message, &text[i], 1); + } + + /* I've normalized the file input so o is ô & e is é */ + printf("%s", message); + + fclose(file); + + return EXIT_SUCCESS; +} diff --git a/c/semaine-4/hidden-message/messageIA.txt b/c/semaine-4/hidden-message/messageIA.txt new file mode 100644 index 0000000..4d710dd --- /dev/null +++ b/c/semaine-4/hidden-message/messageIA.txt @@ -0,0 +1 @@ +BDvoOondajFVoyXuknrfo FsBqJaTbruilZFoiLwzK,Mq uERFCALYSIu jVdEFeZt NQnyYobOtiTrYHezQ GvcsKoGntszejO SP!BI btOANvvYeaGrQP.Xj \ No newline at end of file diff --git a/c/semaine-4/locker-code-reminder/cypherpunk.txt b/c/semaine-4/locker-code-reminder/cypherpunk.txt new file mode 100644 index 0000000..3a5aa90 --- /dev/null +++ b/c/semaine-4/locker-code-reminder/cypherpunk.txt @@ -0,0 +1 @@ +La vie privée est nécessaire pour une société ouverte dans l’ère électronique. La vie privée n’est pas un secret. Une affaire privée est ce qu’un individu ne veut pas que le monde entier sache, mais une affaire secrète est ce qu’un individu ne veut que quiconque sache. La vie privée est le pouvoir de se révéler sélectivement au monde.\n\nLorsque deux partis ont une certaine forme d’échange, chacun possède ensuite un souvenir de leur interaction. Chaque parti peut parler de son propre souvenir de l’échange ; comment quelqu’un pourrait-il empêcher cela ? Des lois pourraient être adoptées contre cela, mais la liberté d’expression, encore plus que celle de la vie privée, est fondamentale à une société ouverte ; nous ne cherchons en aucun cas à restreindre quelque expression qu’elle soit. Si plusieurs partis dialoguent au sein d’un même forum, chaque parti peut communiquer avec tout le reste et agréger ensemble leur connaissance sur les individus et les autres partis. Le pouvoir des communications électroniques a permis une telle expression de groupe, et cela ne peut disparaître simplement parce que nous pourrions le souhaiter.\n\nPuisque nous désirons une vie privée, nous devons nous assurer lors d’un échange que chaque parti ait seulement connaissance de ce qui sera directement nécessaire à cet échange. Puisque n’importe quelle information peut être évoquée, nous devons nous assurer que nous en révélons le moins possible. Dans la plupart des cas l’identité personnelle n’est pas mise en évidence. Quand j’achète un magazine dans une boutique et que je tends des espèces au vendeur, il est inutile de savoir qui je suis. Quand je demande à mon prestataire de services réseau d’envoyer et de recevoir des messages, mon prestataire n’a pas besoin de savoir avec qui je parle ou ce que je dis ou ce que les autres me disent ; mon prestataire a seulement besoin de savoir comment il va envoyer le message et combien je lui dois pour le service fourni. Quand mon identité est révélée par le mécanisme sous-jacent de l’échange, je n’ai aucune vie privée. Je ne peux ici choisir ce que je dévoile de moi-même ; je devrais toujours me révéler.\n\nPar conséquent, la vie privée dans une société ouverte requiert des systèmes de transactions anonymes. Jusqu’à présent, l’argent liquide a été le moyen principal d’un tel système. Un système d’échanges anonyme n’est pas un système d’échanges secret. Un système anonyme renforce le pouvoir des individus à révéler leurs identités quand ils le désirent et seulement quand ils le désirent ; c’est l’essence-même de la vie privée.\n\nLa vie privée dans une société ouverte requiert également la cryptographie.\n\nSi je dis quelque chose, je veux que cela soit entendu uniquement par ceux à qui le message était destiné. Si le contenu de mon message est ouvertement disponible au monde, je n’ai pas de vie privée. Chiffrer, c’est indiquer le désir d’une vie privée, et chiffrer avec une faible cryptographie est l’indication d’un désir faible pour une vie privée. En outre, révéler son identité avec assurance lorsque l’anonymat est par défaut requiert une signature cryptographique.\n\n\n\nNous ne pouvons attendre des gouvernements, des entreprises et des autres organisations majeures sans visage de nous accorder une vie privée par acte de bienveillance. C’est à leur avantage de parler de nous, et nous devrions nous attendre à ce qu’ils le fassent. Tenter de les en empêcher, c’est se battre contre les réalités de l’information. Information ne veut pas juste être libre, elle est avide de liberté. Information tend à remplir l’espace de stockage disponible. Information est la jeune et talentueuse cousine de Rumeur ; Information est plus rapide, plus observatrice, sait plus et interprète moins que Rumeur.\n\nNous devons défendre notre vie privée par nous-mêmes si nous nous attendons à en avoir une. Nous devons nous rassembler et créer des systèmes qui nous permettent d’arriver à des échanges anonymes. Les humains ont défendu leurs propres vies privées pendant des siècles par des murmures, l’obscurité, des enveloppes, des portes fermées, des poignées de main secrètes, et des messagers. Les technologies du passé ne permettaient pas une confidentialité solide, les technologies électroniques le permettent.\n\n\n\nNous les Cypherpunks sommes dévoués à construire des systèmes anonymes. Nous défendons notre vie privée avec la cryptographie, avec des systèmes d’anonymisation du courrier électronique, avec des signatures numériques, et avec une monnaie électronique.\n\nLes Cypherpunks écrivent du code. Nous savons que quelqu’un doit élaborer des logiciels défendant la vie privée, et puisque que nous ne pouvons avoir de vie privée à moins que nous tous en soyons pourvus, nous allons les réaliser. Nous publions notre code afin que nos semblables Cypherpunks s’entraînent et jouent avec. Notre code est libre à tous d’être utilisé, dans le monde entier. Nous ne nous en soucions guère si vous n’approuvez pas les logiciels que nous développons. Nous savons qu’un logiciel ne peut être détruit et qu’un système largement répandu ne peut être arrêté.\n\nLes Cypherpunks déplorent les régulations sur la cryptographie, le chiffrement étant fondamentalement un geste privé. En fait, le geste de chiffrer retire l’information du domaine public. Même les lois contre la cryptographie atteignent seulement la frontière d’une nation et le bras de sa violence. La cryptographie va inéluctablement se répandre dans l’ensemble du globe, et avec elle les systèmes d’échanges anonymes qui la rendent possible.\n\nPour que la confidentialité soit largement répandue, il faut qu’elle fasse partie d’un contrat social. Les humains doivent se rassembler et déployer ensemble ces systèmes pour le bien commun. La vie privée ne peut s’étendre que grâce à la coopération entre les membres d’une société. Nous les Cypherpunks sollicitons vos questions et vos inquiétudes et espérons que vous puissiez vous engager afin d’éviter les erreurs que nous pourrions faire. Nous ne nous ferons cependant pas dévier de notre course sous prétexte que certains désapprouveraient nos objectifs.\n\n\n\nLes Cypherpunks sont activement engagés à rendre les réseaux plus sûrs pour la vie privée. Procédons avec célérité.\n\nEn avant !\n\n\n\n– Eric Hughes, le mardi 9 mars 1993 diff --git a/c/semaine-4/locker-code-reminder/main.c b/c/semaine-4/locker-code-reminder/main.c new file mode 100644 index 0000000..32ca091 --- /dev/null +++ b/c/semaine-4/locker-code-reminder/main.c @@ -0,0 +1,25 @@ +#include +#include + +int main(void) { + + FILE *file; + char text[10000]; + int i, n = 0; + size_t length = sizeof(text) / sizeof(char); + + file = fopen("cypherpunk.txt", "r"); + + fgets(text, 10000, file); + + for (i = 0; i < length; ++i) { + if (text[i] == 'c') { + n++; + } + } + + printf("%d", n); + + return EXIT_SUCCESS; +} + diff --git a/c/semaine-4/own-rot-convertor/main.c b/c/semaine-4/own-rot-convertor/main.c new file mode 100644 index 0000000..b064e36 --- /dev/null +++ b/c/semaine-4/own-rot-convertor/main.c @@ -0,0 +1,22 @@ +#include +#include +#include + +#define ROT 13 + +int main(void) { + + char text[] = "bonjour agentty, ras de notre cote egalement. over", base; + int i; + + for (i = 0; text[i] != '\0'; ++i) { + if (isalpha(text[i])) { + base = islower(text[i]) ? 'a' : 'A'; + text[i] = (text[i] - base + ROT) % 26 + base; + } + } + + printf("%s", text); + + return EXIT_SUCCESS; +} diff --git a/c/semaine-4/palindrome/main.c b/c/semaine-4/palindrome/main.c new file mode 100644 index 0000000..da63ef2 --- /dev/null +++ b/c/semaine-4/palindrome/main.c @@ -0,0 +1,45 @@ +#include +#include +#include +#include + +int isPalindrome(char *str); + +int main(void) { + + FILE *file = fopen("palindrome.txt", "r"); + char *token, line[512]; + + if (file == NULL) { + perror("Error opening file"); + return EXIT_FAILURE; + } + + while (fgets(line, sizeof(line), file)) { + + token = strtok(line, ","); + + while (token != NULL) { + if (isPalindrome(token)) { + printf("palindrome found: %s\n", token); + } + token = strtok(NULL, ","); + } + } + + fclose(file); + + return EXIT_SUCCESS; +} + +int isPalindrome(char *str) { + int i, length = strlen(str); + + for (i = 0; i < length / 2; i++) { + if (tolower(str[i]) != tolower(str[length - 1 - i])) { + return 0; + } + } + + return 1; +} diff --git a/c/semaine-4/palindrome/palindrome.txt b/c/semaine-4/palindrome/palindrome.txt new file mode 100644 index 0000000..892e1cf --- /dev/null +++ b/c/semaine-4/palindrome/palindrome.txt @@ -0,0 +1 @@ +classe,angle,armoire,banc,bureau,cabinet,carreau,chaise,classe,clé,coin,couloir,dossier,eau,école,écriture,entrée,escalier,étagère,étude,extérieur,fenêtre,intérieur,lavabo,lecture,lit,marche,matelas,maternelle,meuble,mousse,mur,peluche,placard,plafond,porte,portemanteau,poubelle,radiateur,rampe,récréation,rentrée,rideau,robinet,salle,savon,serrure,serviette,siège,sieste,silence,sol,sommeil,sonnette,sortie,table,tableau,tabouret,tapis,tiroir,toilette,vitre,w.-c.,aller,amener,apporter,appuyer,asseoir|s’asseoir,attendre,bâiller,bosser,coucher|se coucher,dormir,éclairer,écrire,emmener,emporter,endormir|s’endormir,ennuyer|s’ennuyer,entrer,étudier,fermer,frapper,installer|s’installer,lever|se lever,lire,ouvrir,presser|se presser,réchauffer|se réchauffer,rentrer,reposer|se reposer,rester,réveiller|se réveiller,sonner,sortir,tricher,venir,absent,assis,bas,couché,haut,présent,à côté,à droite,à gauche,au milieu,au-delà,au-dessous,au-dessus,debout,dedans,dehors,en bas,en face,en haut,loin,près,tard,après,au,avant,contre,dans,de,derrière,devant,du,sous,sur,travail,crayon,stylo,feutre,taille-crayon,pointe,mine,gomme,dessin,coloriage,rayure,peinture,pinceau,couleur,craie,papier,feuille,cahier,carnet,carton,ciseaux,découpage,pliage,pli,colle,affaire,boîte,casier,caisse,trousse,cartable,jouet,jeu,pion,dé,domino,puzzle,cube,perle,chose,forme,carré,rond,pâte à modeler,tampon,livre,histoire,bibliothèque,image,album,titre,bande dessinée,conte,dictionnaire,magazine,catalogue,page,ligne,mot,enveloppe,étiquette,carte d’appel,affiche,alphabet,appareil,caméscope,cassette,cédé,cédérom,chaîne,chanson,chiffre,contraire,différence,doigt,écran,écriture,film,fois,idée,instrument,intrus,lettre,liste,magnétoscope,main,micro,modèle,musique,nom,nombre,orchestre,ordinateur,photo,point,poster,pouce,prénom,question,radio,sens,tambour,télécommande,téléphone,télévision,trait,trompette,voix,xylophone,zéro,chanter,chercher,choisir,chuchoter,coller,colorier,commencer,comparer,compter,construire,continuer,copier,couper,déchirer,décoller,décorer,découper,demander,démolir,dépêcher|se dépêcher,dessiner,dire,discuter,écouter,écrire,effacer,entendre,entourer,envoyer,faire,finir,fouiller,goûter,imiter,laisser,lire,mettre,montrer,ouvrir,parler,peindre,plier,poser,prendre,préparer,ranger,réciter,recommencer,regarder,remettre,répéter,répondre,sentir,souligner,tailler,taire|se taire,tenir,terminer,toucher,travailler,trier,autre,ami,attention,camarade,colère,copain,coquin,dame,directeur,directrice,droit,effort,élève,enfant,fatigue,faute,fille,garçon,gardien,madame,maître,maîtresse,mensonge,ordre,personne,retard,sourire,travail,aider,défendre,désobéir,distribuer,échanger,excuser|s’excuser,expliquer,fâcher|se fâcher,gronder,obéir,obliger,partager,prêter,priver,promettre,punir,quitter|se quitter,raconter,refuser,séparer,blond,brun,calme,curieux,différent,doux,énervé,gentil,grand,handicapé,inséparable,jaloux,moyen,muet,noir,nouveau,petit,poli,propre,roux,sage,sale,sérieux,sourd,tranquille,jeu,arrosoir,assiette,balle,bateau,boîte,bouchon,bouteille,bulle,canard,casserole,cuillère,cuvette,douche,entonnoir,goutte,litre,moulin,pluie,poisson,pont,pot,roue,sac,plastique,saladier,seau,tablier,tasse,trou,verre,agiter,amuser|s’amuser,arroser,attraper,avancer,baigner,barboter,boucher,bouger,déborder,doucher,éclabousser,essuyer,envoyer,flotter,gonfler,inonder,jouer,laver,mélanger,mouiller,nager,patauger,pleuvoir,plonger,pousser,pouvoir,presser,recevoir,remplir,renverser,sécher,serrer,souffler,tirer,tourner,tremper,verser,vider,vouloir,amusant,chaud,froid,humide,intéressant,mouillé,sec,transparent,à moitié,autant,beaucoup,encore,moins,peu,plus,trop,déguisement,à l’endroit,à l’envers,anorak,arc,bagage,baguette,barbe,bonnet,botte,bouton,bretelle,cagoule,casque,casquette,ceinture,chapeau,chaussette,chausson,chaussure,chemise,cigarette,col,collant,couronne,cravate,culotte,écharpe,épée,fée,flèche,fusil,gant,habit,jean,jupe,lacet,laine,linge,lunette|lunettes,magicien,magie,maillot,manche,manteau,mouchoir,moufle,nœud,paire,pantalon,pied,poche,prince,pull-over,pyjama,reine,robe,roi,ruban,semelle,soldat,sorcière,tache,taille,talon,tissu,tricot,uniforme,valise,veste,vêtement,changer|se changer,chausser|se chausser,couvrir|se couvrir,déguiser|se déguiser,déshabiller|se déshabiller,enlever,habiller|s’habiller,lacer,porter,ressembler,clair,court,étroit,foncé,joli,large,long,multicolore,nu,usé,bien,mal,mieux,presque,bricolage,aiguille,ampoule,avion,bois,bout,bricolage,bruit,cabane,carton,clou,colle,crochet,élastique,ficelle,fil,marionnette,marteau,métal,mètre,morceau,moteur,objet,outil,peinture,pinceau,planche,plâtre,scie,tournevis,vis,voiture,véhicule,arracher,attacher,casser,coudre,détruire,écorcher|s’écorcher,enfiler,enfoncer,fabriquer,mesurer,percer,pincer|se pincer,réparer,réussir,servir,taper,trouer,adroit,difficile,dur,facile,lisse,maladroit,pointu,rugueux,tordu,garage,train,accident,aéroport,auto,camion,engin,feu,frein,fusée,garage,gare,grue,hélicoptère,moto,panne,parking,pilote,pneu,quai,train,virage,vitesse,voyage,wagon,zigzag,arrêter|s’arrêter,atterrir,bouder,charger,conduire,démarrer,disparaître,donner,écraser,envoler|s’envoler,garder,garer|se garer,manquer,partir,poser|se poser,reculer,rouler,tendre,transporter,voler,abîmé,ancien,blanc,bleu,cassé,cinq,dernier,deux,deuxième,dix,gris,gros,huit,jaune,même,neuf,pareil,premier,quatre,rouge,sept,seul,six,solide,trois,troisième,un,vert,au-dessus,autour,vite,à côté de,au milieu de,au-dessous de,au-dessus de,autour de,avec,en bas de,en haut de,loin de,près de,sur,vers,salle de jeux,acrobate,arrêt,arrière,barre,barreau,bord,bras,cerceau,chaise|chaises,cheville,chute,cœur,corde,corps,côté,cou,coude,cuisse,danger,doigt|doigts,dos,échasse|échasses,échelle,épaule,équipe,escabeau,fesse,filet,fond,genou,gymnastique,hanche,jambe|jambes,jeu,main|mains,milieu,montagne,mur d’escalade,muscle,numéro,ongle,parcours,pas,passerelle,pente,peur,pied|pieds,plongeoir,poignet,poing,pont de singe,poutre d’équilibre,prise|prises,rivière des crocodiles,roulade,saut,serpent,sport,suivant,tête,toboggan,tour,trampoline,tunnel,ventre,accrocher|s’accrocher,appuyer|s’appuyer,arriver,baisser|se baisser,balancer|se balancer,bondir,bousculer,cogner|se cogner,courir,danser,dépasser,descendre,écarter,escalader,gagner,gêner,glisser,grimper,marcher à quatre pattes,marcher sur,se mettre debout,monter,pencher|se pencher,percher|se percher,perdre,ramper,rater,remplacer,respirer,retourner|se retourner,revenir,sauter,soulever,suivre,tomber,transpirer,traverser,dangereux,épais,fort,gauche,groupé,immobile,rond,serré,souple,au delà,ensemble,jamais,là,souvent,toujours,cour,bagarre,balançoire,ballon,bande,bicyclette,bille,cadenas,cage à écureuil,cerf-volant,château,coup,cour,course,échasse,flaque,paix,pardon,partie,pédale,pelle,pompe,préau,raquette,rayon,récréation,sable,sifflet,signe,tas,tricycle,tuyau,vélo,filet,bagarrer,battre,cacher,cracher,creuser,crier,dégonfler,disputer,empêcher,galoper,hurler,jongler,lancer,pédaler,plaindre|se plaindre,pleurer,poursuivre,protéger,saigner,salir|se salir,siffler,surveiller,traîner,trouver,caché,fou,méchant,gâteau|Gâteaux,crêpe,allumette,anniversaire,appétit,beurre,coquille,crêpe|crêpes,croûte,dessert,envie,faim,fève,four,galette,gâteau,goût,invitation,langue,lèvre|lèvres,liquide,louche,mie,moitié,moule,odeur,œuf,part,pâte,pâtisserie,recette,rouleau,sel,soif,tarte,tranche,yaourt,aimer,allumer,avaler,battre,brûler|se brûler,chauffer,cuire,étaler,éteindre,falloir,inviter,jeter,lécher,oublier,régaler|se régaler,remercier,remuer,souhaiter,sucer,barbouillé,demi,égal,entier,gourmand,mauvais,meilleur,mince,salade de fruits|Salade de fruits,glaçon,jus,kiwi,lame,mûre,noyau,paille,pamplemousse,râpe,croquer,éplucher,râper,bassine,cocotte,épluchure,légume,pomme de terre,rondelle,soupe,consommé,potage,bouillir,mixer,cru,cuit,vide,cantine,arête,frite,gobelet,jambon,os,poulet,purée,radis,restaurant,sole,déjeuner,animal domestique,animal,bébé|bébés,bouche,cage,câlin,caresse,cochon d’Inde,foin,graine|graines,hamster,lapin,maison,nez,œil,oreille,patte,toit,yeux,accoucher,agacer,appeler,câliner,caresser,changer,déranger,échapper|s’échapper,élever,enfermer,enterrer,gratter,grignoter,installer,lâcher,mordre,mourir,naître,nourrir,occuper|s’occuper de,promener|se promener,ronger,sauver|se sauver,soigner,téter,vivre,voir,abandonné,enceinte,maigre,mort,né,vivant,ferme,légume,abeille,agneau,aile,âne,arbre,bain,barque,bassin,bébé,bec,bête,bœuf,botte de foin,boue,bouquet,bourgeon,branche,caillou,campagne,car,champ,chariot,chat,cheminée,cheval,chèvre,chien,cochon,colline,coq,coquelicot,crapaud,cygne,départ,dindon,escargot,étang,ferme,fermier,feuille,flamme,fleur,fontaine,fumée,grain,graine,grenouille,griffe,guêpe,herbe,hérisson,insecte,jardin,mare,marguerite,miel,morceau de pain,mouche,mouton,oie,oiseau,pierre,pigeon,plante,plume,poney,poule,poussin,prairie,rat,rivière,route,tortue,tracteur,tulipe,vache,vétérinaire,accompagner,baigner|se baigner,courir après,couver,donner à manger,faire boire,fumer,griffer,habiter,piquer,ramasser,traire,bizarre,énorme,immense,malade,nain,utile,zoo,aigle,animal|animaux,aquarium,bête|bêtes,cerf,chouette,cigogne,crocodile,dauphin,éléphant,girafe,hibou,hippopotame,kangourou,lion,loup,ours,panda,panthère,perroquet,phoque,renard,requin,rhinocéros,singe,tigre,zèbre,zoo,carnaval,épingle,bâton,bêtise,bonhomme,botte|bottes,canne,cauchemar,cri,danse,déguisement,dinosaure,drapeau,en argent,en or,en rang,fête,figure,géant,gens,grand-mère,grand-père,joie,joue,journal|journaux,maquillage,masque,monsieur,moustache,ogre,princesse,rue,trottoir,déguiser,défiler,éclater,essayer,marcher,moquer|se moquer,plaire,rencontrer,ressembler|ressembler à,retourner,rêver,rire,taper|taper sur,danser,sauter,chanter,content,drôle,effrayé,heureux,joyeux,prêt,riche,terrible,fête,école,Noël,boule,cadeau,canne à pêche,chance,cube,guirlande,humeur,papillon,spectacle,surprise,trou,visage,faire peur,lever,maquiller,électrique,heure,calendrier,âge,an,année,après-midi,calendrier,début,dimanche,ressasser,étoile,fin,heure des mamans,heure,hiver,horloge,jeudi,jour,journée,lumière,lundi,lune,mardi,matin,mercredi,midi,minuit,minute,mois,moment,montre,nuit,ombre,pendule,retour,réveil,saison,samedi,semaine,soir,soleil,temps,univers,vacance|vacances,vendredi,avancer,briller,dîner,grandir,mettre|mettre du temps,suivre,chronologie,retarder,aîné,jeune,lent,patient,rapide,sombre,vieux,aujourd’hui,bientôt,d’abord,demain,hier,maintenant,puis,tout de suite,en avance,en retard,météo,air,arc-en-ciel,brouillard,ciel,éclair,flocon,goutte,hirondelle,luge,neige,nuage,orage,ouragan,parapluie,parasol,ski,tempête,thermomètre,tonnerre,traîneau,vent,abriter|s’abriter,faire beau,geler,mouiller|se mouiller,neiger,tromper|se tromper,pleuvoir,venter,déçu,triste,chaud,froid,pluvieux,nuageux,humide,gelé,instable,changeant,cuisine,assiette,balai,biscuit,boisson,bol,bonbon,céréale,confiture,coquetier,couteau,couvercle,couvert,cuillère,cuisine,cuisinière,désordre,dînette,éponge,évier,four,fourchette,lait,lave-linge,lessive,machine,nappe,pain,pile,plat,plateau,poêle,réfrigérateur,repas,tartine,torchon,vaisselle,accrocher,balayer,boire,frotter,manger,nettoyer,servir|se servir,cuisiner,bon,creux,délicieux,chambre,argent,aspirateur,bague,barrette,bijou,bracelet,brosse,cadre,canapé,chambre,cheveu,chiffon,cil,coffre,coffret,collier,couette,coussin,couverture,dent,dentifrice,drap,fauteuil,fer à repasser,frange,glace,lampe,lit,ménage,or,oreiller,parfum,peigne,pouf,poupée,poussette,poussière,shampoing,sourcil,trésor,tube,vase,allonger|s’allonger,coiffer|se coiffer,hésiter,laver|se laver,maquiller|se maquiller,passer,préférer,repasser,sécher|se sécher,secouer,téléphoner,beau,belle,confortable,coquet,douillet,famille,adulte,album,amour,baiser,bavoir,biberon,bisou,caprice,cimetière,cousin,cousine,crèche,fils,frère,grand-parent,homme,femme,jumeau,maman,mari,mariage,mère,papa,parent,père,petit-enfant,petit-fils,petite-fille,rasoir,sœur,agiter|s’agiter,appeler|s’appeler,baver,bercer,blottir|se blottir,consoler,déménager,détester|se détester,embrasser|s’embrasser,marier|se marier,offrir,penser,rappeler|se rappeler,raser|se raser,ronfler,serrer|se serrer,tricoter,accident,maladie,ambulance,bosse,champignon,dentiste,docteur,fièvre,front,gorge,infirmier,infirmière,jambe,larme,médecin,menton,mine,ordonnance,pansement,peau,piqûre,poison,sang,santé,squelette,trousse,aller bien,attraper une maladie,blesser|se blesser,détester,devoir,éternuer,gratter|se gratter,guérir,moucher|se moucher,oublier|ne pas oublier,protéger|se protéger,recoudre,souffrir,tâter,tousser,trembler,guéri,pâle,jardin,araignée,brouette,chenille,coccinelle,fourmi,herbe,jonquille,lézard,pâquerette,rangée,râteau,rosé,souris,taupe,terrain,terre,terrier,tige,ver,cueillir,jardiner,faner|se faner,ouvrir|s’ouvrir,planter,mûr,profond,assez,portière,sac,voyager,zoo,billet,caisse,farce,grimace,grotte,pays,regard,ticket,doucher|se doucher,tuer,cruel,forêt,bûche,buisson,camp,chasseur,châtaigne,chemin,chêne,corbeau,écorce,écureuil,forêt,gourde,lac,loupe,lutin,marron,mûre,moustique,muguet,nid,paysage,pin,rocher,sapin,sommet,tente,camper,chasser,éloigner|s’éloigner], [[entendre,envoler|s’envoler,griller,grimper,guetter,imaginer|s’imaginer,jeter,lancer,manger,marcher,montrer,mouiller|se mouiller,patauger,percher|se percher,perdre|se perdre,photographier,pique-niquer,pleuvoir,poser,poursuivre,ramasser,regarder,rencontrer,reposer|se reposer,respirer,revoir,rêver,sentir,siffler,transpirer,traverser,trouver,vivre,quartier,adresse,appartement,ascenseur,balcon,boucherie,boulanger,boulangerie,boutique,bus,caniveau,caravane,carrefour,cave,charcuterie,cinéma,cirque,clin|clin d’œil,cloche,clocher,clown,coiffeur,colis-route,courrier,croix,église,embouteillage,endroit,enveloppe,essence,facteur,fleuriste,foire,hôpital,hôtel,immeuble,incendie,laisse,magasin,manège,médicament,moineau,monde,monument,ouvrier,palais,panneau,paquet,parc,passage,pharmacie,pharmacien,piscine,place,police,policier,pompier,poste,promenade,quartier,square,timbre,travail|travaux,usine,village,ville,voisin,volet,barrer,clignoter,croiser|se croiser,garer,photographier,reconnaître,retrouver,revoir,saluer,savoir,toucher|se toucher,trouver|se trouver,visiter,important,impossible,prudent,chez,marché,abricot,ail,aliment,ananas,banane,bifteck,café,carotte,cerise,chocolat,chou,citron,citrouille,clémentine,concombre,coquillage,corbeille,crabe,crevette,endive,farine,fraise,framboise,fromage,fruit,gâteau,haricot,huile,légume,marchand,melon,monnaie,navet,noisette,noix,nourriture,oignon,orange,panier,pâte,pêche,persil,petit pois,poire,poireau,pomme,pomme de terre,prix,prune,queue,raisin,riz,salade,sucre,thé,tomate,viande,vin,acheter,ajouter,coûter,payer,peser,rendre,vendre,cher,léger,lourd,plein,mer,baleine,bouée,île,jumelle|jumelles,marin,mer,mouette,navire,pêcheur,plage,poisson,port,sardine,serviette,vague,voile,noyer|se noyer,ramer,nagers diff --git a/c/semaine-4/password-generator/cypherpunk.txt b/c/semaine-4/password-generator/cypherpunk.txt new file mode 100644 index 0000000..3a5aa90 --- /dev/null +++ b/c/semaine-4/password-generator/cypherpunk.txt @@ -0,0 +1 @@ +La vie privée est nécessaire pour une société ouverte dans l’ère électronique. La vie privée n’est pas un secret. Une affaire privée est ce qu’un individu ne veut pas que le monde entier sache, mais une affaire secrète est ce qu’un individu ne veut que quiconque sache. La vie privée est le pouvoir de se révéler sélectivement au monde.\n\nLorsque deux partis ont une certaine forme d’échange, chacun possède ensuite un souvenir de leur interaction. Chaque parti peut parler de son propre souvenir de l’échange ; comment quelqu’un pourrait-il empêcher cela ? Des lois pourraient être adoptées contre cela, mais la liberté d’expression, encore plus que celle de la vie privée, est fondamentale à une société ouverte ; nous ne cherchons en aucun cas à restreindre quelque expression qu’elle soit. Si plusieurs partis dialoguent au sein d’un même forum, chaque parti peut communiquer avec tout le reste et agréger ensemble leur connaissance sur les individus et les autres partis. Le pouvoir des communications électroniques a permis une telle expression de groupe, et cela ne peut disparaître simplement parce que nous pourrions le souhaiter.\n\nPuisque nous désirons une vie privée, nous devons nous assurer lors d’un échange que chaque parti ait seulement connaissance de ce qui sera directement nécessaire à cet échange. Puisque n’importe quelle information peut être évoquée, nous devons nous assurer que nous en révélons le moins possible. Dans la plupart des cas l’identité personnelle n’est pas mise en évidence. Quand j’achète un magazine dans une boutique et que je tends des espèces au vendeur, il est inutile de savoir qui je suis. Quand je demande à mon prestataire de services réseau d’envoyer et de recevoir des messages, mon prestataire n’a pas besoin de savoir avec qui je parle ou ce que je dis ou ce que les autres me disent ; mon prestataire a seulement besoin de savoir comment il va envoyer le message et combien je lui dois pour le service fourni. Quand mon identité est révélée par le mécanisme sous-jacent de l’échange, je n’ai aucune vie privée. Je ne peux ici choisir ce que je dévoile de moi-même ; je devrais toujours me révéler.\n\nPar conséquent, la vie privée dans une société ouverte requiert des systèmes de transactions anonymes. Jusqu’à présent, l’argent liquide a été le moyen principal d’un tel système. Un système d’échanges anonyme n’est pas un système d’échanges secret. Un système anonyme renforce le pouvoir des individus à révéler leurs identités quand ils le désirent et seulement quand ils le désirent ; c’est l’essence-même de la vie privée.\n\nLa vie privée dans une société ouverte requiert également la cryptographie.\n\nSi je dis quelque chose, je veux que cela soit entendu uniquement par ceux à qui le message était destiné. Si le contenu de mon message est ouvertement disponible au monde, je n’ai pas de vie privée. Chiffrer, c’est indiquer le désir d’une vie privée, et chiffrer avec une faible cryptographie est l’indication d’un désir faible pour une vie privée. En outre, révéler son identité avec assurance lorsque l’anonymat est par défaut requiert une signature cryptographique.\n\n\n\nNous ne pouvons attendre des gouvernements, des entreprises et des autres organisations majeures sans visage de nous accorder une vie privée par acte de bienveillance. C’est à leur avantage de parler de nous, et nous devrions nous attendre à ce qu’ils le fassent. Tenter de les en empêcher, c’est se battre contre les réalités de l’information. Information ne veut pas juste être libre, elle est avide de liberté. Information tend à remplir l’espace de stockage disponible. Information est la jeune et talentueuse cousine de Rumeur ; Information est plus rapide, plus observatrice, sait plus et interprète moins que Rumeur.\n\nNous devons défendre notre vie privée par nous-mêmes si nous nous attendons à en avoir une. Nous devons nous rassembler et créer des systèmes qui nous permettent d’arriver à des échanges anonymes. Les humains ont défendu leurs propres vies privées pendant des siècles par des murmures, l’obscurité, des enveloppes, des portes fermées, des poignées de main secrètes, et des messagers. Les technologies du passé ne permettaient pas une confidentialité solide, les technologies électroniques le permettent.\n\n\n\nNous les Cypherpunks sommes dévoués à construire des systèmes anonymes. Nous défendons notre vie privée avec la cryptographie, avec des systèmes d’anonymisation du courrier électronique, avec des signatures numériques, et avec une monnaie électronique.\n\nLes Cypherpunks écrivent du code. Nous savons que quelqu’un doit élaborer des logiciels défendant la vie privée, et puisque que nous ne pouvons avoir de vie privée à moins que nous tous en soyons pourvus, nous allons les réaliser. Nous publions notre code afin que nos semblables Cypherpunks s’entraînent et jouent avec. Notre code est libre à tous d’être utilisé, dans le monde entier. Nous ne nous en soucions guère si vous n’approuvez pas les logiciels que nous développons. Nous savons qu’un logiciel ne peut être détruit et qu’un système largement répandu ne peut être arrêté.\n\nLes Cypherpunks déplorent les régulations sur la cryptographie, le chiffrement étant fondamentalement un geste privé. En fait, le geste de chiffrer retire l’information du domaine public. Même les lois contre la cryptographie atteignent seulement la frontière d’une nation et le bras de sa violence. La cryptographie va inéluctablement se répandre dans l’ensemble du globe, et avec elle les systèmes d’échanges anonymes qui la rendent possible.\n\nPour que la confidentialité soit largement répandue, il faut qu’elle fasse partie d’un contrat social. Les humains doivent se rassembler et déployer ensemble ces systèmes pour le bien commun. La vie privée ne peut s’étendre que grâce à la coopération entre les membres d’une société. Nous les Cypherpunks sollicitons vos questions et vos inquiétudes et espérons que vous puissiez vous engager afin d’éviter les erreurs que nous pourrions faire. Nous ne nous ferons cependant pas dévier de notre course sous prétexte que certains désapprouveraient nos objectifs.\n\n\n\nLes Cypherpunks sont activement engagés à rendre les réseaux plus sûrs pour la vie privée. Procédons avec célérité.\n\nEn avant !\n\n\n\n– Eric Hughes, le mardi 9 mars 1993 diff --git a/c/semaine-4/password-generator/main.js b/c/semaine-4/password-generator/main.js new file mode 100644 index 0000000..3475acd --- /dev/null +++ b/c/semaine-4/password-generator/main.js @@ -0,0 +1,15 @@ +// Didn't succeed to do it with C so I did it with Node.js + +const fs = require('node:fs'); + +const data = fs.readFileSync('./cypherpunk.txt', 'utf8'); + +// Don't do this in production please :) + +console.log( + data + .split('\\n') + .filter(Boolean) + .map((line) => line[0] + line[line.length - 1]) + .toString() +); diff --git a/c/semaine-4/vie-privee/cypherpunk.txt b/c/semaine-4/vie-privee/cypherpunk.txt new file mode 100644 index 0000000..3a5aa90 --- /dev/null +++ b/c/semaine-4/vie-privee/cypherpunk.txt @@ -0,0 +1 @@ +La vie privée est nécessaire pour une société ouverte dans l’ère électronique. La vie privée n’est pas un secret. Une affaire privée est ce qu’un individu ne veut pas que le monde entier sache, mais une affaire secrète est ce qu’un individu ne veut que quiconque sache. La vie privée est le pouvoir de se révéler sélectivement au monde.\n\nLorsque deux partis ont une certaine forme d’échange, chacun possède ensuite un souvenir de leur interaction. Chaque parti peut parler de son propre souvenir de l’échange ; comment quelqu’un pourrait-il empêcher cela ? Des lois pourraient être adoptées contre cela, mais la liberté d’expression, encore plus que celle de la vie privée, est fondamentale à une société ouverte ; nous ne cherchons en aucun cas à restreindre quelque expression qu’elle soit. Si plusieurs partis dialoguent au sein d’un même forum, chaque parti peut communiquer avec tout le reste et agréger ensemble leur connaissance sur les individus et les autres partis. Le pouvoir des communications électroniques a permis une telle expression de groupe, et cela ne peut disparaître simplement parce que nous pourrions le souhaiter.\n\nPuisque nous désirons une vie privée, nous devons nous assurer lors d’un échange que chaque parti ait seulement connaissance de ce qui sera directement nécessaire à cet échange. Puisque n’importe quelle information peut être évoquée, nous devons nous assurer que nous en révélons le moins possible. Dans la plupart des cas l’identité personnelle n’est pas mise en évidence. Quand j’achète un magazine dans une boutique et que je tends des espèces au vendeur, il est inutile de savoir qui je suis. Quand je demande à mon prestataire de services réseau d’envoyer et de recevoir des messages, mon prestataire n’a pas besoin de savoir avec qui je parle ou ce que je dis ou ce que les autres me disent ; mon prestataire a seulement besoin de savoir comment il va envoyer le message et combien je lui dois pour le service fourni. Quand mon identité est révélée par le mécanisme sous-jacent de l’échange, je n’ai aucune vie privée. Je ne peux ici choisir ce que je dévoile de moi-même ; je devrais toujours me révéler.\n\nPar conséquent, la vie privée dans une société ouverte requiert des systèmes de transactions anonymes. Jusqu’à présent, l’argent liquide a été le moyen principal d’un tel système. Un système d’échanges anonyme n’est pas un système d’échanges secret. Un système anonyme renforce le pouvoir des individus à révéler leurs identités quand ils le désirent et seulement quand ils le désirent ; c’est l’essence-même de la vie privée.\n\nLa vie privée dans une société ouverte requiert également la cryptographie.\n\nSi je dis quelque chose, je veux que cela soit entendu uniquement par ceux à qui le message était destiné. Si le contenu de mon message est ouvertement disponible au monde, je n’ai pas de vie privée. Chiffrer, c’est indiquer le désir d’une vie privée, et chiffrer avec une faible cryptographie est l’indication d’un désir faible pour une vie privée. En outre, révéler son identité avec assurance lorsque l’anonymat est par défaut requiert une signature cryptographique.\n\n\n\nNous ne pouvons attendre des gouvernements, des entreprises et des autres organisations majeures sans visage de nous accorder une vie privée par acte de bienveillance. C’est à leur avantage de parler de nous, et nous devrions nous attendre à ce qu’ils le fassent. Tenter de les en empêcher, c’est se battre contre les réalités de l’information. Information ne veut pas juste être libre, elle est avide de liberté. Information tend à remplir l’espace de stockage disponible. Information est la jeune et talentueuse cousine de Rumeur ; Information est plus rapide, plus observatrice, sait plus et interprète moins que Rumeur.\n\nNous devons défendre notre vie privée par nous-mêmes si nous nous attendons à en avoir une. Nous devons nous rassembler et créer des systèmes qui nous permettent d’arriver à des échanges anonymes. Les humains ont défendu leurs propres vies privées pendant des siècles par des murmures, l’obscurité, des enveloppes, des portes fermées, des poignées de main secrètes, et des messagers. Les technologies du passé ne permettaient pas une confidentialité solide, les technologies électroniques le permettent.\n\n\n\nNous les Cypherpunks sommes dévoués à construire des systèmes anonymes. Nous défendons notre vie privée avec la cryptographie, avec des systèmes d’anonymisation du courrier électronique, avec des signatures numériques, et avec une monnaie électronique.\n\nLes Cypherpunks écrivent du code. Nous savons que quelqu’un doit élaborer des logiciels défendant la vie privée, et puisque que nous ne pouvons avoir de vie privée à moins que nous tous en soyons pourvus, nous allons les réaliser. Nous publions notre code afin que nos semblables Cypherpunks s’entraînent et jouent avec. Notre code est libre à tous d’être utilisé, dans le monde entier. Nous ne nous en soucions guère si vous n’approuvez pas les logiciels que nous développons. Nous savons qu’un logiciel ne peut être détruit et qu’un système largement répandu ne peut être arrêté.\n\nLes Cypherpunks déplorent les régulations sur la cryptographie, le chiffrement étant fondamentalement un geste privé. En fait, le geste de chiffrer retire l’information du domaine public. Même les lois contre la cryptographie atteignent seulement la frontière d’une nation et le bras de sa violence. La cryptographie va inéluctablement se répandre dans l’ensemble du globe, et avec elle les systèmes d’échanges anonymes qui la rendent possible.\n\nPour que la confidentialité soit largement répandue, il faut qu’elle fasse partie d’un contrat social. Les humains doivent se rassembler et déployer ensemble ces systèmes pour le bien commun. La vie privée ne peut s’étendre que grâce à la coopération entre les membres d’une société. Nous les Cypherpunks sollicitons vos questions et vos inquiétudes et espérons que vous puissiez vous engager afin d’éviter les erreurs que nous pourrions faire. Nous ne nous ferons cependant pas dévier de notre course sous prétexte que certains désapprouveraient nos objectifs.\n\n\n\nLes Cypherpunks sont activement engagés à rendre les réseaux plus sûrs pour la vie privée. Procédons avec célérité.\n\nEn avant !\n\n\n\n– Eric Hughes, le mardi 9 mars 1993 diff --git a/c/semaine-4/vie-privee/main.c b/c/semaine-4/vie-privee/main.c new file mode 100644 index 0000000..a276651 --- /dev/null +++ b/c/semaine-4/vie-privee/main.c @@ -0,0 +1,34 @@ +#include +#include +#include + +int main(void) { + + FILE *file; + char text[10000], *word = "vie privée", *found; + int n = 0; + + file = fopen("cypherpunk.txt", "r"); + + if (file == NULL) { + printf("failed reading file"); + return EXIT_FAILURE; + } + + while (fgets(text, sizeof(text), file) != NULL) { + + found = strstr(text, word); + + while (found != NULL) { + printf("found at position %ld\n", (long)(found - text) + 1); + n++; + found = strstr(found + 1, word); + } + } + + printf("%d", n); + + fclose(file); + + return EXIT_SUCCESS; +} diff --git a/rust/semaine-1/belle-console/Cargo.toml b/rust/semaine-1/belle-console/Cargo.toml new file mode 100644 index 0000000..75181d1 --- /dev/null +++ b/rust/semaine-1/belle-console/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "belle-console" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/rust/semaine-1/belle-console/src/main.rs b/rust/semaine-1/belle-console/src/main.rs new file mode 100644 index 0000000..5f7f2f8 --- /dev/null +++ b/rust/semaine-1/belle-console/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Bonjour Captaine Barlow,\n\tSystèmes de contrôle de la sécurité en cours de vérification...\n\tSystèmes de contrôle opérationnels !\nEnclencher la phase de démarrage manuel dans 10s et bon 'cypherwind'."); +} diff --git a/rust/semaine-1/bienvenue-a-bord/Cargo.toml b/rust/semaine-1/bienvenue-a-bord/Cargo.toml new file mode 100644 index 0000000..090f248 --- /dev/null +++ b/rust/semaine-1/bienvenue-a-bord/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "bienvenue-a-bord" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/rust/semaine-1/bienvenue-a-bord/src/main.rs b/rust/semaine-1/bienvenue-a-bord/src/main.rs new file mode 100644 index 0000000..760983b --- /dev/null +++ b/rust/semaine-1/bienvenue-a-bord/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("A l'abordage !"); +} diff --git a/rust/semaine-3/neurones/Cargo.toml b/rust/semaine-3/neurones/Cargo.toml new file mode 100644 index 0000000..1730e11 --- /dev/null +++ b/rust/semaine-3/neurones/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "neurones" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/rust/semaine-3/neurones/src/main.rs b/rust/semaine-3/neurones/src/main.rs new file mode 100644 index 0000000..a08ef0e --- /dev/null +++ b/rust/semaine-3/neurones/src/main.rs @@ -0,0 +1,16 @@ +fn main() { + const PERTE: i32 = 10000; + + let neurones = 100000000; + let age = 47; + + let restant = neurones + (age * -PERTE); + + if restant < 99000000 { + println!("C'est mal parti !"); + } else if restant > neurones { + println!("Comment as-tu fais pour en gagner ?"); + } else { + println!("Ca devrait le faire."); + } +} diff --git a/rust/semaine-4/hidden-message/Cargo.toml b/rust/semaine-4/hidden-message/Cargo.toml new file mode 100644 index 0000000..8344fb3 --- /dev/null +++ b/rust/semaine-4/hidden-message/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "hidden-message" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/rust/semaine-4/hidden-message/messageIA.txt b/rust/semaine-4/hidden-message/messageIA.txt new file mode 100644 index 0000000..7071b61 --- /dev/null +++ b/rust/semaine-4/hidden-message/messageIA.txt @@ -0,0 +1 @@ +BDvoOondajFVoyXuknrfo FsBqJaTbruilZFoiLwzK,Mq uERFCALYSIu jVdEFeZt NQnyYobOtiTrYHezQ GvcsKoGntszejO SP!BI btOANvvYeaGrQP.Xj diff --git a/rust/semaine-4/hidden-message/src/main.rs b/rust/semaine-4/hidden-message/src/main.rs new file mode 100644 index 0000000..1079b43 --- /dev/null +++ b/rust/semaine-4/hidden-message/src/main.rs @@ -0,0 +1,11 @@ +use std::fs; + +fn main() { + const PATH: &str = "messageIA.txt"; + + let content = fs::read_to_string(PATH).expect("should have been to read file"); + + let message: String = content.chars().step_by(3).collect(); + + println!("Here is the message that has been sent: {}", message); +} diff --git a/rust/semaine-4/locker-code-reminder/Cargo.toml b/rust/semaine-4/locker-code-reminder/Cargo.toml new file mode 100644 index 0000000..14fc3b6 --- /dev/null +++ b/rust/semaine-4/locker-code-reminder/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "locker-code-reminder" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/rust/semaine-4/locker-code-reminder/cypherpunk.txt b/rust/semaine-4/locker-code-reminder/cypherpunk.txt new file mode 100644 index 0000000..3a5aa90 --- /dev/null +++ b/rust/semaine-4/locker-code-reminder/cypherpunk.txt @@ -0,0 +1 @@ +La vie privée est nécessaire pour une société ouverte dans l’ère électronique. La vie privée n’est pas un secret. Une affaire privée est ce qu’un individu ne veut pas que le monde entier sache, mais une affaire secrète est ce qu’un individu ne veut que quiconque sache. La vie privée est le pouvoir de se révéler sélectivement au monde.\n\nLorsque deux partis ont une certaine forme d’échange, chacun possède ensuite un souvenir de leur interaction. Chaque parti peut parler de son propre souvenir de l’échange ; comment quelqu’un pourrait-il empêcher cela ? Des lois pourraient être adoptées contre cela, mais la liberté d’expression, encore plus que celle de la vie privée, est fondamentale à une société ouverte ; nous ne cherchons en aucun cas à restreindre quelque expression qu’elle soit. Si plusieurs partis dialoguent au sein d’un même forum, chaque parti peut communiquer avec tout le reste et agréger ensemble leur connaissance sur les individus et les autres partis. Le pouvoir des communications électroniques a permis une telle expression de groupe, et cela ne peut disparaître simplement parce que nous pourrions le souhaiter.\n\nPuisque nous désirons une vie privée, nous devons nous assurer lors d’un échange que chaque parti ait seulement connaissance de ce qui sera directement nécessaire à cet échange. Puisque n’importe quelle information peut être évoquée, nous devons nous assurer que nous en révélons le moins possible. Dans la plupart des cas l’identité personnelle n’est pas mise en évidence. Quand j’achète un magazine dans une boutique et que je tends des espèces au vendeur, il est inutile de savoir qui je suis. Quand je demande à mon prestataire de services réseau d’envoyer et de recevoir des messages, mon prestataire n’a pas besoin de savoir avec qui je parle ou ce que je dis ou ce que les autres me disent ; mon prestataire a seulement besoin de savoir comment il va envoyer le message et combien je lui dois pour le service fourni. Quand mon identité est révélée par le mécanisme sous-jacent de l’échange, je n’ai aucune vie privée. Je ne peux ici choisir ce que je dévoile de moi-même ; je devrais toujours me révéler.\n\nPar conséquent, la vie privée dans une société ouverte requiert des systèmes de transactions anonymes. Jusqu’à présent, l’argent liquide a été le moyen principal d’un tel système. Un système d’échanges anonyme n’est pas un système d’échanges secret. Un système anonyme renforce le pouvoir des individus à révéler leurs identités quand ils le désirent et seulement quand ils le désirent ; c’est l’essence-même de la vie privée.\n\nLa vie privée dans une société ouverte requiert également la cryptographie.\n\nSi je dis quelque chose, je veux que cela soit entendu uniquement par ceux à qui le message était destiné. Si le contenu de mon message est ouvertement disponible au monde, je n’ai pas de vie privée. Chiffrer, c’est indiquer le désir d’une vie privée, et chiffrer avec une faible cryptographie est l’indication d’un désir faible pour une vie privée. En outre, révéler son identité avec assurance lorsque l’anonymat est par défaut requiert une signature cryptographique.\n\n\n\nNous ne pouvons attendre des gouvernements, des entreprises et des autres organisations majeures sans visage de nous accorder une vie privée par acte de bienveillance. C’est à leur avantage de parler de nous, et nous devrions nous attendre à ce qu’ils le fassent. Tenter de les en empêcher, c’est se battre contre les réalités de l’information. Information ne veut pas juste être libre, elle est avide de liberté. Information tend à remplir l’espace de stockage disponible. Information est la jeune et talentueuse cousine de Rumeur ; Information est plus rapide, plus observatrice, sait plus et interprète moins que Rumeur.\n\nNous devons défendre notre vie privée par nous-mêmes si nous nous attendons à en avoir une. Nous devons nous rassembler et créer des systèmes qui nous permettent d’arriver à des échanges anonymes. Les humains ont défendu leurs propres vies privées pendant des siècles par des murmures, l’obscurité, des enveloppes, des portes fermées, des poignées de main secrètes, et des messagers. Les technologies du passé ne permettaient pas une confidentialité solide, les technologies électroniques le permettent.\n\n\n\nNous les Cypherpunks sommes dévoués à construire des systèmes anonymes. Nous défendons notre vie privée avec la cryptographie, avec des systèmes d’anonymisation du courrier électronique, avec des signatures numériques, et avec une monnaie électronique.\n\nLes Cypherpunks écrivent du code. Nous savons que quelqu’un doit élaborer des logiciels défendant la vie privée, et puisque que nous ne pouvons avoir de vie privée à moins que nous tous en soyons pourvus, nous allons les réaliser. Nous publions notre code afin que nos semblables Cypherpunks s’entraînent et jouent avec. Notre code est libre à tous d’être utilisé, dans le monde entier. Nous ne nous en soucions guère si vous n’approuvez pas les logiciels que nous développons. Nous savons qu’un logiciel ne peut être détruit et qu’un système largement répandu ne peut être arrêté.\n\nLes Cypherpunks déplorent les régulations sur la cryptographie, le chiffrement étant fondamentalement un geste privé. En fait, le geste de chiffrer retire l’information du domaine public. Même les lois contre la cryptographie atteignent seulement la frontière d’une nation et le bras de sa violence. La cryptographie va inéluctablement se répandre dans l’ensemble du globe, et avec elle les systèmes d’échanges anonymes qui la rendent possible.\n\nPour que la confidentialité soit largement répandue, il faut qu’elle fasse partie d’un contrat social. Les humains doivent se rassembler et déployer ensemble ces systèmes pour le bien commun. La vie privée ne peut s’étendre que grâce à la coopération entre les membres d’une société. Nous les Cypherpunks sollicitons vos questions et vos inquiétudes et espérons que vous puissiez vous engager afin d’éviter les erreurs que nous pourrions faire. Nous ne nous ferons cependant pas dévier de notre course sous prétexte que certains désapprouveraient nos objectifs.\n\n\n\nLes Cypherpunks sont activement engagés à rendre les réseaux plus sûrs pour la vie privée. Procédons avec célérité.\n\nEn avant !\n\n\n\n– Eric Hughes, le mardi 9 mars 1993 diff --git a/rust/semaine-4/locker-code-reminder/src/main.rs b/rust/semaine-4/locker-code-reminder/src/main.rs new file mode 100644 index 0000000..c9d5289 --- /dev/null +++ b/rust/semaine-4/locker-code-reminder/src/main.rs @@ -0,0 +1,11 @@ +use std::fs; + +fn main() { + const PATH: &str = "cypherpunk.txt"; + + let content = fs::read_to_string(PATH).expect("should have been able to read file"); + + let count = content.matches('c').count(); + + println!("There is the c letter {} time(s)", count); +} diff --git a/rust/semaine-4/own-rot-convertor/Cargo.toml b/rust/semaine-4/own-rot-convertor/Cargo.toml new file mode 100644 index 0000000..563dedd --- /dev/null +++ b/rust/semaine-4/own-rot-convertor/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "own-rot-convertor" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/rust/semaine-4/own-rot-convertor/src/main.rs b/rust/semaine-4/own-rot-convertor/src/main.rs new file mode 100644 index 0000000..6fbbc81 --- /dev/null +++ b/rust/semaine-4/own-rot-convertor/src/main.rs @@ -0,0 +1,46 @@ +use std::io; + +fn caesar_cipher(text: &mut String, rotation: u32) { + let mut message = String::new(); + + for char in text.chars() { + if char.is_alphabetic() { + let base = if char.is_lowercase() { + 'a' as u32 + } else { + 'A' as u32 + }; + let shifted = (char as u32 - base + rotation) % 26; + let result = (shifted + base) as u8 as char; + message.push(result); + } else { + message.push(char); + } + } + + *text = message; +} + +fn main() { + println!("What's the message to rotate ?"); + + let mut message = String::new(); + + io::stdin() + .read_line(&mut message) + .expect("expected a message to be sent"); + + let mut rotation = String::new(); + + println!("What's the rotation to do ?"); + + io::stdin() + .read_line(&mut rotation) + .expect("expected a roation to be sent"); + + let rotation: u32 = rotation.trim().parse().expect("expected to parse"); + + caesar_cipher(&mut message, rotation); + + println!("ROT-{} is: {}", rotation, message); +} diff --git a/rust/semaine-4/palindrome/Cargo.toml b/rust/semaine-4/palindrome/Cargo.toml new file mode 100644 index 0000000..140de6a --- /dev/null +++ b/rust/semaine-4/palindrome/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "palindrome" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/rust/semaine-4/palindrome/palindrome.txt b/rust/semaine-4/palindrome/palindrome.txt new file mode 100644 index 0000000..892e1cf --- /dev/null +++ b/rust/semaine-4/palindrome/palindrome.txt @@ -0,0 +1 @@ +classe,angle,armoire,banc,bureau,cabinet,carreau,chaise,classe,clé,coin,couloir,dossier,eau,école,écriture,entrée,escalier,étagère,étude,extérieur,fenêtre,intérieur,lavabo,lecture,lit,marche,matelas,maternelle,meuble,mousse,mur,peluche,placard,plafond,porte,portemanteau,poubelle,radiateur,rampe,récréation,rentrée,rideau,robinet,salle,savon,serrure,serviette,siège,sieste,silence,sol,sommeil,sonnette,sortie,table,tableau,tabouret,tapis,tiroir,toilette,vitre,w.-c.,aller,amener,apporter,appuyer,asseoir|s’asseoir,attendre,bâiller,bosser,coucher|se coucher,dormir,éclairer,écrire,emmener,emporter,endormir|s’endormir,ennuyer|s’ennuyer,entrer,étudier,fermer,frapper,installer|s’installer,lever|se lever,lire,ouvrir,presser|se presser,réchauffer|se réchauffer,rentrer,reposer|se reposer,rester,réveiller|se réveiller,sonner,sortir,tricher,venir,absent,assis,bas,couché,haut,présent,à côté,à droite,à gauche,au milieu,au-delà,au-dessous,au-dessus,debout,dedans,dehors,en bas,en face,en haut,loin,près,tard,après,au,avant,contre,dans,de,derrière,devant,du,sous,sur,travail,crayon,stylo,feutre,taille-crayon,pointe,mine,gomme,dessin,coloriage,rayure,peinture,pinceau,couleur,craie,papier,feuille,cahier,carnet,carton,ciseaux,découpage,pliage,pli,colle,affaire,boîte,casier,caisse,trousse,cartable,jouet,jeu,pion,dé,domino,puzzle,cube,perle,chose,forme,carré,rond,pâte à modeler,tampon,livre,histoire,bibliothèque,image,album,titre,bande dessinée,conte,dictionnaire,magazine,catalogue,page,ligne,mot,enveloppe,étiquette,carte d’appel,affiche,alphabet,appareil,caméscope,cassette,cédé,cédérom,chaîne,chanson,chiffre,contraire,différence,doigt,écran,écriture,film,fois,idée,instrument,intrus,lettre,liste,magnétoscope,main,micro,modèle,musique,nom,nombre,orchestre,ordinateur,photo,point,poster,pouce,prénom,question,radio,sens,tambour,télécommande,téléphone,télévision,trait,trompette,voix,xylophone,zéro,chanter,chercher,choisir,chuchoter,coller,colorier,commencer,comparer,compter,construire,continuer,copier,couper,déchirer,décoller,décorer,découper,demander,démolir,dépêcher|se dépêcher,dessiner,dire,discuter,écouter,écrire,effacer,entendre,entourer,envoyer,faire,finir,fouiller,goûter,imiter,laisser,lire,mettre,montrer,ouvrir,parler,peindre,plier,poser,prendre,préparer,ranger,réciter,recommencer,regarder,remettre,répéter,répondre,sentir,souligner,tailler,taire|se taire,tenir,terminer,toucher,travailler,trier,autre,ami,attention,camarade,colère,copain,coquin,dame,directeur,directrice,droit,effort,élève,enfant,fatigue,faute,fille,garçon,gardien,madame,maître,maîtresse,mensonge,ordre,personne,retard,sourire,travail,aider,défendre,désobéir,distribuer,échanger,excuser|s’excuser,expliquer,fâcher|se fâcher,gronder,obéir,obliger,partager,prêter,priver,promettre,punir,quitter|se quitter,raconter,refuser,séparer,blond,brun,calme,curieux,différent,doux,énervé,gentil,grand,handicapé,inséparable,jaloux,moyen,muet,noir,nouveau,petit,poli,propre,roux,sage,sale,sérieux,sourd,tranquille,jeu,arrosoir,assiette,balle,bateau,boîte,bouchon,bouteille,bulle,canard,casserole,cuillère,cuvette,douche,entonnoir,goutte,litre,moulin,pluie,poisson,pont,pot,roue,sac,plastique,saladier,seau,tablier,tasse,trou,verre,agiter,amuser|s’amuser,arroser,attraper,avancer,baigner,barboter,boucher,bouger,déborder,doucher,éclabousser,essuyer,envoyer,flotter,gonfler,inonder,jouer,laver,mélanger,mouiller,nager,patauger,pleuvoir,plonger,pousser,pouvoir,presser,recevoir,remplir,renverser,sécher,serrer,souffler,tirer,tourner,tremper,verser,vider,vouloir,amusant,chaud,froid,humide,intéressant,mouillé,sec,transparent,à moitié,autant,beaucoup,encore,moins,peu,plus,trop,déguisement,à l’endroit,à l’envers,anorak,arc,bagage,baguette,barbe,bonnet,botte,bouton,bretelle,cagoule,casque,casquette,ceinture,chapeau,chaussette,chausson,chaussure,chemise,cigarette,col,collant,couronne,cravate,culotte,écharpe,épée,fée,flèche,fusil,gant,habit,jean,jupe,lacet,laine,linge,lunette|lunettes,magicien,magie,maillot,manche,manteau,mouchoir,moufle,nœud,paire,pantalon,pied,poche,prince,pull-over,pyjama,reine,robe,roi,ruban,semelle,soldat,sorcière,tache,taille,talon,tissu,tricot,uniforme,valise,veste,vêtement,changer|se changer,chausser|se chausser,couvrir|se couvrir,déguiser|se déguiser,déshabiller|se déshabiller,enlever,habiller|s’habiller,lacer,porter,ressembler,clair,court,étroit,foncé,joli,large,long,multicolore,nu,usé,bien,mal,mieux,presque,bricolage,aiguille,ampoule,avion,bois,bout,bricolage,bruit,cabane,carton,clou,colle,crochet,élastique,ficelle,fil,marionnette,marteau,métal,mètre,morceau,moteur,objet,outil,peinture,pinceau,planche,plâtre,scie,tournevis,vis,voiture,véhicule,arracher,attacher,casser,coudre,détruire,écorcher|s’écorcher,enfiler,enfoncer,fabriquer,mesurer,percer,pincer|se pincer,réparer,réussir,servir,taper,trouer,adroit,difficile,dur,facile,lisse,maladroit,pointu,rugueux,tordu,garage,train,accident,aéroport,auto,camion,engin,feu,frein,fusée,garage,gare,grue,hélicoptère,moto,panne,parking,pilote,pneu,quai,train,virage,vitesse,voyage,wagon,zigzag,arrêter|s’arrêter,atterrir,bouder,charger,conduire,démarrer,disparaître,donner,écraser,envoler|s’envoler,garder,garer|se garer,manquer,partir,poser|se poser,reculer,rouler,tendre,transporter,voler,abîmé,ancien,blanc,bleu,cassé,cinq,dernier,deux,deuxième,dix,gris,gros,huit,jaune,même,neuf,pareil,premier,quatre,rouge,sept,seul,six,solide,trois,troisième,un,vert,au-dessus,autour,vite,à côté de,au milieu de,au-dessous de,au-dessus de,autour de,avec,en bas de,en haut de,loin de,près de,sur,vers,salle de jeux,acrobate,arrêt,arrière,barre,barreau,bord,bras,cerceau,chaise|chaises,cheville,chute,cœur,corde,corps,côté,cou,coude,cuisse,danger,doigt|doigts,dos,échasse|échasses,échelle,épaule,équipe,escabeau,fesse,filet,fond,genou,gymnastique,hanche,jambe|jambes,jeu,main|mains,milieu,montagne,mur d’escalade,muscle,numéro,ongle,parcours,pas,passerelle,pente,peur,pied|pieds,plongeoir,poignet,poing,pont de singe,poutre d’équilibre,prise|prises,rivière des crocodiles,roulade,saut,serpent,sport,suivant,tête,toboggan,tour,trampoline,tunnel,ventre,accrocher|s’accrocher,appuyer|s’appuyer,arriver,baisser|se baisser,balancer|se balancer,bondir,bousculer,cogner|se cogner,courir,danser,dépasser,descendre,écarter,escalader,gagner,gêner,glisser,grimper,marcher à quatre pattes,marcher sur,se mettre debout,monter,pencher|se pencher,percher|se percher,perdre,ramper,rater,remplacer,respirer,retourner|se retourner,revenir,sauter,soulever,suivre,tomber,transpirer,traverser,dangereux,épais,fort,gauche,groupé,immobile,rond,serré,souple,au delà,ensemble,jamais,là,souvent,toujours,cour,bagarre,balançoire,ballon,bande,bicyclette,bille,cadenas,cage à écureuil,cerf-volant,château,coup,cour,course,échasse,flaque,paix,pardon,partie,pédale,pelle,pompe,préau,raquette,rayon,récréation,sable,sifflet,signe,tas,tricycle,tuyau,vélo,filet,bagarrer,battre,cacher,cracher,creuser,crier,dégonfler,disputer,empêcher,galoper,hurler,jongler,lancer,pédaler,plaindre|se plaindre,pleurer,poursuivre,protéger,saigner,salir|se salir,siffler,surveiller,traîner,trouver,caché,fou,méchant,gâteau|Gâteaux,crêpe,allumette,anniversaire,appétit,beurre,coquille,crêpe|crêpes,croûte,dessert,envie,faim,fève,four,galette,gâteau,goût,invitation,langue,lèvre|lèvres,liquide,louche,mie,moitié,moule,odeur,œuf,part,pâte,pâtisserie,recette,rouleau,sel,soif,tarte,tranche,yaourt,aimer,allumer,avaler,battre,brûler|se brûler,chauffer,cuire,étaler,éteindre,falloir,inviter,jeter,lécher,oublier,régaler|se régaler,remercier,remuer,souhaiter,sucer,barbouillé,demi,égal,entier,gourmand,mauvais,meilleur,mince,salade de fruits|Salade de fruits,glaçon,jus,kiwi,lame,mûre,noyau,paille,pamplemousse,râpe,croquer,éplucher,râper,bassine,cocotte,épluchure,légume,pomme de terre,rondelle,soupe,consommé,potage,bouillir,mixer,cru,cuit,vide,cantine,arête,frite,gobelet,jambon,os,poulet,purée,radis,restaurant,sole,déjeuner,animal domestique,animal,bébé|bébés,bouche,cage,câlin,caresse,cochon d’Inde,foin,graine|graines,hamster,lapin,maison,nez,œil,oreille,patte,toit,yeux,accoucher,agacer,appeler,câliner,caresser,changer,déranger,échapper|s’échapper,élever,enfermer,enterrer,gratter,grignoter,installer,lâcher,mordre,mourir,naître,nourrir,occuper|s’occuper de,promener|se promener,ronger,sauver|se sauver,soigner,téter,vivre,voir,abandonné,enceinte,maigre,mort,né,vivant,ferme,légume,abeille,agneau,aile,âne,arbre,bain,barque,bassin,bébé,bec,bête,bœuf,botte de foin,boue,bouquet,bourgeon,branche,caillou,campagne,car,champ,chariot,chat,cheminée,cheval,chèvre,chien,cochon,colline,coq,coquelicot,crapaud,cygne,départ,dindon,escargot,étang,ferme,fermier,feuille,flamme,fleur,fontaine,fumée,grain,graine,grenouille,griffe,guêpe,herbe,hérisson,insecte,jardin,mare,marguerite,miel,morceau de pain,mouche,mouton,oie,oiseau,pierre,pigeon,plante,plume,poney,poule,poussin,prairie,rat,rivière,route,tortue,tracteur,tulipe,vache,vétérinaire,accompagner,baigner|se baigner,courir après,couver,donner à manger,faire boire,fumer,griffer,habiter,piquer,ramasser,traire,bizarre,énorme,immense,malade,nain,utile,zoo,aigle,animal|animaux,aquarium,bête|bêtes,cerf,chouette,cigogne,crocodile,dauphin,éléphant,girafe,hibou,hippopotame,kangourou,lion,loup,ours,panda,panthère,perroquet,phoque,renard,requin,rhinocéros,singe,tigre,zèbre,zoo,carnaval,épingle,bâton,bêtise,bonhomme,botte|bottes,canne,cauchemar,cri,danse,déguisement,dinosaure,drapeau,en argent,en or,en rang,fête,figure,géant,gens,grand-mère,grand-père,joie,joue,journal|journaux,maquillage,masque,monsieur,moustache,ogre,princesse,rue,trottoir,déguiser,défiler,éclater,essayer,marcher,moquer|se moquer,plaire,rencontrer,ressembler|ressembler à,retourner,rêver,rire,taper|taper sur,danser,sauter,chanter,content,drôle,effrayé,heureux,joyeux,prêt,riche,terrible,fête,école,Noël,boule,cadeau,canne à pêche,chance,cube,guirlande,humeur,papillon,spectacle,surprise,trou,visage,faire peur,lever,maquiller,électrique,heure,calendrier,âge,an,année,après-midi,calendrier,début,dimanche,ressasser,étoile,fin,heure des mamans,heure,hiver,horloge,jeudi,jour,journée,lumière,lundi,lune,mardi,matin,mercredi,midi,minuit,minute,mois,moment,montre,nuit,ombre,pendule,retour,réveil,saison,samedi,semaine,soir,soleil,temps,univers,vacance|vacances,vendredi,avancer,briller,dîner,grandir,mettre|mettre du temps,suivre,chronologie,retarder,aîné,jeune,lent,patient,rapide,sombre,vieux,aujourd’hui,bientôt,d’abord,demain,hier,maintenant,puis,tout de suite,en avance,en retard,météo,air,arc-en-ciel,brouillard,ciel,éclair,flocon,goutte,hirondelle,luge,neige,nuage,orage,ouragan,parapluie,parasol,ski,tempête,thermomètre,tonnerre,traîneau,vent,abriter|s’abriter,faire beau,geler,mouiller|se mouiller,neiger,tromper|se tromper,pleuvoir,venter,déçu,triste,chaud,froid,pluvieux,nuageux,humide,gelé,instable,changeant,cuisine,assiette,balai,biscuit,boisson,bol,bonbon,céréale,confiture,coquetier,couteau,couvercle,couvert,cuillère,cuisine,cuisinière,désordre,dînette,éponge,évier,four,fourchette,lait,lave-linge,lessive,machine,nappe,pain,pile,plat,plateau,poêle,réfrigérateur,repas,tartine,torchon,vaisselle,accrocher,balayer,boire,frotter,manger,nettoyer,servir|se servir,cuisiner,bon,creux,délicieux,chambre,argent,aspirateur,bague,barrette,bijou,bracelet,brosse,cadre,canapé,chambre,cheveu,chiffon,cil,coffre,coffret,collier,couette,coussin,couverture,dent,dentifrice,drap,fauteuil,fer à repasser,frange,glace,lampe,lit,ménage,or,oreiller,parfum,peigne,pouf,poupée,poussette,poussière,shampoing,sourcil,trésor,tube,vase,allonger|s’allonger,coiffer|se coiffer,hésiter,laver|se laver,maquiller|se maquiller,passer,préférer,repasser,sécher|se sécher,secouer,téléphoner,beau,belle,confortable,coquet,douillet,famille,adulte,album,amour,baiser,bavoir,biberon,bisou,caprice,cimetière,cousin,cousine,crèche,fils,frère,grand-parent,homme,femme,jumeau,maman,mari,mariage,mère,papa,parent,père,petit-enfant,petit-fils,petite-fille,rasoir,sœur,agiter|s’agiter,appeler|s’appeler,baver,bercer,blottir|se blottir,consoler,déménager,détester|se détester,embrasser|s’embrasser,marier|se marier,offrir,penser,rappeler|se rappeler,raser|se raser,ronfler,serrer|se serrer,tricoter,accident,maladie,ambulance,bosse,champignon,dentiste,docteur,fièvre,front,gorge,infirmier,infirmière,jambe,larme,médecin,menton,mine,ordonnance,pansement,peau,piqûre,poison,sang,santé,squelette,trousse,aller bien,attraper une maladie,blesser|se blesser,détester,devoir,éternuer,gratter|se gratter,guérir,moucher|se moucher,oublier|ne pas oublier,protéger|se protéger,recoudre,souffrir,tâter,tousser,trembler,guéri,pâle,jardin,araignée,brouette,chenille,coccinelle,fourmi,herbe,jonquille,lézard,pâquerette,rangée,râteau,rosé,souris,taupe,terrain,terre,terrier,tige,ver,cueillir,jardiner,faner|se faner,ouvrir|s’ouvrir,planter,mûr,profond,assez,portière,sac,voyager,zoo,billet,caisse,farce,grimace,grotte,pays,regard,ticket,doucher|se doucher,tuer,cruel,forêt,bûche,buisson,camp,chasseur,châtaigne,chemin,chêne,corbeau,écorce,écureuil,forêt,gourde,lac,loupe,lutin,marron,mûre,moustique,muguet,nid,paysage,pin,rocher,sapin,sommet,tente,camper,chasser,éloigner|s’éloigner], [[entendre,envoler|s’envoler,griller,grimper,guetter,imaginer|s’imaginer,jeter,lancer,manger,marcher,montrer,mouiller|se mouiller,patauger,percher|se percher,perdre|se perdre,photographier,pique-niquer,pleuvoir,poser,poursuivre,ramasser,regarder,rencontrer,reposer|se reposer,respirer,revoir,rêver,sentir,siffler,transpirer,traverser,trouver,vivre,quartier,adresse,appartement,ascenseur,balcon,boucherie,boulanger,boulangerie,boutique,bus,caniveau,caravane,carrefour,cave,charcuterie,cinéma,cirque,clin|clin d’œil,cloche,clocher,clown,coiffeur,colis-route,courrier,croix,église,embouteillage,endroit,enveloppe,essence,facteur,fleuriste,foire,hôpital,hôtel,immeuble,incendie,laisse,magasin,manège,médicament,moineau,monde,monument,ouvrier,palais,panneau,paquet,parc,passage,pharmacie,pharmacien,piscine,place,police,policier,pompier,poste,promenade,quartier,square,timbre,travail|travaux,usine,village,ville,voisin,volet,barrer,clignoter,croiser|se croiser,garer,photographier,reconnaître,retrouver,revoir,saluer,savoir,toucher|se toucher,trouver|se trouver,visiter,important,impossible,prudent,chez,marché,abricot,ail,aliment,ananas,banane,bifteck,café,carotte,cerise,chocolat,chou,citron,citrouille,clémentine,concombre,coquillage,corbeille,crabe,crevette,endive,farine,fraise,framboise,fromage,fruit,gâteau,haricot,huile,légume,marchand,melon,monnaie,navet,noisette,noix,nourriture,oignon,orange,panier,pâte,pêche,persil,petit pois,poire,poireau,pomme,pomme de terre,prix,prune,queue,raisin,riz,salade,sucre,thé,tomate,viande,vin,acheter,ajouter,coûter,payer,peser,rendre,vendre,cher,léger,lourd,plein,mer,baleine,bouée,île,jumelle|jumelles,marin,mer,mouette,navire,pêcheur,plage,poisson,port,sardine,serviette,vague,voile,noyer|se noyer,ramer,nagers diff --git a/rust/semaine-4/palindrome/src/main.rs b/rust/semaine-4/palindrome/src/main.rs new file mode 100644 index 0000000..912ac5c --- /dev/null +++ b/rust/semaine-4/palindrome/src/main.rs @@ -0,0 +1,19 @@ +use std::fs; + +fn is_palindrome(str: &str) -> bool { + let reversed = str.chars().rev().collect::(); + str == reversed +} + +fn main() { + const PATH: &str = "palindrome.txt"; + + let content = fs::read_to_string(PATH).expect("should have been able to read the file"); + + let palindromes: Vec<&str> = content + .split(",") + .filter(|str| is_palindrome(str)) + .collect(); + + println!("Palindrome(s): {:?}", palindromes); +} diff --git a/rust/semaine-4/password-generator/Cargo.toml b/rust/semaine-4/password-generator/Cargo.toml new file mode 100644 index 0000000..cdd8116 --- /dev/null +++ b/rust/semaine-4/password-generator/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "password-generator" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/rust/semaine-4/password-generator/cypherpunk.txt b/rust/semaine-4/password-generator/cypherpunk.txt new file mode 100644 index 0000000..3a5aa90 --- /dev/null +++ b/rust/semaine-4/password-generator/cypherpunk.txt @@ -0,0 +1 @@ +La vie privée est nécessaire pour une société ouverte dans l’ère électronique. La vie privée n’est pas un secret. Une affaire privée est ce qu’un individu ne veut pas que le monde entier sache, mais une affaire secrète est ce qu’un individu ne veut que quiconque sache. La vie privée est le pouvoir de se révéler sélectivement au monde.\n\nLorsque deux partis ont une certaine forme d’échange, chacun possède ensuite un souvenir de leur interaction. Chaque parti peut parler de son propre souvenir de l’échange ; comment quelqu’un pourrait-il empêcher cela ? Des lois pourraient être adoptées contre cela, mais la liberté d’expression, encore plus que celle de la vie privée, est fondamentale à une société ouverte ; nous ne cherchons en aucun cas à restreindre quelque expression qu’elle soit. Si plusieurs partis dialoguent au sein d’un même forum, chaque parti peut communiquer avec tout le reste et agréger ensemble leur connaissance sur les individus et les autres partis. Le pouvoir des communications électroniques a permis une telle expression de groupe, et cela ne peut disparaître simplement parce que nous pourrions le souhaiter.\n\nPuisque nous désirons une vie privée, nous devons nous assurer lors d’un échange que chaque parti ait seulement connaissance de ce qui sera directement nécessaire à cet échange. Puisque n’importe quelle information peut être évoquée, nous devons nous assurer que nous en révélons le moins possible. Dans la plupart des cas l’identité personnelle n’est pas mise en évidence. Quand j’achète un magazine dans une boutique et que je tends des espèces au vendeur, il est inutile de savoir qui je suis. Quand je demande à mon prestataire de services réseau d’envoyer et de recevoir des messages, mon prestataire n’a pas besoin de savoir avec qui je parle ou ce que je dis ou ce que les autres me disent ; mon prestataire a seulement besoin de savoir comment il va envoyer le message et combien je lui dois pour le service fourni. Quand mon identité est révélée par le mécanisme sous-jacent de l’échange, je n’ai aucune vie privée. Je ne peux ici choisir ce que je dévoile de moi-même ; je devrais toujours me révéler.\n\nPar conséquent, la vie privée dans une société ouverte requiert des systèmes de transactions anonymes. Jusqu’à présent, l’argent liquide a été le moyen principal d’un tel système. Un système d’échanges anonyme n’est pas un système d’échanges secret. Un système anonyme renforce le pouvoir des individus à révéler leurs identités quand ils le désirent et seulement quand ils le désirent ; c’est l’essence-même de la vie privée.\n\nLa vie privée dans une société ouverte requiert également la cryptographie.\n\nSi je dis quelque chose, je veux que cela soit entendu uniquement par ceux à qui le message était destiné. Si le contenu de mon message est ouvertement disponible au monde, je n’ai pas de vie privée. Chiffrer, c’est indiquer le désir d’une vie privée, et chiffrer avec une faible cryptographie est l’indication d’un désir faible pour une vie privée. En outre, révéler son identité avec assurance lorsque l’anonymat est par défaut requiert une signature cryptographique.\n\n\n\nNous ne pouvons attendre des gouvernements, des entreprises et des autres organisations majeures sans visage de nous accorder une vie privée par acte de bienveillance. C’est à leur avantage de parler de nous, et nous devrions nous attendre à ce qu’ils le fassent. Tenter de les en empêcher, c’est se battre contre les réalités de l’information. Information ne veut pas juste être libre, elle est avide de liberté. Information tend à remplir l’espace de stockage disponible. Information est la jeune et talentueuse cousine de Rumeur ; Information est plus rapide, plus observatrice, sait plus et interprète moins que Rumeur.\n\nNous devons défendre notre vie privée par nous-mêmes si nous nous attendons à en avoir une. Nous devons nous rassembler et créer des systèmes qui nous permettent d’arriver à des échanges anonymes. Les humains ont défendu leurs propres vies privées pendant des siècles par des murmures, l’obscurité, des enveloppes, des portes fermées, des poignées de main secrètes, et des messagers. Les technologies du passé ne permettaient pas une confidentialité solide, les technologies électroniques le permettent.\n\n\n\nNous les Cypherpunks sommes dévoués à construire des systèmes anonymes. Nous défendons notre vie privée avec la cryptographie, avec des systèmes d’anonymisation du courrier électronique, avec des signatures numériques, et avec une monnaie électronique.\n\nLes Cypherpunks écrivent du code. Nous savons que quelqu’un doit élaborer des logiciels défendant la vie privée, et puisque que nous ne pouvons avoir de vie privée à moins que nous tous en soyons pourvus, nous allons les réaliser. Nous publions notre code afin que nos semblables Cypherpunks s’entraînent et jouent avec. Notre code est libre à tous d’être utilisé, dans le monde entier. Nous ne nous en soucions guère si vous n’approuvez pas les logiciels que nous développons. Nous savons qu’un logiciel ne peut être détruit et qu’un système largement répandu ne peut être arrêté.\n\nLes Cypherpunks déplorent les régulations sur la cryptographie, le chiffrement étant fondamentalement un geste privé. En fait, le geste de chiffrer retire l’information du domaine public. Même les lois contre la cryptographie atteignent seulement la frontière d’une nation et le bras de sa violence. La cryptographie va inéluctablement se répandre dans l’ensemble du globe, et avec elle les systèmes d’échanges anonymes qui la rendent possible.\n\nPour que la confidentialité soit largement répandue, il faut qu’elle fasse partie d’un contrat social. Les humains doivent se rassembler et déployer ensemble ces systèmes pour le bien commun. La vie privée ne peut s’étendre que grâce à la coopération entre les membres d’une société. Nous les Cypherpunks sollicitons vos questions et vos inquiétudes et espérons que vous puissiez vous engager afin d’éviter les erreurs que nous pourrions faire. Nous ne nous ferons cependant pas dévier de notre course sous prétexte que certains désapprouveraient nos objectifs.\n\n\n\nLes Cypherpunks sont activement engagés à rendre les réseaux plus sûrs pour la vie privée. Procédons avec célérité.\n\nEn avant !\n\n\n\n– Eric Hughes, le mardi 9 mars 1993 diff --git a/rust/semaine-4/password-generator/src/main.rs b/rust/semaine-4/password-generator/src/main.rs new file mode 100644 index 0000000..2d25e7b --- /dev/null +++ b/rust/semaine-4/password-generator/src/main.rs @@ -0,0 +1,17 @@ +use std::fs; + +fn main() { + const PATH: &str = "cypherpunk.txt"; + + let content = fs::read_to_string(PATH).expect("should have been able to read the file"); + + let password: String = content + .split("\\n") + .filter(|line| !line.is_empty()) + .map(|line| { + line.chars().next().unwrap().to_string() + &line.chars().last().unwrap().to_string() + }) + .collect(); + + println!("The password is: {}", password); +} diff --git a/rust/semaine-4/vie-privee/Cargo.toml b/rust/semaine-4/vie-privee/Cargo.toml new file mode 100644 index 0000000..53df45c --- /dev/null +++ b/rust/semaine-4/vie-privee/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "vie-privee" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/rust/semaine-4/vie-privee/cypherpunk.txt b/rust/semaine-4/vie-privee/cypherpunk.txt new file mode 100644 index 0000000..3a5aa90 --- /dev/null +++ b/rust/semaine-4/vie-privee/cypherpunk.txt @@ -0,0 +1 @@ +La vie privée est nécessaire pour une société ouverte dans l’ère électronique. La vie privée n’est pas un secret. Une affaire privée est ce qu’un individu ne veut pas que le monde entier sache, mais une affaire secrète est ce qu’un individu ne veut que quiconque sache. La vie privée est le pouvoir de se révéler sélectivement au monde.\n\nLorsque deux partis ont une certaine forme d’échange, chacun possède ensuite un souvenir de leur interaction. Chaque parti peut parler de son propre souvenir de l’échange ; comment quelqu’un pourrait-il empêcher cela ? Des lois pourraient être adoptées contre cela, mais la liberté d’expression, encore plus que celle de la vie privée, est fondamentale à une société ouverte ; nous ne cherchons en aucun cas à restreindre quelque expression qu’elle soit. Si plusieurs partis dialoguent au sein d’un même forum, chaque parti peut communiquer avec tout le reste et agréger ensemble leur connaissance sur les individus et les autres partis. Le pouvoir des communications électroniques a permis une telle expression de groupe, et cela ne peut disparaître simplement parce que nous pourrions le souhaiter.\n\nPuisque nous désirons une vie privée, nous devons nous assurer lors d’un échange que chaque parti ait seulement connaissance de ce qui sera directement nécessaire à cet échange. Puisque n’importe quelle information peut être évoquée, nous devons nous assurer que nous en révélons le moins possible. Dans la plupart des cas l’identité personnelle n’est pas mise en évidence. Quand j’achète un magazine dans une boutique et que je tends des espèces au vendeur, il est inutile de savoir qui je suis. Quand je demande à mon prestataire de services réseau d’envoyer et de recevoir des messages, mon prestataire n’a pas besoin de savoir avec qui je parle ou ce que je dis ou ce que les autres me disent ; mon prestataire a seulement besoin de savoir comment il va envoyer le message et combien je lui dois pour le service fourni. Quand mon identité est révélée par le mécanisme sous-jacent de l’échange, je n’ai aucune vie privée. Je ne peux ici choisir ce que je dévoile de moi-même ; je devrais toujours me révéler.\n\nPar conséquent, la vie privée dans une société ouverte requiert des systèmes de transactions anonymes. Jusqu’à présent, l’argent liquide a été le moyen principal d’un tel système. Un système d’échanges anonyme n’est pas un système d’échanges secret. Un système anonyme renforce le pouvoir des individus à révéler leurs identités quand ils le désirent et seulement quand ils le désirent ; c’est l’essence-même de la vie privée.\n\nLa vie privée dans une société ouverte requiert également la cryptographie.\n\nSi je dis quelque chose, je veux que cela soit entendu uniquement par ceux à qui le message était destiné. Si le contenu de mon message est ouvertement disponible au monde, je n’ai pas de vie privée. Chiffrer, c’est indiquer le désir d’une vie privée, et chiffrer avec une faible cryptographie est l’indication d’un désir faible pour une vie privée. En outre, révéler son identité avec assurance lorsque l’anonymat est par défaut requiert une signature cryptographique.\n\n\n\nNous ne pouvons attendre des gouvernements, des entreprises et des autres organisations majeures sans visage de nous accorder une vie privée par acte de bienveillance. C’est à leur avantage de parler de nous, et nous devrions nous attendre à ce qu’ils le fassent. Tenter de les en empêcher, c’est se battre contre les réalités de l’information. Information ne veut pas juste être libre, elle est avide de liberté. Information tend à remplir l’espace de stockage disponible. Information est la jeune et talentueuse cousine de Rumeur ; Information est plus rapide, plus observatrice, sait plus et interprète moins que Rumeur.\n\nNous devons défendre notre vie privée par nous-mêmes si nous nous attendons à en avoir une. Nous devons nous rassembler et créer des systèmes qui nous permettent d’arriver à des échanges anonymes. Les humains ont défendu leurs propres vies privées pendant des siècles par des murmures, l’obscurité, des enveloppes, des portes fermées, des poignées de main secrètes, et des messagers. Les technologies du passé ne permettaient pas une confidentialité solide, les technologies électroniques le permettent.\n\n\n\nNous les Cypherpunks sommes dévoués à construire des systèmes anonymes. Nous défendons notre vie privée avec la cryptographie, avec des systèmes d’anonymisation du courrier électronique, avec des signatures numériques, et avec une monnaie électronique.\n\nLes Cypherpunks écrivent du code. Nous savons que quelqu’un doit élaborer des logiciels défendant la vie privée, et puisque que nous ne pouvons avoir de vie privée à moins que nous tous en soyons pourvus, nous allons les réaliser. Nous publions notre code afin que nos semblables Cypherpunks s’entraînent et jouent avec. Notre code est libre à tous d’être utilisé, dans le monde entier. Nous ne nous en soucions guère si vous n’approuvez pas les logiciels que nous développons. Nous savons qu’un logiciel ne peut être détruit et qu’un système largement répandu ne peut être arrêté.\n\nLes Cypherpunks déplorent les régulations sur la cryptographie, le chiffrement étant fondamentalement un geste privé. En fait, le geste de chiffrer retire l’information du domaine public. Même les lois contre la cryptographie atteignent seulement la frontière d’une nation et le bras de sa violence. La cryptographie va inéluctablement se répandre dans l’ensemble du globe, et avec elle les systèmes d’échanges anonymes qui la rendent possible.\n\nPour que la confidentialité soit largement répandue, il faut qu’elle fasse partie d’un contrat social. Les humains doivent se rassembler et déployer ensemble ces systèmes pour le bien commun. La vie privée ne peut s’étendre que grâce à la coopération entre les membres d’une société. Nous les Cypherpunks sollicitons vos questions et vos inquiétudes et espérons que vous puissiez vous engager afin d’éviter les erreurs que nous pourrions faire. Nous ne nous ferons cependant pas dévier de notre course sous prétexte que certains désapprouveraient nos objectifs.\n\n\n\nLes Cypherpunks sont activement engagés à rendre les réseaux plus sûrs pour la vie privée. Procédons avec célérité.\n\nEn avant !\n\n\n\n– Eric Hughes, le mardi 9 mars 1993 diff --git a/rust/semaine-4/vie-privee/src/main.rs b/rust/semaine-4/vie-privee/src/main.rs new file mode 100644 index 0000000..aadc8c0 --- /dev/null +++ b/rust/semaine-4/vie-privee/src/main.rs @@ -0,0 +1,11 @@ +use std::fs; + +fn main() { + const PATH: &str = "cypherpunk.txt"; + + let content = fs::read_to_string(PATH).expect("should have been able to read file"); + + let count = content.matches("vie privée").count(); + + println!("There is \"vie privée\" {} times", count); +} diff --git a/rust/semaine-5/first-temperature-list/Cargo.toml b/rust/semaine-5/first-temperature-list/Cargo.toml new file mode 100644 index 0000000..28a5848 --- /dev/null +++ b/rust/semaine-5/first-temperature-list/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "first-temperature-list" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/rust/semaine-5/first-temperature-list/src/main.rs b/rust/semaine-5/first-temperature-list/src/main.rs new file mode 100644 index 0000000..bf22eff --- /dev/null +++ b/rust/semaine-5/first-temperature-list/src/main.rs @@ -0,0 +1,16 @@ +fn main() { + let temperatures = [12, 13, 14, 15, 15, 12, 7]; + + let mut sum = 0; + + // Not doing it the rust way but challenge way + // let sum = temperatures.iter().sum() as f64; + + for x in &temperatures { + sum += x; + } + + let sum: f64 = f64::from(sum) / (temperatures.len() as f64); + + println!("{:?}", sum.floor()); +} diff --git a/rust/semaine-5/melting-pot/Cargo.toml b/rust/semaine-5/melting-pot/Cargo.toml new file mode 100644 index 0000000..c9b8490 --- /dev/null +++ b/rust/semaine-5/melting-pot/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "melting-pot" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/rust/semaine-5/melting-pot/letterCount.txt b/rust/semaine-5/melting-pot/letterCount.txt new file mode 100644 index 0000000..5df742a --- /dev/null +++ b/rust/semaine-5/melting-pot/letterCount.txt @@ -0,0 +1 @@ +Un ordinateur peut entre autre effectuer des tâches répétitives sans se lasser et sans se tromper, enfin..., si le développeur a bien fait son travail. \ No newline at end of file diff --git a/rust/semaine-5/melting-pot/src/main.rs b/rust/semaine-5/melting-pot/src/main.rs new file mode 100644 index 0000000..a06a0cd --- /dev/null +++ b/rust/semaine-5/melting-pot/src/main.rs @@ -0,0 +1,24 @@ +use std::fs; + +fn main() { + const PATH: &str = "letterCount.txt"; + + let content = fs::read_to_string(PATH).expect("should have been able to read the file"); + + let words: Vec<&str> = content.split_whitespace().collect(); + + let total_length = words + .iter() + .map(|&word| word.replace(&[',', '.'], "").chars().count()) + .sum::() as f64; + + let average_length = if words.is_empty() { + 0.0 + } else { + total_length / words.len() as f64 + }; + + let formated_result = format!("{:.2}", average_length).replace(".", ","); + + println!("The average length is of: {}", formated_result); +} diff --git a/rust/semaine-5/rot-decryption/Cargo.toml b/rust/semaine-5/rot-decryption/Cargo.toml new file mode 100644 index 0000000..5871ba6 --- /dev/null +++ b/rust/semaine-5/rot-decryption/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "rot-decryption" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/rust/semaine-5/rot-decryption/src/main.rs b/rust/semaine-5/rot-decryption/src/main.rs new file mode 100644 index 0000000..b94f88f --- /dev/null +++ b/rust/semaine-5/rot-decryption/src/main.rs @@ -0,0 +1,49 @@ +use std::env; + +fn caesar_cipher(text: &mut String, rotation: u32, encrypt: bool) { + let mut message = String::new(); + let shift = if encrypt { rotation } else { 26 - rotation }; + + for char in text.chars() { + if char.is_alphabetic() { + let base = if char.is_lowercase() { + 'a' as u32 + } else { + 'A' as u32 + }; + let shifted = (char as u32 - base + shift) % 26; + let result = (shifted + base) as u8 as char; + message.push(result); + } else { + message.push(char); + } + } + + *text = message; +} + +fn main() { + let args: Vec = env::args().collect(); + + if args.len() != 4 { + println!("Usage: caesar_cipher "); + return; + } + + let action = &args[1]; + let rotation = args[2].parse::(); + + if action == "encrypt" || action == "decrypt" { + match rotation { + Ok(r) => { + let mut message = args[3].clone(); + let encrypt = action == "encrypt"; + caesar_cipher(&mut message, r, encrypt); + println!("Result: {}", message); + } + Err(_) => println!("Rotation must be a positive integer."), + } + } else { + println!("Action must be 'encrypt' or 'decrypt'."); + } +} diff --git a/rust/semaine-5/sort/100days.txt b/rust/semaine-5/sort/100days.txt new file mode 100644 index 0000000..68275cc --- /dev/null +++ b/rust/semaine-5/sort/100days.txt @@ -0,0 +1,2 @@ +56760, 98, 652, 481, 363, 880, 425, 242, 980, 562, 442, 208, 788, 614, 690, 189, 417, 704, 494, 764, 80, 395, 542, 167, 448, 818, 124, 134, 792, 401, 738, 722, 84, 773, 303, 551, 236, 703, 359, 841, 173, 565, 662, 491, 205, 797, 606, 82, 944, 97, 747, 252, 374, 190, 729, 853, 17, 951, 924, 117, 841, 878, 46, 366, 310, 232, 195, 808, 793, 191, 788, 155, 507, 865, 817, 817, 602, 800, 136, 924, 867, 984, 545, 534, 80, 474, 512, 140, 709, 55, 513, 244, 441, 253, 135, 319, 557, 627, 544, 42, 456 + diff --git a/rust/semaine-5/sort/Cargo.toml b/rust/semaine-5/sort/Cargo.toml new file mode 100644 index 0000000..71a29e6 --- /dev/null +++ b/rust/semaine-5/sort/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "sort" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/rust/semaine-5/sort/src/main.rs b/rust/semaine-5/sort/src/main.rs new file mode 100644 index 0000000..b4a1c63 --- /dev/null +++ b/rust/semaine-5/sort/src/main.rs @@ -0,0 +1,30 @@ +use std::fs; + +fn main() { + const PATH: &str = "100days.txt"; + + let content = fs::read_to_string(PATH).expect("should have been able to read the file"); + + let mut expenses: Vec = content + .split(",") + .map(|x| x.trim().parse().expect("encountered a error while parsing")) + .collect(); + + for i in 0..expenses.len() { + let mut max = i; + for j in (i + 1)..expenses.len() { + if expenses[j] > expenses[max] { + max = j; + } + } + if i != max { + expenses.swap(i, max); + } + } + + let top_10_expenses: Vec = expenses.iter().skip(1).take(10).cloned().collect(); + + println!("Desc sorted expenses : {:?}", expenses); + println!("10 days : {:?}", top_10_expenses); + println!("Sum : {:?}", top_10_expenses.iter().sum::()); +} diff --git a/rust/semaine-5/two-steps-by-step/Cargo.toml b/rust/semaine-5/two-steps-by-step/Cargo.toml new file mode 100644 index 0000000..a38bf91 --- /dev/null +++ b/rust/semaine-5/two-steps-by-step/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "two-steps-by-step" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/rust/semaine-5/two-steps-by-step/src/main.rs b/rust/semaine-5/two-steps-by-step/src/main.rs new file mode 100644 index 0000000..072c7de --- /dev/null +++ b/rust/semaine-5/two-steps-by-step/src/main.rs @@ -0,0 +1,40 @@ +fn calculate_average(values: &Vec) -> f64 { + /* + Rust way + let sum: i32 = values.iter().sum(); + */ + let mut sum = 0; + let count = values.len() as f64; + + for x in values { + sum += x; + } + + sum as f64 / count +} + +fn main() { + let temperatures = [12, 13, 14, 15, 15, 12, 7]; + + let even_positions: Vec = temperatures + .iter() + .enumerate() + .filter(|(i, _)| i % 2 == 0) + .map(|(_, &temp)| temp) + .collect(); + + let odd_positions: Vec = temperatures + .iter() + .enumerate() + .filter(|(i, _)| i % 2 != 0) + .map(|(_, &temp)| temp) + .collect(); + + let average_even = calculate_average(&even_positions); + let average_odd = calculate_average(&odd_positions); + + let result = average_even + average_odd; + let result = result.ceil() as i32; + + println!("I lost 3 points on this lol: {}", result); +} diff --git a/rust/semaine-5/work-on-the-first/100days.txt b/rust/semaine-5/work-on-the-first/100days.txt new file mode 100644 index 0000000..dd992be --- /dev/null +++ b/rust/semaine-5/work-on-the-first/100days.txt @@ -0,0 +1 @@ +56760, 98, 652, 481, 363, 880, 425, 242, 980, 562, 442, 208, 788, 614, 690, 189, 417, 704, 494, 764, 80, 395, 542, 167, 448, 818, 124, 134, 792, 401, 738, 722, 84, 773, 303, 551, 236, 703, 359, 841, 173, 565, 662, 491, 205, 797, 606, 82, 944, 97, 747, 252, 374, 190, 729, 853, 17, 951, 924, 117, 841, 878, 46, 366, 310, 232, 195, 808, 793, 191, 788, 155, 507, 865, 817, 817, 602, 800, 136, 924, 867, 984, 545, 534, 80, 474, 512, 140, 709, 55, 513, 244, 441, 253, 135, 319, 557, 627, 544, 42, 456 \ No newline at end of file diff --git a/rust/semaine-5/work-on-the-first/Cargo.toml b/rust/semaine-5/work-on-the-first/Cargo.toml new file mode 100644 index 0000000..995736d --- /dev/null +++ b/rust/semaine-5/work-on-the-first/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "work-on-the-first" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/rust/semaine-5/work-on-the-first/src/main.rs b/rust/semaine-5/work-on-the-first/src/main.rs new file mode 100644 index 0000000..5422548 --- /dev/null +++ b/rust/semaine-5/work-on-the-first/src/main.rs @@ -0,0 +1,18 @@ +use std::fs; + +fn main() { + const PATH: &str = "100days.txt"; + + let content = fs::read_to_string(PATH).expect("should have been able to read the file"); + let content: Vec = content + .split(",") + .map(|x| x.trim().parse().unwrap()) + .collect(); + + let (budget, used_money) = match content.split_first() { + Some((budget, used)) => (budget, used.iter().sum::()), + None => return println!("missing data bro"), + }; + + println!("Remaining money: {}", budget - used_money); +} diff --git a/rust/semaine-6/beggin-of-line/Cargo.toml b/rust/semaine-6/beggin-of-line/Cargo.toml new file mode 100644 index 0000000..4c8129f --- /dev/null +++ b/rust/semaine-6/beggin-of-line/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "beggin-of-line" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +regex = "1.10.2" diff --git a/rust/semaine-6/beggin-of-line/independance.txt b/rust/semaine-6/beggin-of-line/independance.txt new file mode 100644 index 0000000..275bd65 --- /dev/null +++ b/rust/semaine-6/beggin-of-line/independance.txt @@ -0,0 +1,66 @@ + + +Une déclaration d'indépendance du cyberspace + +Par John Perry Barlow + + + +Hier, le grand invertébré qui loge à la Maison Blanche a apposé sa signature au bas du texte de la loi de 1996 sur la "réforme" des télécommunications, pendant que Tipper Gore prenait des photos numériques de l'événement afin de les publier dans un livre qui sera intitulé "24 Hours in Cyberspace" (24 Heures dans le cyberspace). + +J'avais également été invité à contribuer à ce livre en écrivant un texte d'actualité. Mais étant donné le caractère infâme des contrôles que cette loi cherche à imposer sur le Net, j'ai pensé qu'il était temps de déverser quelques balles de thé sur les quais du port virtuel [Allusion à la "Boston Tea Party" (1773), émeute au cours de laquelle ont été détruites des cargaisons de thé appartenant à la Compagnie des Indes en réponse aux taxes instituées par le gouvernement britannique. Cette émeute fut un des premiers incidents de ce qui devait devenir la guerre d'indépendance des États-Unis - NdT]. + +Car la loi sur la "réforme" des télécommunications, adoptée par le Sénat à une écrasante majorité (avec seulement 5 voix contre) rend en fin de compte illégal, sous peine d'une amende de 250 000 dollars, le fait de dire "merde" sur le réseau. Ou, d'ailleurs, de dire n'importe lequel des 7 gros mots interdits d'antenne à la radio et à la télévision. Ou de discuter au grand jour de l'avortement. Ou de parler des autres fonctions corporelles autrement qu'en utilisant un vocabulaire médical aseptisé. + +Elle tente de placer sur les échanges qui se mènent dans le cyberspace des contraintes plus restrictives que celles qui existent à la cafétéria du Sénat, où chaque fois que j'ai eu l'occasion d'y prendre un repas j'ai entendu des sénateurs utiliser des expressions gratinées. + +Cette loi nous a été parachutée par des gens qui n'ont pas la moindre idée de qui nous sommes ou de ce qu'est ce territoire où ont lieu nos échanges. Ainsi que le dit mon ami Louis Rossetto, rédacteur-en-chef du magazine Wired, c'est comme si "les illettrés pouvaient vous dire ce qu'il faut que vous lisiez." + +Eh bien, qu'ils aillent se faire foutre. + +Ou plutôt, profitons de l'occasion pour prendre congé d'eux, maintenant. Ils ont déclaré la guerre au cyberspace. Montrons-leur l'étendue de notre pouvoir, de notre ruse et de notre capacité à surprendre lorsqu'il s'agit pour nous de nous défendre. + +Avec le sens de la disproportion qui me caractérise, j'ai écrit un texte dont j'espère qu'il sera un des nombreux moyens qui nous permettront de nous défendre. Si vous le trouvez utile, j'espère que vous le diffuserez aussi largement que possible. Vous pouvez en retirer ma signature si vous le souhaitez, car je n'accorde aucune importance au fait qu'on m'attribue ou non sa paternité. Vraiment aucune. + +Mais j'espère que ce cri se fera entendre à travers tout le cyberspace, qu'il croîtra, qu'il se clonera, qu'il mutera jusqu'à ce que son volume égale celui de l'idiotie qu'on vient de nous infliger. + +Je vous offre une... + +Déclaration d'indépendance du cyberspace + +Gouvernements du monde industrialisé, géants fatigués de chair et d'acier, je viens du cyberspace, le nouveau domicile de l'esprit. Au nom du futur, je vous demande, à vous qui appartenez au passé, de nous laisser en paix. Vous n'êtes pas les bienvenus parmi nous. Vous n'avez aucune souveraineté sur le territoire où nous nous assemblons. + +Nous n'avons pas de gouvernement élu, et il est peu probable que nous en ayons un un jour : je m'adresse donc à vous avec la seule autorité que m'accorde et que s'accorde la liberté elle-même. Je déclare que l'espace social global que nous construisons est naturellement indépendant des tyrannies que vous cherchez à nous imposer. Vous n'avez aucun droit moral à nous gouverner, et vous ne possédez aucun moyen de faire respecter votre autorité que nous ayons de bonnes raisons de craindre. + +Les gouvernements trouvent le fondement de leur pouvoir légitime dans le consentement des personnes qu'ils gouvernent. Vous n'avez ni sollicité ni obtenu le nôtre. Nous ne vous avons pas invités. Vous ne nous connaissez pas, et vous ne connaissez pas non plus notre monde. Le cyberspace ne se trouve pas à l'intérieur de vos frontières. Ne pensez pas que pouvez le construire comme s'il était un de vos Grands Travaux. Vous n'y arriverez pas. C'est un phénomène naturel qui croît de lui-même, par nos actions collectives. + +Vous n'avez pas pris part aux grands débats qui nous ont réunis, et vous n'avez pas non plus créé la richesse de nos marchés. Vous ne connaissez ni notre culture, ni notre éthique, ni les codes non-écrits qui ordonnent déjà notre société mieux que ne pourraient le faire n'importe lequel des règlements que vous prétendez nous imposer. + +Vous dites qu'il existe chez nous des problèmes que vous devez résoudre. Vous prenez prétexte de cela pour faire intrusion dans notre espace. Beaucoup de ces problèmes n'existent pas. Là où il y aura de véritables conflits, là où des torts seront effectivement causés, nous les identifierons et nous les traiterons avec nos moyens. Nous sommes en train de mettre en place notre propre Contrat Social. Nous nous gouvernerons en fonction des conditions qui prévalent dans notre monde, pas dans le vôtre. Car notre monde est différent. + +Le cyberspace est fait de transactions, de relations et de pensée, circulant en un flot ininterrompu sur nos canaux de communication. Notre monde est à la fois partout et nulle part, mais il ne se trouve pas là où vivent les corps. + +Nous sommes en train de créer un monde ouvert à tous, sans privilège ni préjugé qui dépende de la race, du pouvoir économique, de la puissance militaire ou du rang à la naissance. + +Nous sommes en train de créer un monde où chacun, où qu'il soit, peut exprimer ce qu'il croit, quel que soit le degré de singularité de ses croyances, sans devoir craindre d'être forcé de se taire ou de se conformer. + +Les concepts de votre droit en matière de propriété, d'expression, d'identité, de mouvement et de circonstances ne s'appliquent pas à nous. Ils ont leur fondement dans la matière, et il n'y a pas de matière ici. + +Nos identités n'ont pas de corps : donc, contrairement à vous, nous ne pouvons pas faire régner l'ordre au moyen de la force physique. Nous pensons que c'est à travers l'éthique et l'intérêt bien compris de chacun et de la communauté dans son ensemble que va surgir notre mode de gouvernement. Nos identités sont probablement dispersées à travers un grand nombre de vos juridictions. La seule loi que toutes les cultures qui nous constituent seraient prêtes à reconnaître est la Règle d'Or de l'éthique. Nous espérons que nous serons capables de construire nos propres solutions sur cette base. Mais nous ne pouvons pas accepter les solutions que vous essayez d'imposer. + +Aux États-Unis, vous venez aujourd'hui de créer une loi, la loi sur la réforme des télécommunications, qui renie votre propre Constitution et qui est une insulte aux rêves de Jefferson, Washington, Mill, Madison, Tocqueville et Brandeis. C'est nous qui devons maintenant faire renaître ces rêves. + +Vous avez une peur panique de vos propres enfants, car ils sont nés dans un monde où vous serez à jamais immigrants. Parce que vous avez peur d'eux, vous confiez à vos bureaucraties les responsabilités parentales que vous êtes trop lâches pour exercer vous-mêmes. Dans notre monde, tous les sentiments et toutes les expressions de l'humain, du plus dégradant au plus angélique, font partie d'un tout inséparable, l'échange global des octets. Il n'est pas possible de séparer l'air qui peut éventuellement étouffer certains de ceux qui le respirent de celui qui permet aux oiseaux de voler. + +En Chine, en Allemagne, en France, en Russie, à Singapour, en Italie et aux États-Unis, vous essayez de tenir à l'écart le virus de la liberté en érigeant des postes de contrôle sanitaire aux frontières du cyberspace. Peut-être que ceux-ci empêcheront la contagion un certain temps, mais ils ne fonctionneront pas dans le monde de l'omniprésence des médias transporteurs d'octets. + +Vos industries de l'information, de plus en plus obsolètes, cherchent à se perpétuer en proposant des lois, en Amérique et ailleurs, qui ont la prétention de confisquer à leur profit jusqu'à la parole même à travers le monde. Ces lois cherchent à transformer les idées en un produit industriel comme les autres, au même titre que les lingots de fonte. Dans notre monde, tout ce que l'esprit humain peut créer peut être reproduit et distribué à l'infini sans que cela ne coûte rien. Le transmission globale de la pensée n'a plus besoin de vos usines pour se faire. + +Ces mesures de plus en plus hostiles et colonialistes nous placent dans la même position que les amoureux de la liberté et de l'auto-détermination qui lors d'époques précédentes ont dû rejeter l'autorité de pouvoirs distants et mal informés. Il nous faut déclarer que nos identités virtuelles ne sont pas soumises à votre souveraineté, alors même que nous continuons à consentir à ce que vous gouverniez nos corps. Nous allons nous disperser sur toute la planète de manière à ce que personne ne puisse arrêter nos idées. + +Nous allons créer une civilisation de l'esprit dans le cyberspace. Puisse-t-elle être plus juste et plus humaine que le monde qu'ont construit vos gouvernements auparavant. + +Davos, Suisse, le 8 février 1996 + +- Publié en français par le webzine "Cybersphere", aujourd'hui disparu. Traduction par Diogène. + diff --git a/rust/semaine-6/beggin-of-line/src/main.rs b/rust/semaine-6/beggin-of-line/src/main.rs new file mode 100644 index 0000000..e5b658d --- /dev/null +++ b/rust/semaine-6/beggin-of-line/src/main.rs @@ -0,0 +1,15 @@ +use std::fs; + +use regex::Regex; + +fn main() { + const PATH: &str = "independance.txt"; + + let file = fs::read_to_string(PATH).unwrap(); + + let regex = Regex::new(r"\b[aeiouyAEIOUYéèàùêâûîô]\w+").unwrap(); + + let count = regex.find_iter(&file).count(); + + println!("Found {} matches", count); +} diff --git a/rust/semaine-6/doublons-doublons/Cargo.toml b/rust/semaine-6/doublons-doublons/Cargo.toml new file mode 100644 index 0000000..6bbc7e3 --- /dev/null +++ b/rust/semaine-6/doublons-doublons/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "doublons-doublons" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +fancy-regex = "0.12.0" diff --git a/rust/semaine-6/doublons-doublons/macDouble.txt b/rust/semaine-6/doublons-doublons/macDouble.txt new file mode 100644 index 0000000..0ae009d --- /dev/null +++ b/rust/semaine-6/doublons-doublons/macDouble.txt @@ -0,0 +1 @@ +Rien de tout ça n'avait le moindre moindre espoir d'application pratique pratique dans ma vie. Mais dix ans plus plus tard, alors que nous concevions le premier ordinateur Macintosh Macintosh, tout cela m'est revenu. Et Et nous avons tout injecté dans le Mac. C'était le premier ordinateur avec une belle typographie. Si je n'avais pas assisté assisté à l'improviste à ce cours-là à l'université, le Mac n'aurait jamais eu des polices d'écriture différentes, ou proportionnellement espacées. Et vu que Windows n'a fait que copier le Mac, il est probable qu'aucun ordinateur n'en disposerait. Si je n'avais pas abandonné, je n'aurais jamais assisté à ce cours de calligraphie et les ordinateurs personnels n'auraient peut-être pas les merveilleuses typographies qu'ils ont. Bien sûr, c'était impossible de faire le lien en regardant vers l'avenir quand j'étais à l'université. Mais c'était très, très clair quand j'ai regardé en arrière dix ans plus tard. diff --git a/rust/semaine-6/doublons-doublons/src/main.rs b/rust/semaine-6/doublons-doublons/src/main.rs new file mode 100644 index 0000000..1244faf --- /dev/null +++ b/rust/semaine-6/doublons-doublons/src/main.rs @@ -0,0 +1,16 @@ +use std::fs; + +// It supports backreferences +use fancy_regex::Regex; + +fn main() { + const PATH: &str = "macDouble.txt"; + + let file = fs::read_to_string(PATH).unwrap(); + + let regex = Regex::new(r"\b(\w+)\s+\1\b").unwrap(); + + let count = regex.find_iter(&file).count(); + + println!("Found {} matches", count); +} diff --git a/rust/semaine-6/first-regex/Cargo.toml b/rust/semaine-6/first-regex/Cargo.toml new file mode 100644 index 0000000..6a560f0 --- /dev/null +++ b/rust/semaine-6/first-regex/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "first-regex" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +regex = "1.10.2" diff --git a/rust/semaine-6/first-regex/independance.txt b/rust/semaine-6/first-regex/independance.txt new file mode 100644 index 0000000..275bd65 --- /dev/null +++ b/rust/semaine-6/first-regex/independance.txt @@ -0,0 +1,66 @@ + + +Une déclaration d'indépendance du cyberspace + +Par John Perry Barlow + + + +Hier, le grand invertébré qui loge à la Maison Blanche a apposé sa signature au bas du texte de la loi de 1996 sur la "réforme" des télécommunications, pendant que Tipper Gore prenait des photos numériques de l'événement afin de les publier dans un livre qui sera intitulé "24 Hours in Cyberspace" (24 Heures dans le cyberspace). + +J'avais également été invité à contribuer à ce livre en écrivant un texte d'actualité. Mais étant donné le caractère infâme des contrôles que cette loi cherche à imposer sur le Net, j'ai pensé qu'il était temps de déverser quelques balles de thé sur les quais du port virtuel [Allusion à la "Boston Tea Party" (1773), émeute au cours de laquelle ont été détruites des cargaisons de thé appartenant à la Compagnie des Indes en réponse aux taxes instituées par le gouvernement britannique. Cette émeute fut un des premiers incidents de ce qui devait devenir la guerre d'indépendance des États-Unis - NdT]. + +Car la loi sur la "réforme" des télécommunications, adoptée par le Sénat à une écrasante majorité (avec seulement 5 voix contre) rend en fin de compte illégal, sous peine d'une amende de 250 000 dollars, le fait de dire "merde" sur le réseau. Ou, d'ailleurs, de dire n'importe lequel des 7 gros mots interdits d'antenne à la radio et à la télévision. Ou de discuter au grand jour de l'avortement. Ou de parler des autres fonctions corporelles autrement qu'en utilisant un vocabulaire médical aseptisé. + +Elle tente de placer sur les échanges qui se mènent dans le cyberspace des contraintes plus restrictives que celles qui existent à la cafétéria du Sénat, où chaque fois que j'ai eu l'occasion d'y prendre un repas j'ai entendu des sénateurs utiliser des expressions gratinées. + +Cette loi nous a été parachutée par des gens qui n'ont pas la moindre idée de qui nous sommes ou de ce qu'est ce territoire où ont lieu nos échanges. Ainsi que le dit mon ami Louis Rossetto, rédacteur-en-chef du magazine Wired, c'est comme si "les illettrés pouvaient vous dire ce qu'il faut que vous lisiez." + +Eh bien, qu'ils aillent se faire foutre. + +Ou plutôt, profitons de l'occasion pour prendre congé d'eux, maintenant. Ils ont déclaré la guerre au cyberspace. Montrons-leur l'étendue de notre pouvoir, de notre ruse et de notre capacité à surprendre lorsqu'il s'agit pour nous de nous défendre. + +Avec le sens de la disproportion qui me caractérise, j'ai écrit un texte dont j'espère qu'il sera un des nombreux moyens qui nous permettront de nous défendre. Si vous le trouvez utile, j'espère que vous le diffuserez aussi largement que possible. Vous pouvez en retirer ma signature si vous le souhaitez, car je n'accorde aucune importance au fait qu'on m'attribue ou non sa paternité. Vraiment aucune. + +Mais j'espère que ce cri se fera entendre à travers tout le cyberspace, qu'il croîtra, qu'il se clonera, qu'il mutera jusqu'à ce que son volume égale celui de l'idiotie qu'on vient de nous infliger. + +Je vous offre une... + +Déclaration d'indépendance du cyberspace + +Gouvernements du monde industrialisé, géants fatigués de chair et d'acier, je viens du cyberspace, le nouveau domicile de l'esprit. Au nom du futur, je vous demande, à vous qui appartenez au passé, de nous laisser en paix. Vous n'êtes pas les bienvenus parmi nous. Vous n'avez aucune souveraineté sur le territoire où nous nous assemblons. + +Nous n'avons pas de gouvernement élu, et il est peu probable que nous en ayons un un jour : je m'adresse donc à vous avec la seule autorité que m'accorde et que s'accorde la liberté elle-même. Je déclare que l'espace social global que nous construisons est naturellement indépendant des tyrannies que vous cherchez à nous imposer. Vous n'avez aucun droit moral à nous gouverner, et vous ne possédez aucun moyen de faire respecter votre autorité que nous ayons de bonnes raisons de craindre. + +Les gouvernements trouvent le fondement de leur pouvoir légitime dans le consentement des personnes qu'ils gouvernent. Vous n'avez ni sollicité ni obtenu le nôtre. Nous ne vous avons pas invités. Vous ne nous connaissez pas, et vous ne connaissez pas non plus notre monde. Le cyberspace ne se trouve pas à l'intérieur de vos frontières. Ne pensez pas que pouvez le construire comme s'il était un de vos Grands Travaux. Vous n'y arriverez pas. C'est un phénomène naturel qui croît de lui-même, par nos actions collectives. + +Vous n'avez pas pris part aux grands débats qui nous ont réunis, et vous n'avez pas non plus créé la richesse de nos marchés. Vous ne connaissez ni notre culture, ni notre éthique, ni les codes non-écrits qui ordonnent déjà notre société mieux que ne pourraient le faire n'importe lequel des règlements que vous prétendez nous imposer. + +Vous dites qu'il existe chez nous des problèmes que vous devez résoudre. Vous prenez prétexte de cela pour faire intrusion dans notre espace. Beaucoup de ces problèmes n'existent pas. Là où il y aura de véritables conflits, là où des torts seront effectivement causés, nous les identifierons et nous les traiterons avec nos moyens. Nous sommes en train de mettre en place notre propre Contrat Social. Nous nous gouvernerons en fonction des conditions qui prévalent dans notre monde, pas dans le vôtre. Car notre monde est différent. + +Le cyberspace est fait de transactions, de relations et de pensée, circulant en un flot ininterrompu sur nos canaux de communication. Notre monde est à la fois partout et nulle part, mais il ne se trouve pas là où vivent les corps. + +Nous sommes en train de créer un monde ouvert à tous, sans privilège ni préjugé qui dépende de la race, du pouvoir économique, de la puissance militaire ou du rang à la naissance. + +Nous sommes en train de créer un monde où chacun, où qu'il soit, peut exprimer ce qu'il croit, quel que soit le degré de singularité de ses croyances, sans devoir craindre d'être forcé de se taire ou de se conformer. + +Les concepts de votre droit en matière de propriété, d'expression, d'identité, de mouvement et de circonstances ne s'appliquent pas à nous. Ils ont leur fondement dans la matière, et il n'y a pas de matière ici. + +Nos identités n'ont pas de corps : donc, contrairement à vous, nous ne pouvons pas faire régner l'ordre au moyen de la force physique. Nous pensons que c'est à travers l'éthique et l'intérêt bien compris de chacun et de la communauté dans son ensemble que va surgir notre mode de gouvernement. Nos identités sont probablement dispersées à travers un grand nombre de vos juridictions. La seule loi que toutes les cultures qui nous constituent seraient prêtes à reconnaître est la Règle d'Or de l'éthique. Nous espérons que nous serons capables de construire nos propres solutions sur cette base. Mais nous ne pouvons pas accepter les solutions que vous essayez d'imposer. + +Aux États-Unis, vous venez aujourd'hui de créer une loi, la loi sur la réforme des télécommunications, qui renie votre propre Constitution et qui est une insulte aux rêves de Jefferson, Washington, Mill, Madison, Tocqueville et Brandeis. C'est nous qui devons maintenant faire renaître ces rêves. + +Vous avez une peur panique de vos propres enfants, car ils sont nés dans un monde où vous serez à jamais immigrants. Parce que vous avez peur d'eux, vous confiez à vos bureaucraties les responsabilités parentales que vous êtes trop lâches pour exercer vous-mêmes. Dans notre monde, tous les sentiments et toutes les expressions de l'humain, du plus dégradant au plus angélique, font partie d'un tout inséparable, l'échange global des octets. Il n'est pas possible de séparer l'air qui peut éventuellement étouffer certains de ceux qui le respirent de celui qui permet aux oiseaux de voler. + +En Chine, en Allemagne, en France, en Russie, à Singapour, en Italie et aux États-Unis, vous essayez de tenir à l'écart le virus de la liberté en érigeant des postes de contrôle sanitaire aux frontières du cyberspace. Peut-être que ceux-ci empêcheront la contagion un certain temps, mais ils ne fonctionneront pas dans le monde de l'omniprésence des médias transporteurs d'octets. + +Vos industries de l'information, de plus en plus obsolètes, cherchent à se perpétuer en proposant des lois, en Amérique et ailleurs, qui ont la prétention de confisquer à leur profit jusqu'à la parole même à travers le monde. Ces lois cherchent à transformer les idées en un produit industriel comme les autres, au même titre que les lingots de fonte. Dans notre monde, tout ce que l'esprit humain peut créer peut être reproduit et distribué à l'infini sans que cela ne coûte rien. Le transmission globale de la pensée n'a plus besoin de vos usines pour se faire. + +Ces mesures de plus en plus hostiles et colonialistes nous placent dans la même position que les amoureux de la liberté et de l'auto-détermination qui lors d'époques précédentes ont dû rejeter l'autorité de pouvoirs distants et mal informés. Il nous faut déclarer que nos identités virtuelles ne sont pas soumises à votre souveraineté, alors même que nous continuons à consentir à ce que vous gouverniez nos corps. Nous allons nous disperser sur toute la planète de manière à ce que personne ne puisse arrêter nos idées. + +Nous allons créer une civilisation de l'esprit dans le cyberspace. Puisse-t-elle être plus juste et plus humaine que le monde qu'ont construit vos gouvernements auparavant. + +Davos, Suisse, le 8 février 1996 + +- Publié en français par le webzine "Cybersphere", aujourd'hui disparu. Traduction par Diogène. + diff --git a/rust/semaine-6/first-regex/src/main.rs b/rust/semaine-6/first-regex/src/main.rs new file mode 100644 index 0000000..f50c49f --- /dev/null +++ b/rust/semaine-6/first-regex/src/main.rs @@ -0,0 +1,15 @@ +use std::fs; + +use regex::Regex; + +fn main() { + const PATH: &str = "independance.txt"; + + let file = fs::read_to_string(PATH).unwrap(); + + let regex = Regex::new(r"libert[e|é]").unwrap(); + + let count = regex.find_iter(&file).count(); + + println!("Found {} matches", count); +} diff --git a/rust/semaine-6/in-set/Cargo.toml b/rust/semaine-6/in-set/Cargo.toml new file mode 100644 index 0000000..f58fcdb --- /dev/null +++ b/rust/semaine-6/in-set/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "in-set" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +regex = "1.10.2" diff --git a/rust/semaine-6/in-set/independance.txt b/rust/semaine-6/in-set/independance.txt new file mode 100644 index 0000000..275bd65 --- /dev/null +++ b/rust/semaine-6/in-set/independance.txt @@ -0,0 +1,66 @@ + + +Une déclaration d'indépendance du cyberspace + +Par John Perry Barlow + + + +Hier, le grand invertébré qui loge à la Maison Blanche a apposé sa signature au bas du texte de la loi de 1996 sur la "réforme" des télécommunications, pendant que Tipper Gore prenait des photos numériques de l'événement afin de les publier dans un livre qui sera intitulé "24 Hours in Cyberspace" (24 Heures dans le cyberspace). + +J'avais également été invité à contribuer à ce livre en écrivant un texte d'actualité. Mais étant donné le caractère infâme des contrôles que cette loi cherche à imposer sur le Net, j'ai pensé qu'il était temps de déverser quelques balles de thé sur les quais du port virtuel [Allusion à la "Boston Tea Party" (1773), émeute au cours de laquelle ont été détruites des cargaisons de thé appartenant à la Compagnie des Indes en réponse aux taxes instituées par le gouvernement britannique. Cette émeute fut un des premiers incidents de ce qui devait devenir la guerre d'indépendance des États-Unis - NdT]. + +Car la loi sur la "réforme" des télécommunications, adoptée par le Sénat à une écrasante majorité (avec seulement 5 voix contre) rend en fin de compte illégal, sous peine d'une amende de 250 000 dollars, le fait de dire "merde" sur le réseau. Ou, d'ailleurs, de dire n'importe lequel des 7 gros mots interdits d'antenne à la radio et à la télévision. Ou de discuter au grand jour de l'avortement. Ou de parler des autres fonctions corporelles autrement qu'en utilisant un vocabulaire médical aseptisé. + +Elle tente de placer sur les échanges qui se mènent dans le cyberspace des contraintes plus restrictives que celles qui existent à la cafétéria du Sénat, où chaque fois que j'ai eu l'occasion d'y prendre un repas j'ai entendu des sénateurs utiliser des expressions gratinées. + +Cette loi nous a été parachutée par des gens qui n'ont pas la moindre idée de qui nous sommes ou de ce qu'est ce territoire où ont lieu nos échanges. Ainsi que le dit mon ami Louis Rossetto, rédacteur-en-chef du magazine Wired, c'est comme si "les illettrés pouvaient vous dire ce qu'il faut que vous lisiez." + +Eh bien, qu'ils aillent se faire foutre. + +Ou plutôt, profitons de l'occasion pour prendre congé d'eux, maintenant. Ils ont déclaré la guerre au cyberspace. Montrons-leur l'étendue de notre pouvoir, de notre ruse et de notre capacité à surprendre lorsqu'il s'agit pour nous de nous défendre. + +Avec le sens de la disproportion qui me caractérise, j'ai écrit un texte dont j'espère qu'il sera un des nombreux moyens qui nous permettront de nous défendre. Si vous le trouvez utile, j'espère que vous le diffuserez aussi largement que possible. Vous pouvez en retirer ma signature si vous le souhaitez, car je n'accorde aucune importance au fait qu'on m'attribue ou non sa paternité. Vraiment aucune. + +Mais j'espère que ce cri se fera entendre à travers tout le cyberspace, qu'il croîtra, qu'il se clonera, qu'il mutera jusqu'à ce que son volume égale celui de l'idiotie qu'on vient de nous infliger. + +Je vous offre une... + +Déclaration d'indépendance du cyberspace + +Gouvernements du monde industrialisé, géants fatigués de chair et d'acier, je viens du cyberspace, le nouveau domicile de l'esprit. Au nom du futur, je vous demande, à vous qui appartenez au passé, de nous laisser en paix. Vous n'êtes pas les bienvenus parmi nous. Vous n'avez aucune souveraineté sur le territoire où nous nous assemblons. + +Nous n'avons pas de gouvernement élu, et il est peu probable que nous en ayons un un jour : je m'adresse donc à vous avec la seule autorité que m'accorde et que s'accorde la liberté elle-même. Je déclare que l'espace social global que nous construisons est naturellement indépendant des tyrannies que vous cherchez à nous imposer. Vous n'avez aucun droit moral à nous gouverner, et vous ne possédez aucun moyen de faire respecter votre autorité que nous ayons de bonnes raisons de craindre. + +Les gouvernements trouvent le fondement de leur pouvoir légitime dans le consentement des personnes qu'ils gouvernent. Vous n'avez ni sollicité ni obtenu le nôtre. Nous ne vous avons pas invités. Vous ne nous connaissez pas, et vous ne connaissez pas non plus notre monde. Le cyberspace ne se trouve pas à l'intérieur de vos frontières. Ne pensez pas que pouvez le construire comme s'il était un de vos Grands Travaux. Vous n'y arriverez pas. C'est un phénomène naturel qui croît de lui-même, par nos actions collectives. + +Vous n'avez pas pris part aux grands débats qui nous ont réunis, et vous n'avez pas non plus créé la richesse de nos marchés. Vous ne connaissez ni notre culture, ni notre éthique, ni les codes non-écrits qui ordonnent déjà notre société mieux que ne pourraient le faire n'importe lequel des règlements que vous prétendez nous imposer. + +Vous dites qu'il existe chez nous des problèmes que vous devez résoudre. Vous prenez prétexte de cela pour faire intrusion dans notre espace. Beaucoup de ces problèmes n'existent pas. Là où il y aura de véritables conflits, là où des torts seront effectivement causés, nous les identifierons et nous les traiterons avec nos moyens. Nous sommes en train de mettre en place notre propre Contrat Social. Nous nous gouvernerons en fonction des conditions qui prévalent dans notre monde, pas dans le vôtre. Car notre monde est différent. + +Le cyberspace est fait de transactions, de relations et de pensée, circulant en un flot ininterrompu sur nos canaux de communication. Notre monde est à la fois partout et nulle part, mais il ne se trouve pas là où vivent les corps. + +Nous sommes en train de créer un monde ouvert à tous, sans privilège ni préjugé qui dépende de la race, du pouvoir économique, de la puissance militaire ou du rang à la naissance. + +Nous sommes en train de créer un monde où chacun, où qu'il soit, peut exprimer ce qu'il croit, quel que soit le degré de singularité de ses croyances, sans devoir craindre d'être forcé de se taire ou de se conformer. + +Les concepts de votre droit en matière de propriété, d'expression, d'identité, de mouvement et de circonstances ne s'appliquent pas à nous. Ils ont leur fondement dans la matière, et il n'y a pas de matière ici. + +Nos identités n'ont pas de corps : donc, contrairement à vous, nous ne pouvons pas faire régner l'ordre au moyen de la force physique. Nous pensons que c'est à travers l'éthique et l'intérêt bien compris de chacun et de la communauté dans son ensemble que va surgir notre mode de gouvernement. Nos identités sont probablement dispersées à travers un grand nombre de vos juridictions. La seule loi que toutes les cultures qui nous constituent seraient prêtes à reconnaître est la Règle d'Or de l'éthique. Nous espérons que nous serons capables de construire nos propres solutions sur cette base. Mais nous ne pouvons pas accepter les solutions que vous essayez d'imposer. + +Aux États-Unis, vous venez aujourd'hui de créer une loi, la loi sur la réforme des télécommunications, qui renie votre propre Constitution et qui est une insulte aux rêves de Jefferson, Washington, Mill, Madison, Tocqueville et Brandeis. C'est nous qui devons maintenant faire renaître ces rêves. + +Vous avez une peur panique de vos propres enfants, car ils sont nés dans un monde où vous serez à jamais immigrants. Parce que vous avez peur d'eux, vous confiez à vos bureaucraties les responsabilités parentales que vous êtes trop lâches pour exercer vous-mêmes. Dans notre monde, tous les sentiments et toutes les expressions de l'humain, du plus dégradant au plus angélique, font partie d'un tout inséparable, l'échange global des octets. Il n'est pas possible de séparer l'air qui peut éventuellement étouffer certains de ceux qui le respirent de celui qui permet aux oiseaux de voler. + +En Chine, en Allemagne, en France, en Russie, à Singapour, en Italie et aux États-Unis, vous essayez de tenir à l'écart le virus de la liberté en érigeant des postes de contrôle sanitaire aux frontières du cyberspace. Peut-être que ceux-ci empêcheront la contagion un certain temps, mais ils ne fonctionneront pas dans le monde de l'omniprésence des médias transporteurs d'octets. + +Vos industries de l'information, de plus en plus obsolètes, cherchent à se perpétuer en proposant des lois, en Amérique et ailleurs, qui ont la prétention de confisquer à leur profit jusqu'à la parole même à travers le monde. Ces lois cherchent à transformer les idées en un produit industriel comme les autres, au même titre que les lingots de fonte. Dans notre monde, tout ce que l'esprit humain peut créer peut être reproduit et distribué à l'infini sans que cela ne coûte rien. Le transmission globale de la pensée n'a plus besoin de vos usines pour se faire. + +Ces mesures de plus en plus hostiles et colonialistes nous placent dans la même position que les amoureux de la liberté et de l'auto-détermination qui lors d'époques précédentes ont dû rejeter l'autorité de pouvoirs distants et mal informés. Il nous faut déclarer que nos identités virtuelles ne sont pas soumises à votre souveraineté, alors même que nous continuons à consentir à ce que vous gouverniez nos corps. Nous allons nous disperser sur toute la planète de manière à ce que personne ne puisse arrêter nos idées. + +Nous allons créer une civilisation de l'esprit dans le cyberspace. Puisse-t-elle être plus juste et plus humaine que le monde qu'ont construit vos gouvernements auparavant. + +Davos, Suisse, le 8 février 1996 + +- Publié en français par le webzine "Cybersphere", aujourd'hui disparu. Traduction par Diogène. + diff --git a/rust/semaine-6/in-set/src/main.rs b/rust/semaine-6/in-set/src/main.rs new file mode 100644 index 0000000..11db643 --- /dev/null +++ b/rust/semaine-6/in-set/src/main.rs @@ -0,0 +1,15 @@ +use std::fs; + +use regex::Regex; + +fn main() { + const PATH: &str = "independance.txt"; + + let file = fs::read_to_string(PATH).unwrap(); + + let regex = Regex::new(r"[3-6]").unwrap(); + + let count = regex.find_iter(&file).count(); + + println!("Found {} matches", count); +} diff --git a/rust/semaine-6/optional/Cargo.toml b/rust/semaine-6/optional/Cargo.toml new file mode 100644 index 0000000..e178c49 --- /dev/null +++ b/rust/semaine-6/optional/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "optional" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +regex = "1.10.2" diff --git a/rust/semaine-6/optional/independance.txt b/rust/semaine-6/optional/independance.txt new file mode 100644 index 0000000..275bd65 --- /dev/null +++ b/rust/semaine-6/optional/independance.txt @@ -0,0 +1,66 @@ + + +Une déclaration d'indépendance du cyberspace + +Par John Perry Barlow + + + +Hier, le grand invertébré qui loge à la Maison Blanche a apposé sa signature au bas du texte de la loi de 1996 sur la "réforme" des télécommunications, pendant que Tipper Gore prenait des photos numériques de l'événement afin de les publier dans un livre qui sera intitulé "24 Hours in Cyberspace" (24 Heures dans le cyberspace). + +J'avais également été invité à contribuer à ce livre en écrivant un texte d'actualité. Mais étant donné le caractère infâme des contrôles que cette loi cherche à imposer sur le Net, j'ai pensé qu'il était temps de déverser quelques balles de thé sur les quais du port virtuel [Allusion à la "Boston Tea Party" (1773), émeute au cours de laquelle ont été détruites des cargaisons de thé appartenant à la Compagnie des Indes en réponse aux taxes instituées par le gouvernement britannique. Cette émeute fut un des premiers incidents de ce qui devait devenir la guerre d'indépendance des États-Unis - NdT]. + +Car la loi sur la "réforme" des télécommunications, adoptée par le Sénat à une écrasante majorité (avec seulement 5 voix contre) rend en fin de compte illégal, sous peine d'une amende de 250 000 dollars, le fait de dire "merde" sur le réseau. Ou, d'ailleurs, de dire n'importe lequel des 7 gros mots interdits d'antenne à la radio et à la télévision. Ou de discuter au grand jour de l'avortement. Ou de parler des autres fonctions corporelles autrement qu'en utilisant un vocabulaire médical aseptisé. + +Elle tente de placer sur les échanges qui se mènent dans le cyberspace des contraintes plus restrictives que celles qui existent à la cafétéria du Sénat, où chaque fois que j'ai eu l'occasion d'y prendre un repas j'ai entendu des sénateurs utiliser des expressions gratinées. + +Cette loi nous a été parachutée par des gens qui n'ont pas la moindre idée de qui nous sommes ou de ce qu'est ce territoire où ont lieu nos échanges. Ainsi que le dit mon ami Louis Rossetto, rédacteur-en-chef du magazine Wired, c'est comme si "les illettrés pouvaient vous dire ce qu'il faut que vous lisiez." + +Eh bien, qu'ils aillent se faire foutre. + +Ou plutôt, profitons de l'occasion pour prendre congé d'eux, maintenant. Ils ont déclaré la guerre au cyberspace. Montrons-leur l'étendue de notre pouvoir, de notre ruse et de notre capacité à surprendre lorsqu'il s'agit pour nous de nous défendre. + +Avec le sens de la disproportion qui me caractérise, j'ai écrit un texte dont j'espère qu'il sera un des nombreux moyens qui nous permettront de nous défendre. Si vous le trouvez utile, j'espère que vous le diffuserez aussi largement que possible. Vous pouvez en retirer ma signature si vous le souhaitez, car je n'accorde aucune importance au fait qu'on m'attribue ou non sa paternité. Vraiment aucune. + +Mais j'espère que ce cri se fera entendre à travers tout le cyberspace, qu'il croîtra, qu'il se clonera, qu'il mutera jusqu'à ce que son volume égale celui de l'idiotie qu'on vient de nous infliger. + +Je vous offre une... + +Déclaration d'indépendance du cyberspace + +Gouvernements du monde industrialisé, géants fatigués de chair et d'acier, je viens du cyberspace, le nouveau domicile de l'esprit. Au nom du futur, je vous demande, à vous qui appartenez au passé, de nous laisser en paix. Vous n'êtes pas les bienvenus parmi nous. Vous n'avez aucune souveraineté sur le territoire où nous nous assemblons. + +Nous n'avons pas de gouvernement élu, et il est peu probable que nous en ayons un un jour : je m'adresse donc à vous avec la seule autorité que m'accorde et que s'accorde la liberté elle-même. Je déclare que l'espace social global que nous construisons est naturellement indépendant des tyrannies que vous cherchez à nous imposer. Vous n'avez aucun droit moral à nous gouverner, et vous ne possédez aucun moyen de faire respecter votre autorité que nous ayons de bonnes raisons de craindre. + +Les gouvernements trouvent le fondement de leur pouvoir légitime dans le consentement des personnes qu'ils gouvernent. Vous n'avez ni sollicité ni obtenu le nôtre. Nous ne vous avons pas invités. Vous ne nous connaissez pas, et vous ne connaissez pas non plus notre monde. Le cyberspace ne se trouve pas à l'intérieur de vos frontières. Ne pensez pas que pouvez le construire comme s'il était un de vos Grands Travaux. Vous n'y arriverez pas. C'est un phénomène naturel qui croît de lui-même, par nos actions collectives. + +Vous n'avez pas pris part aux grands débats qui nous ont réunis, et vous n'avez pas non plus créé la richesse de nos marchés. Vous ne connaissez ni notre culture, ni notre éthique, ni les codes non-écrits qui ordonnent déjà notre société mieux que ne pourraient le faire n'importe lequel des règlements que vous prétendez nous imposer. + +Vous dites qu'il existe chez nous des problèmes que vous devez résoudre. Vous prenez prétexte de cela pour faire intrusion dans notre espace. Beaucoup de ces problèmes n'existent pas. Là où il y aura de véritables conflits, là où des torts seront effectivement causés, nous les identifierons et nous les traiterons avec nos moyens. Nous sommes en train de mettre en place notre propre Contrat Social. Nous nous gouvernerons en fonction des conditions qui prévalent dans notre monde, pas dans le vôtre. Car notre monde est différent. + +Le cyberspace est fait de transactions, de relations et de pensée, circulant en un flot ininterrompu sur nos canaux de communication. Notre monde est à la fois partout et nulle part, mais il ne se trouve pas là où vivent les corps. + +Nous sommes en train de créer un monde ouvert à tous, sans privilège ni préjugé qui dépende de la race, du pouvoir économique, de la puissance militaire ou du rang à la naissance. + +Nous sommes en train de créer un monde où chacun, où qu'il soit, peut exprimer ce qu'il croit, quel que soit le degré de singularité de ses croyances, sans devoir craindre d'être forcé de se taire ou de se conformer. + +Les concepts de votre droit en matière de propriété, d'expression, d'identité, de mouvement et de circonstances ne s'appliquent pas à nous. Ils ont leur fondement dans la matière, et il n'y a pas de matière ici. + +Nos identités n'ont pas de corps : donc, contrairement à vous, nous ne pouvons pas faire régner l'ordre au moyen de la force physique. Nous pensons que c'est à travers l'éthique et l'intérêt bien compris de chacun et de la communauté dans son ensemble que va surgir notre mode de gouvernement. Nos identités sont probablement dispersées à travers un grand nombre de vos juridictions. La seule loi que toutes les cultures qui nous constituent seraient prêtes à reconnaître est la Règle d'Or de l'éthique. Nous espérons que nous serons capables de construire nos propres solutions sur cette base. Mais nous ne pouvons pas accepter les solutions que vous essayez d'imposer. + +Aux États-Unis, vous venez aujourd'hui de créer une loi, la loi sur la réforme des télécommunications, qui renie votre propre Constitution et qui est une insulte aux rêves de Jefferson, Washington, Mill, Madison, Tocqueville et Brandeis. C'est nous qui devons maintenant faire renaître ces rêves. + +Vous avez une peur panique de vos propres enfants, car ils sont nés dans un monde où vous serez à jamais immigrants. Parce que vous avez peur d'eux, vous confiez à vos bureaucraties les responsabilités parentales que vous êtes trop lâches pour exercer vous-mêmes. Dans notre monde, tous les sentiments et toutes les expressions de l'humain, du plus dégradant au plus angélique, font partie d'un tout inséparable, l'échange global des octets. Il n'est pas possible de séparer l'air qui peut éventuellement étouffer certains de ceux qui le respirent de celui qui permet aux oiseaux de voler. + +En Chine, en Allemagne, en France, en Russie, à Singapour, en Italie et aux États-Unis, vous essayez de tenir à l'écart le virus de la liberté en érigeant des postes de contrôle sanitaire aux frontières du cyberspace. Peut-être que ceux-ci empêcheront la contagion un certain temps, mais ils ne fonctionneront pas dans le monde de l'omniprésence des médias transporteurs d'octets. + +Vos industries de l'information, de plus en plus obsolètes, cherchent à se perpétuer en proposant des lois, en Amérique et ailleurs, qui ont la prétention de confisquer à leur profit jusqu'à la parole même à travers le monde. Ces lois cherchent à transformer les idées en un produit industriel comme les autres, au même titre que les lingots de fonte. Dans notre monde, tout ce que l'esprit humain peut créer peut être reproduit et distribué à l'infini sans que cela ne coûte rien. Le transmission globale de la pensée n'a plus besoin de vos usines pour se faire. + +Ces mesures de plus en plus hostiles et colonialistes nous placent dans la même position que les amoureux de la liberté et de l'auto-détermination qui lors d'époques précédentes ont dû rejeter l'autorité de pouvoirs distants et mal informés. Il nous faut déclarer que nos identités virtuelles ne sont pas soumises à votre souveraineté, alors même que nous continuons à consentir à ce que vous gouverniez nos corps. Nous allons nous disperser sur toute la planète de manière à ce que personne ne puisse arrêter nos idées. + +Nous allons créer une civilisation de l'esprit dans le cyberspace. Puisse-t-elle être plus juste et plus humaine que le monde qu'ont construit vos gouvernements auparavant. + +Davos, Suisse, le 8 février 1996 + +- Publié en français par le webzine "Cybersphere", aujourd'hui disparu. Traduction par Diogène. + diff --git a/rust/semaine-6/optional/src/main.rs b/rust/semaine-6/optional/src/main.rs new file mode 100644 index 0000000..e745b93 --- /dev/null +++ b/rust/semaine-6/optional/src/main.rs @@ -0,0 +1,17 @@ +use std::fs; + +use regex::Regex; + +fn main() { + const PATH: &str = "independance.txt"; + + let file = fs::read_to_string(PATH).unwrap(); + + // Didn't get the "identité" or "identité" since 3 isn't the right answer? Right regex above + // let regex = Regex::new(r"identité(s)?").unwrap(); + let regex = Regex::new(r"identités").unwrap(); + + let count = regex.find_iter(&file).count(); + + println!("Found {} matches", count); +}