From 10f66686648085b0a3dc4eeb566e9ed24b1e4745 Mon Sep 17 00:00:00 2001 From: rick <rick@gnous.eu> Date: Sun, 7 Mar 2021 20:55:35 +0100 Subject: [PATCH 01/12] Modif nom fichier --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f2778ab..70f3a46 100644 --- a/README.md +++ b/README.md @@ -68,15 +68,15 @@ python3 run.py ## Jour 5 -On retourne dans le passé ici avec le **Cobol**. J’ai utilisé le compilateur GNUCOBOL pour pouvoir compiler mon fichier. J’ai préféré utiliser l’ancienne syntaxe pour changer un peu ma façon de coder (et je trouve le symbole de la ligne 7 génial). +On retourne dans le passé ici avec le **Cobol**. J’ai utilisé le compilateur GNUCOBOL pour pouvoir compiler mon fichier. J’ai préféré utiliser l’ancienne syntaxe pour changer un peu ma façon de coder (et je trouve le symbole de la ligne 7 génial) sur la première partie. ```bash # pour installer le compilateur sudo xbps-install gnucobol gmp-devel # sur Void # pour compiler et exécuter -cobc -x jour5.cob -./jour5 +cobc -x jour5-prem.cob +./jour5-prem ``` Il reste des messages de débugging. Si vous souhaitez les voir, il suffit de rajouter l’option `-fdebugging-line` au compilateur. From 1a4bf80d27eed8ece99c540ca5095e891fb25c61 Mon Sep 17 00:00:00 2001 From: rick <rick@gnous.eu> Date: Tue, 9 Mar 2021 02:12:18 +0100 Subject: [PATCH 02/12] =?UTF-8?q?Premi=C3=A8re=20version=20(trop=20lente)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jour10/jour10.bs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 jour10/jour10.bs diff --git a/jour10/jour10.bs b/jour10/jour10.bs new file mode 100644 index 0000000..e4f29fa --- /dev/null +++ b/jour10/jour10.bs @@ -0,0 +1,26 @@ +basInput$ = "1113222113" +pred$ = "" +act$ = "" +new$ = "" +k = 0 + +for i = 0 to 40 + print i, " / 40" + for j = 1 to len(basInput$) step k + k = 1 + act$ = mid$(basInput$, j, 1) + pred$ = act$ + while pred$ = act$ and (j + k) < len(basInput$) + pred$ = act$ + act$ = mid$(basInput$, j + k, 1) + k = k + 1 + if act$ <> pred$ then + k = k - 1 + endif + wend + new$ = new$ + str$(k) + pred$ + next j + basInput$ = new$ + next i + +print "La longeur de la chaine finale est ", len(basInput$) From 7af2aa38adbb82012438c6561c8d79c9a9f1d2bf Mon Sep 17 00:00:00 2001 From: rick <rick@gnous.eu> Date: Tue, 9 Mar 2021 14:14:13 +0100 Subject: [PATCH 03/12] =?UTF-8?q?Ajout=20num=C3=A9ro=20de=20ligne=20et=20s?= =?UTF-8?q?uppression=20des=20derniers=20warning?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jour05/jour5-prem.cob | 226 +++++++++++++++++++++--------------------- 1 file changed, 113 insertions(+), 113 deletions(-) diff --git a/jour05/jour5-prem.cob b/jour05/jour5-prem.cob index b86fd97..be19c93 100644 --- a/jour05/jour5-prem.cob +++ b/jour05/jour5-prem.cob @@ -1,113 +1,113 @@ - IDENTIFICATION DIVISION. - PROGRAM-ID. jour-cinq-prem-part. - - ENVIRONMENT DIVISION. - INPUT-OUTPUT SECTION. - FILE-CONTROL. - SELECT FILE1 ASSIGN TO "input" - ORGANIZATION LINE SEQUENTIAL. - - DATA DIVISION. - FILE SECTION. - FD FILE1. - 01 INPUT-FILE. - 02 STR PIC A(17). - - WORKING-STORAGE SECTION. - 01 MY-FILE. - 02 MY-STR PIC A(17). - 01 FILE-STATUS PIC X VALUE 'N'. - 88 EOF VALUE 'Y'. - 77 NB-NICE PIC 9(4) VALUE 0. - - PROCEDURE DIVISION. - main. - OPEN INPUT FILE1. - PERFORM UNTIL EOF - READ FILE1 RECORD INTO MY-FILE - * Lorsqu’on arrive à la fin du fichier, on met Y pour le signaler - AT END MOVE 'Y' TO FILE-STATUS - NOT AT END CALL "parse-str" USING - BY CONTENT MY-STR, - BY REFERENCE NB-NICE - * On passe par référence NB-NICE pour l’incrémenter - END-CALL - END-READ - END-PERFORM. - DISPLAY "Nombre de bonnes chaines : " NB-NICE. - CLOSE FILE1. - STOP RUN. - - ****************************************************************** - * parse-str : parse la chaine de caractères pour voir le nombre de - * bonnes chaines. Prend en paramètres 2 arguments : - * STR : chaine de caractères de taille 16. Sera parser. - * NB : (REFERENCE) le nombre de bonnes chaines. Sera incrémenter. - - IDENTIFICATION DIVISION. - PROGRAM-ID. parse-str. - - DATA DIVISION. - WORKING-STORAGE SECTION. - 77 CHAR PIC A. - 88 VOY VALUE 'a','e','i','o','u'. - 77 I PIC 99. - 88 END-P VALUE 17. - 77 NB-VOY PIC 99. - 77 PRED PIC A. - 77 TMP PIC AA. - 88 BAD VALUE 'ab', 'cd', 'pq', 'xy'. - 77 DOUBLE PIC X. - - * NB-VOY contient le nombre de voyelles - * PRED le caractère précédent - * TMP forme la chaine contenant le caractère précédent et courant - * BAD les mauvaises formes de chaines - * DOUBLE est mit à Y lorsque CHAR = PRED - * - * LINKAGE SECTION contient les paramètres du programme parse-str - - LINKAGE SECTION. - 77 STR PIC A(17). - 77 NB PIC 9(4). - - PROCEDURE DIVISION USING STR, NB. - parse. - MOVE 0 TO NB-VOY. - MOVE 'N' TO DOUBLE. - d DISPLAY STR. - d DISPLAY "=================". - PERFORM VARYING I FROM 1 BY 1 UNTIL END-P - MOVE STR(I:1) TO CHAR - d DISPLAY "ACT. CHAR : " CHAR - d DISPLAY "ACT. PRED : " PRED - d DISPLAY "I : " I - IF VOY - THEN ADD 1 TO NB-VOY - END-IF - IF I >= 2 - THEN - STRING PRED CHAR INTO TMP - d DISPLAY "TMP STR : " TMP - IF BAD - THEN - EXIT PERFORM - END-IF - IF PRED = CHAR - THEN - MOVE 'Y' TO DOUBLE - END-IF - d DISPLAY "DOUBLE : " DOUBLE - END-IF - MOVE CHAR TO PRED - END-PERFORM. - IF NOT BAD AND NB-VOY >= 3 AND DOUBLE = 'Y' - THEN - ADD 1 TO NB - END-IF. - EXIT PROGRAM. - END PROGRAM parse-str. - - ************************************************************************* - - END PROGRAM jour-cinq-prem-part. +000001 IDENTIFICATION DIVISION. +000002 PROGRAM-ID. jour-cinq-prem-part. +000003 +000004 ENVIRONMENT DIVISION. +000005 INPUT-OUTPUT SECTION. +000006 FILE-CONTROL. +000007 SELECT FILE1 ASSIGN TO "input" +000008 ORGANIZATION LINE SEQUENTIAL. +000009 +000010 DATA DIVISION. +000011 FILE SECTION. +000012 FD FILE1. +000013 01 INPUT-FILE. +000014 02 STR PIC A(17). +000015 +000016 WORKING-STORAGE SECTION. +000017 01 MY-FILE. +000018 02 MY-STR PIC A(17). +000019 01 FILE-STATUS PIC X VALUE 'N'. +000020 88 EOF VALUE 'Y'. +000021 77 NB-NICE PIC 9(4) VALUE 0. +000022 +000023 PROCEDURE DIVISION. +000024 main. +000025 OPEN INPUT FILE1. +000026 PERFORM UNTIL EOF +000027 READ FILE1 RECORD INTO MY-FILE +000028* Lorsqu’on arrive à la fin du fichier, on met Y pour le signaler +000029 AT END MOVE 'Y' TO FILE-STATUS +000030 NOT AT END CALL "parse-str" USING +000031 BY CONTENT MY-STR, +000032 BY REFERENCE NB-NICE +000033* On passe par référence NB-NICE pour l’incrémenter +000034 END-CALL +000035 END-READ +000036 END-PERFORM. +000037 DISPLAY "Nombre de bonnes chaines : " NB-NICE END-DISPLAY. +000038 CLOSE FILE1. +000039 STOP RUN. +000039 +000040****************************************************************** +000041* parse-str : parse la chaine de caractères pour voir le nombre de +000042* bonnes chaines. Prend en paramètres 2 arguments : +000043* STR : chaine de caractères de taille 16. Sera parser. +000044* NB : (REFERENCE) le nombre de bonnes chaines. Sera incrémenter. +000045 +000046 IDENTIFICATION DIVISION. +000047 PROGRAM-ID. parse-str. +000047 +000048 DATA DIVISION. +000049 WORKING-STORAGE SECTION. +000050 77 CHAR PIC A. +000051 88 VOY VALUE 'a','e','i','o','u'. +000052 77 I PIC 99. +000053 88 END-P VALUE 17. +000054 77 NB-VOY PIC 99. +000055 77 PRED PIC A. +000056 77 TMP PIC AA. +000057 88 BAD VALUE 'ab', 'cd', 'pq', 'xy'. +000058 77 DOUBLE PIC X. +000058 +000059* NB-VOY contient le nombre de voyelles +000060* PRED le caractère précédent +000061* TMP forme la chaine contenant le caractère précédent et courant +000062* BAD les mauvaises formes de chaines +000063* DOUBLE est mit à Y lorsque CHAR = PRED +000064* +000065* LINKAGE SECTION contient les paramètres du programme parse-str +000066 +000067 LINKAGE SECTION. +000068 77 STR PIC A(17). +000069 77 NB PIC 9(4). +000069 +000070 PROCEDURE DIVISION USING STR, NB. +000071 parse. +000072 MOVE 0 TO NB-VOY. +000073 MOVE 'N' TO DOUBLE. +000074d DISPLAY STR. +000075d DISPLAY "=================". +000076 PERFORM VARYING I FROM 1 BY 1 UNTIL END-P +000077 MOVE STR(I:1) TO CHAR +000078d DISPLAY "ACT. CHAR : " CHAR +000079d DISPLAY "ACT. PRED : " PRED +000080d DISPLAY "I : " I +000081 IF VOY +000082 THEN ADD 1 TO NB-VOY END-ADD +000083 END-IF +000084 IF I >= 2 +000085 THEN +000086 STRING PRED CHAR INTO TMP END-STRING +000087d DISPLAY "TMP STR : " TMP +000088 IF BAD +000089 THEN +000090 EXIT PERFORM +000091 END-IF +000092 IF PRED = CHAR +000093 THEN +000094 MOVE 'Y' TO DOUBLE +000095 END-IF +000096d DISPLAY "DOUBLE : " DOUBLE +000097 END-IF +000098 MOVE CHAR TO PRED +000099 END-PERFORM. +000100 IF NOT BAD AND NB-VOY >= 3 AND DOUBLE = 'Y' +000101 THEN +000102 ADD 1 TO NB END-ADD +000103 END-IF. +000104 EXIT PROGRAM. +000105 END PROGRAM parse-str. +000105 +000106************************************************************************* +000107 +000108 END PROGRAM jour-cinq-prem-part. From 5c9ed75ef942ed1dfd45e8b7f5d0c0d70625e58a Mon Sep 17 00:00:00 2001 From: rick <rick@gnous.eu> Date: Wed, 17 Mar 2021 15:51:24 +0100 Subject: [PATCH 04/12] =?UTF-8?q?Ajout=20deuxi=C3=A8me=20partie?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jour05/jour5.cob | 126 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 jour05/jour5.cob diff --git a/jour05/jour5.cob b/jour05/jour5.cob new file mode 100644 index 0000000..c749e2f --- /dev/null +++ b/jour05/jour5.cob @@ -0,0 +1,126 @@ + IDENTIFICATION DIVISION. + PROGRAM-ID. jour-cinq-prem-part. + + ENVIRONMENT DIVISION. + INPUT-OUTPUT SECTION. + FILE-CONTROL. + SELECT FILE1 ASSIGN TO "input" + ORGANIZATION LINE SEQUENTIAL. + + DATA DIVISION. + FILE SECTION. + FD FILE1. + 01 INPUT-FILE. + 02 STR PIC A(17). + + WORKING-STORAGE SECTION. + 01 MY-FILE. + 02 MY-STR PIC A(17). + 01 FILE-STATUS PIC X VALUE 'N'. + 88 EOF VALUE 'Y'. + 77 NB-NICE PIC 9(4) VALUE 0. + + PROCEDURE DIVISION. + main. + OPEN INPUT FILE1. + PERFORM UNTIL EOF + READ FILE1 RECORD INTO MY-FILE + * Lorsqu’on arrive à la fin du fichier, on met Y pour le signaler + AT END MOVE 'Y' TO FILE-STATUS + NOT AT END CALL "parse-str" USING + BY CONTENT MY-STR, + BY REFERENCE NB-NICE + * On passe par référence NB-NICE pour l’incrémenter + END-CALL + END-READ + END-PERFORM. + DISPLAY "Nombre de bonnes chaines : " NB-NICE END-DISPLAY. + CLOSE FILE1. + STOP RUN. + + ****************************************************************** + * parse-str : parse la chaine de caractères pour voir le nombre de + * bonnes chaines. Prend en paramètres 2 arguments : + * STR : chaine de caractères de taille 16. Sera parser. + * NB : (REFERENCE) le nombre de bonnes chaines. Sera incrémenter. + ***************************************************************** + + IDENTIFICATION DIVISION. + PROGRAM-ID. parse-str. + + DATA DIVISION. + WORKING-STORAGE SECTION. + 77 CHAR PIC A. + 88 VOY VALUE 'a','e','i','o','u'. + 77 I PIC 99. + 88 END-P VALUE 17. + 77 J PIC 99. + 77 K PIC 99. + 88 END-I VALUE 17. + 77 PRED PIC A. + 77 MYNEW PIC A. + 77 TMP PIC AA. + 77 TMP-NEXT PIC AA. + 77 BETWEEN PIC X. + 77 DOUBLE PIC X. + 77 DOUBLE-CHAR PIC AA. + 77 DOUBLE-CHAR-NEXT PIC AA. + + ****************************************************************** + * NB-VOY contient le nombre de voyelles + * PRED le caractère précédent + * TMP forme la chaine contenant le caractère précédent et courant + * BAD les mauvaises formes de chaines + * DOUBLE est mit à Y lorsque CHAR = PRED + * + * LINKAGE SECTION contient les paramètres du programme parse-str + ****************************************************************** + + LINKAGE SECTION. + 77 STR PIC A(17). + 77 NB PIC 9(4). + + PROCEDURE DIVISION USING STR, NB. + premiere-part. + MOVE 'N' TO BETWEEN. + MOVE 'N' TO DOUBLE. + d DISPLAY STR. + d DISPLAY "=================". + PERFORM VARYING I FROM 1 BY 1 UNTIL END-P + COMPUTE J = I + 1 END-COMPUTE + MOVE STR(I:1) TO CHAR + IF I > 1 AND I < (LENGTH OF STR - 1) THEN + MOVE STR(J:1) TO MYNEW + IF PRED = MYNEW THEN + MOVE 'Y' TO BETWEEN + END-IF + END-IF + + IF I < ((LENGTH OF STR) - 2) AND DOUBLE = 'N' THEN + MOVE STR(I:2) TO DOUBLE-CHAR + ADD 1 TO J END-ADD + PERFORM VARYING K FROM J BY 1 UNTIL END-I + MOVE STR(K:2) TO DOUBLE-CHAR-NEXT + IF DOUBLE-CHAR = DOUBLE-CHAR-NEXT THEN + MOVE 'Y' TO DOUBLE + END-IF + END-PERFORM + END-IF + + d DISPLAY "ACT. CHAR : " CHAR + d DISPLAY "ACT. PRED : " PRED + d DISPLAY "I : " I + MOVE CHAR TO PRED + END-PERFORM. + + IF BETWEEN = 'Y' AND DOUBLE = 'Y' + THEN + ADD 1 TO NB END-ADD + END-IF. + EXIT PROGRAM. + + END PROGRAM parse-str. + + ************************************************************************* + + END PROGRAM jour-cinq-prem-part. From 0ad1c2ba9f317a139d838ab8d2a2888ce854c516 Mon Sep 17 00:00:00 2001 From: rick <rick@gnous.eu> Date: Wed, 17 Mar 2021 20:07:01 +0100 Subject: [PATCH 05/12] Fusion en un seul fichier des 2 parties --- jour05/jour5-prem.cob | 113 ----------------------------- jour05/jour5.cob | 164 +++++++++++++++++++++++++++++++++--------- 2 files changed, 130 insertions(+), 147 deletions(-) delete mode 100644 jour05/jour5-prem.cob diff --git a/jour05/jour5-prem.cob b/jour05/jour5-prem.cob deleted file mode 100644 index be19c93..0000000 --- a/jour05/jour5-prem.cob +++ /dev/null @@ -1,113 +0,0 @@ -000001 IDENTIFICATION DIVISION. -000002 PROGRAM-ID. jour-cinq-prem-part. -000003 -000004 ENVIRONMENT DIVISION. -000005 INPUT-OUTPUT SECTION. -000006 FILE-CONTROL. -000007 SELECT FILE1 ASSIGN TO "input" -000008 ORGANIZATION LINE SEQUENTIAL. -000009 -000010 DATA DIVISION. -000011 FILE SECTION. -000012 FD FILE1. -000013 01 INPUT-FILE. -000014 02 STR PIC A(17). -000015 -000016 WORKING-STORAGE SECTION. -000017 01 MY-FILE. -000018 02 MY-STR PIC A(17). -000019 01 FILE-STATUS PIC X VALUE 'N'. -000020 88 EOF VALUE 'Y'. -000021 77 NB-NICE PIC 9(4) VALUE 0. -000022 -000023 PROCEDURE DIVISION. -000024 main. -000025 OPEN INPUT FILE1. -000026 PERFORM UNTIL EOF -000027 READ FILE1 RECORD INTO MY-FILE -000028* Lorsqu’on arrive à la fin du fichier, on met Y pour le signaler -000029 AT END MOVE 'Y' TO FILE-STATUS -000030 NOT AT END CALL "parse-str" USING -000031 BY CONTENT MY-STR, -000032 BY REFERENCE NB-NICE -000033* On passe par référence NB-NICE pour l’incrémenter -000034 END-CALL -000035 END-READ -000036 END-PERFORM. -000037 DISPLAY "Nombre de bonnes chaines : " NB-NICE END-DISPLAY. -000038 CLOSE FILE1. -000039 STOP RUN. -000039 -000040****************************************************************** -000041* parse-str : parse la chaine de caractères pour voir le nombre de -000042* bonnes chaines. Prend en paramètres 2 arguments : -000043* STR : chaine de caractères de taille 16. Sera parser. -000044* NB : (REFERENCE) le nombre de bonnes chaines. Sera incrémenter. -000045 -000046 IDENTIFICATION DIVISION. -000047 PROGRAM-ID. parse-str. -000047 -000048 DATA DIVISION. -000049 WORKING-STORAGE SECTION. -000050 77 CHAR PIC A. -000051 88 VOY VALUE 'a','e','i','o','u'. -000052 77 I PIC 99. -000053 88 END-P VALUE 17. -000054 77 NB-VOY PIC 99. -000055 77 PRED PIC A. -000056 77 TMP PIC AA. -000057 88 BAD VALUE 'ab', 'cd', 'pq', 'xy'. -000058 77 DOUBLE PIC X. -000058 -000059* NB-VOY contient le nombre de voyelles -000060* PRED le caractère précédent -000061* TMP forme la chaine contenant le caractère précédent et courant -000062* BAD les mauvaises formes de chaines -000063* DOUBLE est mit à Y lorsque CHAR = PRED -000064* -000065* LINKAGE SECTION contient les paramètres du programme parse-str -000066 -000067 LINKAGE SECTION. -000068 77 STR PIC A(17). -000069 77 NB PIC 9(4). -000069 -000070 PROCEDURE DIVISION USING STR, NB. -000071 parse. -000072 MOVE 0 TO NB-VOY. -000073 MOVE 'N' TO DOUBLE. -000074d DISPLAY STR. -000075d DISPLAY "=================". -000076 PERFORM VARYING I FROM 1 BY 1 UNTIL END-P -000077 MOVE STR(I:1) TO CHAR -000078d DISPLAY "ACT. CHAR : " CHAR -000079d DISPLAY "ACT. PRED : " PRED -000080d DISPLAY "I : " I -000081 IF VOY -000082 THEN ADD 1 TO NB-VOY END-ADD -000083 END-IF -000084 IF I >= 2 -000085 THEN -000086 STRING PRED CHAR INTO TMP END-STRING -000087d DISPLAY "TMP STR : " TMP -000088 IF BAD -000089 THEN -000090 EXIT PERFORM -000091 END-IF -000092 IF PRED = CHAR -000093 THEN -000094 MOVE 'Y' TO DOUBLE -000095 END-IF -000096d DISPLAY "DOUBLE : " DOUBLE -000097 END-IF -000098 MOVE CHAR TO PRED -000099 END-PERFORM. -000100 IF NOT BAD AND NB-VOY >= 3 AND DOUBLE = 'Y' -000101 THEN -000102 ADD 1 TO NB END-ADD -000103 END-IF. -000104 EXIT PROGRAM. -000105 END PROGRAM parse-str. -000105 -000106************************************************************************* -000107 -000108 END PROGRAM jour-cinq-prem-part. diff --git a/jour05/jour5.cob b/jour05/jour5.cob index c749e2f..aaa90fc 100644 --- a/jour05/jour5.cob +++ b/jour05/jour5.cob @@ -18,7 +18,8 @@ 02 MY-STR PIC A(17). 01 FILE-STATUS PIC X VALUE 'N'. 88 EOF VALUE 'Y'. - 77 NB-NICE PIC 9(4) VALUE 0. + 77 NB-NICE-PREM PIC 9(4) VALUE 0. + 77 NB-NICE-DEUX PIC 9(4) VALUE 0. PROCEDURE DIVISION. main. @@ -27,46 +28,73 @@ READ FILE1 RECORD INTO MY-FILE * Lorsqu’on arrive à la fin du fichier, on met Y pour le signaler AT END MOVE 'Y' TO FILE-STATUS - NOT AT END CALL "parse-str" USING + NOT AT END CALL "hub" USING BY CONTENT MY-STR, - BY REFERENCE NB-NICE + BY REFERENCE NB-NICE-PREM + BY REFERENCE NB-NICE-DEUX * On passe par référence NB-NICE pour l’incrémenter END-CALL END-READ END-PERFORM. - DISPLAY "Nombre de bonnes chaines : " NB-NICE END-DISPLAY. + DISPLAY "Nombres de bonnes chaines :" END-DISPLAY. + DISPLAY "Dans la partie 1 : " NB-NICE-PREM END-DISPLAY. + DISPLAY "Dans la partie 2 : " NB-NICE-DEUX END-DISPLAY. CLOSE FILE1. STOP RUN. - ****************************************************************** - * parse-str : parse la chaine de caractères pour voir le nombre de - * bonnes chaines. Prend en paramètres 2 arguments : - * STR : chaine de caractères de taille 16. Sera parser. - * NB : (REFERENCE) le nombre de bonnes chaines. Sera incrémenter. + ***************************************************************** + * hub : exécute les 2 fonctions pour les 2 parties + * STR : la chaine à passer en paramètre aux deux fonctions + * NB-PREM : (REFERENCE) nombre bonnes chaines partie 1 + * NB-DEUX : (REFERENCE) nombre bonnes chaines partie 2 + * Ces 2 variables seront incrémentées ***************************************************************** IDENTIFICATION DIVISION. - PROGRAM-ID. parse-str. - + PROGRAM-ID. hub. + + DATA DIVISION. + LINKAGE SECTION. + 77 STR PIC A(17). + 77 NB-PREM PIC 9(4). + 77 NB-DEUX PIC 9(4). + + PROCEDURE DIVISION USING STR, NB-PREM, NB-DEUX. + route. + CALL "parse-prem" USING + BY CONTENT STR, + BY REFERENCE NB-PREM + END-CALL. + + CALL "parse-deux" USING + BY CONTENT STR, + BY REFERENCE NB-DEUX + END-CALL. + EXIT PROGRAM. + + ****************************************************************** + * parse-prem : parse la chaine de caractères pour voir le nombre de + * bonnes chaines pour la partie 1. Prend en paramètres 2 arguments : + * STR : chaine de caractères de taille 17 à analyser. + * NB : (REFERENCE) le nombre de bonnes chaines. Sera incrémenter. + ***************************************************************** + + IDENTIFICATION DIVISION. + PROGRAM-ID. parse-prem. + DATA DIVISION. WORKING-STORAGE SECTION. 77 CHAR PIC A. 88 VOY VALUE 'a','e','i','o','u'. 77 I PIC 99. 88 END-P VALUE 17. - 77 J PIC 99. - 77 K PIC 99. - 88 END-I VALUE 17. + 77 NB-VOY PIC 99. 77 PRED PIC A. - 77 MYNEW PIC A. 77 TMP PIC AA. - 77 TMP-NEXT PIC AA. - 77 BETWEEN PIC X. + 88 BAD VALUE 'ab', 'cd', 'pq', 'xy'. 77 DOUBLE PIC X. - 77 DOUBLE-CHAR PIC AA. - 77 DOUBLE-CHAR-NEXT PIC AA. - - ****************************************************************** + + ***************************************************************** * NB-VOY contient le nombre de voyelles * PRED le caractère précédent * TMP forme la chaine contenant le caractère précédent et courant @@ -74,6 +102,81 @@ * DOUBLE est mit à Y lorsque CHAR = PRED * * LINKAGE SECTION contient les paramètres du programme parse-str + ***************************************************************** + + LINKAGE SECTION. + 77 STR PIC A(17). + 77 NB PIC 9(4). + + PROCEDURE DIVISION USING STR, NB. + parse. + MOVE 0 TO NB-VOY. + MOVE 'N' TO DOUBLE. + d DISPLAY STR. + d DISPLAY "=================". + PERFORM VARYING I FROM 1 BY 1 UNTIL END-P + MOVE STR(I:1) TO CHAR + d DISPLAY "ACT. CHAR : " CHAR + d DISPLAY "ACT. PRED : " PRED + d DISPLAY "I : " I + IF VOY + THEN ADD 1 TO NB-VOY END-ADD + END-IF + IF I >= 2 + THEN + STRING PRED CHAR INTO TMP END-STRING + d DISPLAY "TMP STR : " TMP + IF BAD + THEN + EXIT PERFORM + END-IF + IF PRED = CHAR + THEN + MOVE 'Y' TO DOUBLE + END-IF + d DISPLAY "DOUBLE : " DOUBLE + END-IF + MOVE CHAR TO PRED + END-PERFORM. + IF NOT BAD AND NB-VOY >= 3 AND DOUBLE = 'Y' + THEN + ADD 1 TO NB END-ADD + END-IF. + EXIT PROGRAM. + END PROGRAM parse-prem. + + ****************************************************************** + * parse-deux : parse la chaine de caractères pour voir le nombre de + * bonnes chaines pour la partie 2. Prend en paramètres 2 arguments : + * STR : chaine de caractères de taille 17 à analyser. + * NB : (REFERENCE) le nombre de bonnes chaines. Sera incrémenter. + ***************************************************************** + + IDENTIFICATION DIVISION. + PROGRAM-ID. parse-deux. + + DATA DIVISION. + WORKING-STORAGE SECTION. + 77 CHAR PIC A. + 77 I PIC 99. + 88 STR-LENGTH VALUE 17. + 77 J PIC 99. + 77 K PIC 99. + 88 DOUBLE-STR-LENGTH VALUE 16. + 77 PRED PIC A. + 77 MYNEW PIC A. + 77 DOUBLE-CHAR PIC AA. + 77 DOUBLE-CHAR-NEXT PIC AA. + 77 BETWEEN PIC X. + 77 DOUBLE PIC X. + + ****************************************************************** + * PRED le caractère précédent + * MYNEW le caractère suivant + * DOUBLE-CHAR la paire à vérifier + * DOUBLE-CHAR-NEXT les paires suivantes + * DOUBLE est mit à Y lorsque 2 pairs sont trouvées + * BETWEEN est mit à Y lorsque 2 memes lettres en encadrent une ****************************************************************** LINKAGE SECTION. @@ -81,12 +184,10 @@ 77 NB PIC 9(4). PROCEDURE DIVISION USING STR, NB. - premiere-part. + deuxieme-part. MOVE 'N' TO BETWEEN. MOVE 'N' TO DOUBLE. - d DISPLAY STR. - d DISPLAY "=================". - PERFORM VARYING I FROM 1 BY 1 UNTIL END-P + PERFORM VARYING I FROM 1 BY 1 UNTIL STR-LENGTH COMPUTE J = I + 1 END-COMPUTE MOVE STR(I:1) TO CHAR IF I > 1 AND I < (LENGTH OF STR - 1) THEN @@ -99,17 +200,13 @@ IF I < ((LENGTH OF STR) - 2) AND DOUBLE = 'N' THEN MOVE STR(I:2) TO DOUBLE-CHAR ADD 1 TO J END-ADD - PERFORM VARYING K FROM J BY 1 UNTIL END-I + PERFORM VARYING K FROM J BY 1 UNTIL DOUBLE-STR-LENGTH MOVE STR(K:2) TO DOUBLE-CHAR-NEXT IF DOUBLE-CHAR = DOUBLE-CHAR-NEXT THEN MOVE 'Y' TO DOUBLE END-IF END-PERFORM END-IF - - d DISPLAY "ACT. CHAR : " CHAR - d DISPLAY "ACT. PRED : " PRED - d DISPLAY "I : " I MOVE CHAR TO PRED END-PERFORM. @@ -119,8 +216,7 @@ END-IF. EXIT PROGRAM. - END PROGRAM parse-str. - - ************************************************************************* - + END PROGRAM parse-deux. + + END PROGRAM hub. END PROGRAM jour-cinq-prem-part. From 7bbe14e792669d38f7a5b9535e1cce1e6fba39d5 Mon Sep 17 00:00:00 2001 From: rick <rick@gnous.eu> Date: Wed, 17 Mar 2021 20:07:43 +0100 Subject: [PATCH 06/12] Ajout input --- jour05/input | 1002 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 1000 insertions(+), 2 deletions(-) diff --git a/jour05/input b/jour05/input index ab41c95..7bc179c 100644 --- a/jour05/input +++ b/jour05/input @@ -1,2 +1,1000 @@ -ugknbfddgicrmopn -jchzalrnumimnmhp +uxcplgxnkwbdwhrp +suerykeptdsutidb +dmrtgdkaimrrwmej +ztxhjwllrckhakut +gdnzurjbbwmgayrg +gjdzbtrcxwprtery +fbuqqaatackrvemm +pcjhsshoveaodyko +lrpprussbesniilv +mmsebhtqqjiqrusd +vumllmrrdjgktmnb +ptsqjcfbmgwdywgi +mmppavyjgcfebgpl +zexyxksqrqyonhui +npulalteaztqqnrl +mscqpccetkktaknl +ydssjjlfejdxrztr +jdygsbqimbxljuue +ortsthjkmlonvgci +jfjhsbxeorhgmstc +vdrqdpojfuubjbbg +xxxddetvrlpzsfpq +zpjxvrmaorjpwegy +laxrlkntrukjcswz +pbqoungonelthcke +niexeyzvrtrlgfzw +zuetendekblknqng +lyazavyoweyuvfye +tegbldtkagfwlerf +xckozymymezzarpy +ehydpjavmncegzfn +jlnespnckgwmkkry +bfyetscttekoodio +bnokwopzvsozsbmj +qpqjhzdbuhrxsipy +vveroinquypehnnk +ykjtxscefztrmnen +vxlbxagsmsuuchod +punnnfyyufkpqilx +zibnnszmrmtissww +cxoaaphylmlyljjz +zpcmkcftuuesvsqw +wcqeqynmbbarahtz +kspontxsclmbkequ +jeomqzucrjxtypwl +ixynwoxupzybroij +ionndmdwpofvjnnq +tycxecjvaxyovrvu +uxdapggxzmbwrity +csskdqivjcdsnhpe +otflgdbzevmzkxzx +verykrivwbrmocta +ccbdeemfnmtputjw +suyuuthfhlysdmhr +aigzoaozaginuxcm +ycxfnrjnrcubbmzs +fgbqhrypnrpiizyy +taoxrnwdhsehywze +echfzdbnphlwjlew +jhmomnrbfaawicda +fywndkvhbzxxaihx +aftuyacfkdzzzpem +yytzxsvwztlcljvb +iblbjiotoabgnvld +kvpwzvwrsmvtdxcx +ardgckwkftcefunk +oqtivsqhcgrcmbbd +wkaieqxdoajyvaso +rkemicdsrtxsydvl +sobljmgiahyqbirc +pbhvtrxajxisuivj +ggqywcbfckburdrr +gmegczjawxtsywwq +kgjhlwyonwhojyvq +bpqlmxtarjthtjpn +pxfnnuyacdxyfclr +isdbibbtrqdfuopn +vucsgcviofwtdjcg +ywehopujowckggkg +mzogxlhldvxytsgl +mllyabngqmzfcubp +uwvmejelibobdbug +brebtoppnwawcmxa +fcftkhghbnznafie +sqiizvgijmddvxxz +qzvvjaonnxszeuar +abekxzbqttczywvy +bkldqqioyhrgzgjs +lilslxsibyunueff +ktxxltqgfrnscxnx +iwdqtlipxoubonrg +twncehkxkhouoctj +bdwlmbahtqtkduxz +smbzkuoikcyiulxq +bjmsdkqcmnidxjsr +icbrswapzdlzdanh +eyszxnhbjziiplgn +pdxhrkcbhzqditwb +nfulnpvtzimbzsze +glayzfymwffmlwhk +bejxesxdnwdlpeup +ukssntwuqvhmsgwj +hoccqxlxuuoomwyc +rapztrdfxrosxcig +cxowzhgmzerttdfq +yzhcurqhdxhmolak +kqgulndpxbwxesxi +yjkgcvtytkitvxiu +xnhfqhnnaceaqyue +qkuqreghngfndifr +xesxgeaucmhswnex +occbvembjeuthryi +dmefxmxqjncirdwj +ystmvxklmcdlsvin +pplykqlxmkdrmydq +cbbjkpbdvjhkxnuc +embhffzsciklnxrz +asrsxtvsdnuhcnco +xcbcrtcnzqedktpi +mglwujflcnixbkvn +mnurwhkzynhahbjp +cekjbablkjehixtj +kbkcmjhhipcjcwru +usifwcsfknoviasj +rsfgocseyeflqhku +prgcyqrickecxlhm +asbawplieizkavmq +sylnsirtrxgrcono +nzspjfovbtfkloya +qfxmsprfytvaxgtr +yckpentqodgzngnv +ycsfscegcexcnbwq +kbmltycafudieyuh +tpahmvkftilypxuf +qivqozjrmguypuxu +gdhbfradjuidunbk +vxqevjncsqqnhmkl +rpricegggcfeihst +xucvzpprwtdpzifq +egyjcyyrrdnyhxoo +kfbrzmbtrrwyeofp +qpjdsocrtwzpjdkd +reboldkprsgmmbit +vwkrzqvvhqkensuy +ydvmssepskzzvfdp +vqbigplejygdijuu +mzpgnahrhxgjriqm +uiejixjadpfsxqcv +tosatnvnfjkqiaha +yipuojpxfqnltclx +pcxwvgcghfpptjlf +shrudjvvapohziaj +jdckfjdtjsszdzhj +hgisfhcbdgvxuilk +gytnfjmrfujnmnpp +ohflkgffnxmpwrrs +jzxajbkwwjknasjh +xrcxfollmejrislv +djjlwykouhyfukob +rittommltkbtsequ +lpbvkxdcnlikwcxm +vkcrjmcifhwgfpdj +dkhjqwtggdrmcslq +swnohthfvjvoasvt +yrzoksmcnsagatii +duommjnueqmdxftp +inlvzlppdlgfmvmx +xibilzssabuqihtq +inkmwnvrkootrged +ldfianvyugqtemax +gbvwtiexcuvtngti +temjkvgnwxrhdidc +askbbywyyykerghp +onezejkuwmrqdkfr +kybekxtgartuurbq +ubzjotlasrewbbkl +stueymlsovqgmwkh +lhduseycrewwponi +yohdmucunrgemqcu +onnfbxcuhbuifbyc +odrjkigbrsojlqbt +imqkqqlkgmttpxtx +sxmlkspqoluidnxw +akaauujpxhnccleb +xvgpghhdtpgvefnk +jdxeqxzsbqtvgvcq +mdusenpygmerxnni +agihtqvgkmgcbtaw +dovxcywlyvspixad +uulgazeyvgtxqkfz +ndhmvrwuflhktzyo +hcaqkmrbvozaanvm +tvfozbqavqxdqwqv +rlkpycdzopitfbsv +dmyjtmjbtnvnedhs +fmwmqeigbzrxjvdu +twgookcelrjmczqi +grxosmxvzgymjdtz +zsstljhzugqybueo +jpeapxlytnycekbd +iasykpefrwxrlvxl +azohkkqybcnsddus +aoaekngakjsgsonx +awsqaoswqejanotc +sgdxmketnjmjxxcp +ylnyuloaukdrhwuy +ewoqjmakifbefdib +ytjfubnexoxuevbp +ewlreawvddptezdd +vmkonztwnfgssdog +ahbpuqygcwmudyxn +kmahpxfjximorkrh +otjbexwssgpnpccn +aewskyipyztvskkl +urqmlaiqyfqpizje +nrfrbedthzymfgfa +vndwwrjrwzoltfgi +iiewevdzbortcwwe +qiblninjkrkhzxgi +xmvaxqruyzesifuu +yewuzizdaucycsko +hmasezegrhycbucy +dwpjrmkhsmnecill +hnffpbodtxprlhss +avmrgrwahpsvzuhm +nksvvaswujiukzxk +zzzapwhtffilxphu +vwegwyjkbzsrtnol +qurpszehmkfqwaok +iknoqtovqowthpno +brlmpjviuiagymek +efxebhputzeulthq +mzkquarxlhlvvost +xsigcagzqbhwwgps +qufztljyzjxgahdp +dlfkavnhobssfxvx +hgdpcgqxjegnhjlr +fboomzcvvqudjfbi +wnjuuiivaxynqhrd +nhcgzmpujgwisguw +wjeiacxuymuhykgk +qmeebvxijcgdlzpf +nmmnxsehhgsgoich +ejluaraxythbqfkl +mdbsbwnaypvlatcj +nnfshfibmvfqrbka +dvckdmihzamgqpxr +foztgqrjbwyxvewk +okpryqcbvorcxhoh +fpiwsndulvtthctx +zrbiovlmzdmibsiq +setwafbnnzcftutg +nyvqghxhgkxfobdm +enpvqadzarauhajl +twblhpvkazpdmhmr +lbhlllsgswvhdesh +tdfwkgxnqjxcvsuo +lnvyjjbwycjbvrrb +jsxqdvmzaydbwekg +xirbcbvwlcptuvoa +hwnukxenilatlfsk +khwopjqkxprgopmd +sljzdoviweameskw +stkrdmxmpaijximn +fdilorryzhmeqwkc +mfchaaialgvoozra +gjxhoxeqgkbknmze +beowovcoqnginrno +mkgmsgwkwhizunxo +phnhfusyoylvjdou +csehdlcmwepcpzmq +pgojomirzntgzohj +fkffgyfsvwqhmboz +mrvduasiytbzfwdn +epzrmsifpmfaewng +ooqxnoyqrlozbbyf +ahcxfmgtedywrbnx +ibqktvqmgnirqjot +xarssauvofdiaefn +xradvurskwbfzrnw +nxklmulddqcmewad +twichytatzoggchg +qmgvroqwrjgcycyv +yvezgulgrtgvyjjm +jgmcklzjdmznmuqk +bytajdwwconasjzt +apjttucpycyghqhu +flfejjzihodwtyup +gmrtrwyewucyqotv +nlohdrlymbkoenyl +wxcmqwbrwgtmkyfe +njtzlceyevmisxfn +htbbidsfbbshmzlt +gxhjeypjwghnrbsf +cifcwnbtazronikv +ezvjijcjcyszwdjy +srffeyrvyetbecmc +xpjefrtatrlkbkzl +yhncvfqjcyhsxhbb +pqhcufzlcezhihpr +qtdsfvxfqmsnzisp +dfonzdicxxhzxkrx +mqqqzhxkyfpofzty +dodjadoqyxsuazxt +jjwkrlquazzjbvlm +ttosfloajukoytfb +llateudmzxrzbqph +criqihrysgesmpsx +npszvlittbcxxknj +qmzojrvraitrktil +cfyoozzpwxwkwoto +daxohtcgvtktggfw +vthkpkoxmiuotjaj +pkfkyobvzjeecnui +ojcjiqrfltbhcdze +scbivhpvjkjbauun +ysowvwtzmqpjfwyp +laeplxlunwkfeaou +jufhcikovykwjhsa +xrucychehzksoitr +pyaulaltjkktlfkq +oypfrblfdhwvqxcv +zybrgxixvhchgzcf +puoagefcmlxelvlp +xjnhfdrsbhszfsso +ocgvzryoydaoracw +bxpnqllmptkpeena +pziyeihxlxbbgdio +bvtrhtlbfzmglsfc +ggpuvtseebylsrfk +pukenexjqecnivfj +jswabfbzpnhhdbpn +enojrtwqpfziyqsv +rjtmxudgcudefuiz +iqmjxynvtvdacffc +uheywxlsusklitvl +kwhxduejafdpmqdc +rspgblenbqlmcltn +rczhurnrqqgjutox +dqhytibjzxkdblzl +hpbieadydiycvfys +pucztfoqvenxiuym +nqpfzgpblwijiprf +ltgseeblgajbvltk +mwxukbsnapewhfrc +dvxluiflicdtnxix +pexfbpgnqiqymxcq +dakudfjjwtpxuzxy +letlceyzlgmnrewu +ojktahbsdifdfhmd +anezoybbghjudbih +sawxtlvzysaqkbbf +ttnkctcevpjiwqua +edrwrdvbaoqraejd +wnbfilvuienjxlcr +wqhzwvyybyxhhtsm +jxbgvyaqczwdlxfo +wbypqfmbwrsvfmdv +izdxjyfpidehbets +vbxbggqseurknjor +egpmpoxickhvwdlz +ivfrzklvpwoemxsy +xkziseheibmrpdww +xnrmtoihaudozksa +efemdmbxdsaymlrw +yjdjeckmsrckaagx +vlftqxxcburxnohv +fwyquwgajaxebduj +dwpmqvcxqwwnfkkr +isduxxjfsluuvwga +avdtdppodpntojgf +vrcoekdnutbnlgqk +kbhboxjmgomizxkl +cgsfpjrmewexgzfy +usdtnhjxbvtnafvp +bjoddgxbuxzhnsqd +hoyqdzofddedevsb +rwiwbvqfjajotaoj +iabomphsuyfptoos +bubeonwbukprpvhy +xurgunofmluhisxm +puyojzdvhktawkua +dbvqhztzdsncrxkb +oaeclqzyshuuryvm +nmgwfssnflxvcupr +vjkiwbpunkahtsrw +romyflhrarxchmyo +yecssfmetezchwjc +qwtocacqdslhozkd +mesexvfbtypblmam +mtjucgtjesjppdtt +pvodhqqoeecjsvwi +vvlcwignechiqvxj +wiqmzmmjgjajwgov +kwneobiiaixhclev +lkdeglzrrxuomsyt +oqovuwcpwbghurva +lfsdcxsasmuarwwg +awkbafhswnfbhvck +sztxlnmyvqsiwljg +hozxgyxbcxjzedvs +oifkqgfqmflxvyzn +mfvnehsajlofepib +delgbyfhsyhmyrfa +uenimmwriihxoydv +vjqutpilsztquutn +kfebsaixycrodhvl +coifyqfwzlovrpaj +xiyvdxtkqhcqfsqr +hoidcbzsauirpkyt +fiumhfaazfkbaglq +fzwdormfbtkdjgfm +faxqrortjdeihjfv +ljhaszjklhkjvrfi +pzrxsffkuockoqyl +immbtokjmwyrktzn +lzgjhyiywwnuxpfx +vhkocmwzkfwjuzog +ghntjkszahmdzfbl +gbcthxesvqbmzggy +oyttamhpquflojkh +nbscpfjwzylkfbtv +wnumxzqbltvxtbzs +jfhobjxionolnouc +nrtxxmvqjhasigvm +hweodfomsnlgaxnj +lfgehftptlfyvvaj +ccoueqkocrdgwlvy +euhgvirhsaotuhgf +pdlsanvgitjvedhd +seokvlbhrfhswanv +pntdqaturewqczti +jkktayepxcifyurj +dhzzbiaisozqhown +wehtwakcmqwczpbu +zwvozvspqmuckkcd +efucjlrwxuhmjubr +lzodaxuyntrnxwvp +qdezfvpyowfpmtwd +mizijorwrkanesva +txmitbiqoiryxhpz +xhsqgobpouwnlvps +muixgprsknlqaele +disgutskxwplodra +bmztllsugzsqefrm +ymwznyowpaaefkhm +ebfifzloswvoagqh +pkldomvvklefcicw +ziqzbbfunmcgrbtq +iuekfpbkraiwqkic +jflgjidirjapcuqo +achsfbroyrnqnecg +udbhouhlgjjzapzr +arerrohyhhkmwhyo +txyjzkqexgvzdtow +ogzrjwibvzoucrpg +rfdftaesxdnghwhd +axdhwmpuxelmpabo +gtktemowbsvognac +wkfuclilhqjzxztk +qbwjouutzegaxhrz +opfziwqqbwhzzqhj +pvcvcsupfwsmeacs +xsbohvbguzsgpawn +sczoefukwywxriwj +oqkhcqfdeaifbqoc +vtsrholxbjkhwoln +yuvapljnwbssfbhi +dxdfwccqvyzeszyl +gdbmjtonbiugitmb +qunirtqbubxalmxr +zzxsirhdaippnopr +fibtndkqjfechbmq +gqgqyjvqmfiwiyio +ihwsfkwhtzuydlzw +eygyuffeyrbbhlit +zdlsaweqomzrhdyy +ptbgfzuvxiuuxyds +llxlfdquvovzuqva +wfrltggyztqtyljv +kwipfevnbralidbm +gbhqfbrvuseellbx +obkbuualrzrakknv +hlradjrwyjgfqugu +vtqlxbyiaiorzdsp +tedcbqoxsmbfjeyy +cxdppfvklbdayghy +gjnofexywmdtgeft +ldzeimbbjmgpgeax +egrwsmshbvbawvja +vadfrjvcrdlonrkg +mojorplakzfmzvtp +jyurlsoxhubferpo +ijwqogivvzpbegkm +cnmetoionfxlutzg +lawigelyhegqtyil +mqosapvnduocctcd +eqncubmywvxgpfld +vigfretuzppxkrfy +ncwynsziydoflllq +cbllqinsipfknabg +ndtbvdivzlnafziq +iqrrzgzntjquzlrs +damkuheynobqvusp +jxctymifsqilyoxa +ylritbpusymysmrf +paoqcuihyooaghfu +obhpkdaibwixeepl +igrmhawvctyfjfhd +ybekishyztlahopt +vkbniafnlfqhhsrq +kltdigxmbhazrywf +ufhcoyvvxqzeixpr +klcxdcoglwmeynjt +funpjuvfbzcgdhgs +akgyvyfzcpmepiuc +zhlkgvhmjhwrfmua +ibsowtbnrsnxexuz +vpufbqilksypwlrn +ngrintxhusvdkfib +ziuwswlbrxcxqslw +sucledgxruugrnic +zwnsfsyotmlpinew +oaekskxfcwwuzkor +qjmqwaktpzhwfldu +tmgfgqgpxaryktxo +qfaizepgauqxvffk +addkqofusrstpamf +shdnwnnderkemcts +gwfygbsugzptvena +fpziernelahopdsj +bkkrqbsjvyjtqfax +gxrljlqwxghbgjox +ipfwnqaskupkmevm +nnyoyhnqyfydqpno +lgzltbrrzeqqtydq +fgzxqurhtdfucheb +jvpthtudlsoivdwj +bmlhymalgvehvxys +fhklibetnvghlgnp +hfcyhptxzvblvlst +donanindroexgrha +oqawfmslbgjqimzx +jzgehjfjukizosep +bhlgamcjqijpvipb +jrcrdjrvsyxzidsk +ouwfwwjqezkofqck +wrvsbnkhyzayialf +knhivfqjxrxnafdl +hbxbgqsqwzijlngf +qlffukpfmnxpfiyq +evhxlouocemdkwgk +baxhdrmhaukpmatw +nwlyytsvreqaminp +ljsjjzmlsilvxgal +onunatwxfzwlmgpk +njgolfwndqnwdqde +ngdgcjzxupkzzbqi +ieawycvvmvftbikq +ccyvnexuvczvtrit +enndfwjpwjyasjvv +tcihprzwzftaioqu +bkztdkbrxfvfeddu +qkvhtltdrmryzdco +rurtxgibkeaibofs +mjxypgscrqiglzbp +unpkojewduprmymd +csqtkhjxpbzbnqog +mednhjgbwzlhmufi +sfrwfazygygzirwd +ijqeupbrhhpqxota +cmhpncanwudyysyh +wwcxbwzrplfzrwxd +jriomldifuobjpmq +radonyagpulnnyee +ryqjwxsspbbhnptd +yeoqpnsdhludlmzf +qsqlkeetyalenueh +qnnedenwsjdrcrzt +lejkuhsllxbhfcrx +anddbvllrrqefvke +wdtljquijaksvdsv +adslgvfuqqdkzvbc +whbccefjpcnjwhaq +kqrfuankaibohqsg +fyxisfwihvylgnfd +rwqdrddghyqudcif +syhzowthaaiiouaf +zjmrtgrnohxmtidu +deecwkfvjffxrzge +dztmvolqxkhdscxe +cdghcrgavygojhqn +pepqmdbjhnbugqeu +pnumdjpnddbxhieg +jzfhxeyahiagizfw +hdkwugrhcniueyor +gmgudeqlbmqynflu +toidiotdmfkxbzvm +pyymuoevoezlfkjb +etrbwuafvteqynlr +usvytbytsecnmqtd +dfmlizboawrhmvim +vrbtuxvzzefedlvs +vslcwudvasvxbnje +xdxyvoxaubtwjoif +mduhzhascirittdf +cqoqdhdxgvvvxamk +dshnfwhqjbhuznqr +zimthfxbdmkulkjg +luylgfmmwbptyzpj +iujpcgogshhotqrc +caqcyzqcumfljvsp +sprtitjlbfpygxya +fnconnrtnigkpykt +irmqaqzjexdtnaph +bbqrtoblmltvwome +ozjkzjfgnkhafbye +hwljjxpxziqbojlw +zahvyqyoqnqjlieb +dptshrgpbgusyqsc +uzlbnrwetkbkjnlm +yccaifzmvbvwxlcc +wilnbebdshcrrnuu +evxnoebteifbffuq +khbajekbyldddzfo +kjivdcafcyvnkojr +wtskbixasmakxxnv +uzmivodqzqupqkwx +rxexcbwhiywwwwnu +rowcapqaxjzcxwqi +fkeytjyipaxwcbqn +pyfbntonlrunkgvq +qiijveatlnplaifi +ltnhlialynlafknw +urrhfpxmpjwotvdn +xklumhfyehnqssys +civrvydypynjdoap +fvbmxnfogscbbnyd +oznavyflpzzucuvg +iyshrpypfbirahqo +qmzbfgelvpxvqecy +xkkxaufomsjbofmk +irlouftdmpitwvlq +csjoptbdorqxhnjg +bkryeshfsaqpdztm +guxbdqzfafsjoadl +tgrltexgrzatzwxf +cwsgsijqdanubxad +xafnexgturwrzyrg +apcrsqdbsbaxocxr +pspgxnzcevmvvejk +szephmeegvegugdt +ndjsoloeacasxjap +bdnfksliscnirjfu +ehglacmzpcgglpux +jwweijomqfcupvzw +yesblmmkqhbazmdu +sjsmalypmuslzgac +fkiqatyttlnuhdho +tlhnyuzdocvfdihq +ngehtjmycevnybga +obxodzcdgtrycgry +stkyrvdfbwovawmk +bdkhqcfrqaxhxloo +gpvumnuoiozipnrk +jbhanddinpqhxeol +hwkzkmbmsrvunzit +rfuomegkxbyamjpw +yzbljuksletipzwm +eafedkagwitzqigl +prenqvsbotqckgwy +spedpbwzphdrfxfz +cmsuqwemhwixkxet +xgdyeqbqfldvaccq +eooxgsrfsbdaolja +kyhqylxooewrhkho +mswieugqpoefmspt +uszoqundysdyeqlc +hkmjdggxefdyykbq +dtuhjnlaliodtlvh +oalbueqbhpxoxvvx +oowxtxsoqdwhzbya +lclajfsrpmtwvzkm +fxmjufpqtpyazeqo +ozlmreegxhfwwwmf +mqzrajxtxbaemrho +nfglecsyqduhakjr +nkxqtmasjjkpkqbp +jjfonbqimybvzeus +vjqkhkhjlmvpwkud +wxxhnvfhetsamzjr +pladhajujzttgmsw +dbycgxeymodsdlhm +qxszeuaahuoxjvwu +adultomodzrljxve +dmhgrbhvvpxyzwdn +slohrlwxerpahtyp +mngbocwyqrsrrxdb +facyrtflgowfvfui +hyvazpjucgghmmxh +twtrvjtncmewcxit +uejkrpvilgccfpfr +psqvolfagjfvqkum +nvzolslmiyavugpp +lpjfutvtwbddtqiu +fkjnfcdorlugmcha +eaplrvdckbcqqvhq +xrcydhkockycburw +iswmarpwcazimqxn +kicnnkjdppitjwrl +vwywaekzxtmeqrsu +dxlgesstmqaxtjta +pmeljgpkykcbujbb +vhpknqzhgnkyeosz +jprqitpjbxkqqzmz +fiprxgsqdfymyzdl +dzvfwvhfjqqsifga +aeakhfalplltmgui +frqrchzvenhozzsu +hsvikeyewfhsdbmy +puedjjhvxayiwgvg +zmsonnclfovjoewb +bnirelcaetdyaumi +szvudroxhcitatvf +sccfweuyadvrjpys +yiouqrnjzsdwyhwa +xyjhkqbnfmjjdefz +fjwgemkfvettucvg +aapqpwapzyjnusnr +dytxpkvgmapdamtc +hgocpfoxlheqpumw +twzuiewwxwadkegg +qdbosnhyqmyollqy +fclbrlkowkzzitod +sgxnrrpwhtkjdjth +xckvsnkvnvupmirv +nioicfeudrjzgoas +lcemtyohztpurwtf +oyjxhhbswvzekiqn +idkblbyjrohxybob +rthvloudwmktwlwh +oyzhmirzrnoytaty +ysdfhuyenpktwtks +wxfisawdtbpsmwli +vgmypwlezbmzeduk +rpepcfpelvhzzxzj +zxbovsmixfvmamnj +cpkabmaahbnlrhiz +jvomcbqeoqrmynjj +iqdeisnegnkrkdws +ilhemlrtxdsdnirr +fjimtscrwbfuwmpo +lmfiylebtzwtztmx +ddouhysvomrkcpgu +xtjwvzdhgnwwauwi +cntzuwcumbsebwyy +hieqvdlvnxkygeda +hushfszxskjdrjxi +xvdfzqblccfoxvyq +nldnrtieteunyxnb +vszpidfocenlhzqb +ofcuvtwhortxesoq +bwniqemqwxlejcfq +wkqiwdjnytjnomps +rbadoommlmrictte +nsmxhpothlulxivt +bvzbfcvenskqxejr +sdqeczmzpqqtqabq +bjveyzniaaliatkw +zxsqlntyjajjxytk +jkoxlerbtidsuepg +ewtlibdkeqwgxnqt +lmrshemwxrdwzrgc +nekcdyxmftlymfir +edaqvmulzkskzsfy +znmvqaupykjmyebx +ximtebuxwhqpzubd +rrlstppkknqyxlho +uyibwcitxixjfwcr +chrvoierkimesqmm +dltxmwhheldvxwqe +xfuthxjuuizanfjy +vtiwavmxwonpkpug +phchnujfnxewglht +owvmetdjcynohxtw +cbtujdrumixxatry +iirzildsfxipfipe +sqxcscqyofohotcy +sbubnekndkvovuqg +jzhsqqxqdrtibtcd +mscwasyvxkhlvwbn +bpafxtagbuxivbwz +uhvueesygaxrqffw +trrxlibhtmzuwkkl +yktkmkokmfslgkml +gfzzzdptaktytnqg +pgqmaiwzhplnbyhg +qjiptlkwfshunsfb +lewvlpescsyunxck +tywsfatykshogjas +qtrnwjjgxdektjgi +arypcritpwijczkn +jwxvngigbhfpiubf +upsjdctitlbqlnhf +lvpjlrpnmdjiscrq +jvzchdrsnkgpgsti +wuoesbwunpseyqzu +xuqspvoshgxmrnrb +icdawnmfnpnmyzof +hwcwtibgpvctznuo +bzdjrniddyamfloq +hffkxtzuazageruv +deixfxjvzbitalnc +zihsohukiqrgsnvw +nwoondfnlgowavkg +qnuulsywgnoillgn +koozejhfjyzuhviy +oetcoipohymhpump +cizwpfczfoodwuly +jghlinczhtaxifau +svjejifbidnvvdvy +rxmbsnaqhzcnbfcl +vveubmiecvdtrket +sbihpvrcnzjtgfep +iqbuljuxkwrlebvw +ptrhvxrpezqvmmvv +duwzugnhktpiybjw +lijafjnujfeflkva +coylvegferuuyfop +fowsjrgammrqkkof +pgmcruaioccmbrbz +osejwflxagwqtjoi +otqflckqgxzvtper +slwyntdcrncktoka +hzcdzsppcfkrblqg +jksdmmvtzkqaompg +galwwwgugetdohkg +zbghtjvuikmfjuef +dmqwcamjtlcofqib +zbczldlfdzemxeys +mdlqoklybhppdkwe +tuyajhkexrrrvnlb +ylfolaubymxmkowo +nnsyrfnoyrxswzxn +zkhunhhhigbsslfk +spbokzdfkbmflanz +zmzxvrwdhiegfely +imywhfczvmgahxwl +fnvabvxeiqvsarqq +yschramprctnputs +ubyjrgdzsvxzvouj +qnvdhpptympctfer +smipxcntyhjpowug +ouhjibgcmotegljy +zpflubaijjqqsptz +fgysnxrnfnxprdmf +pbpznrexzxomzfvj +thhzjresjpmnwtdv +sbmokolkhvbfqmua +sxxpdohxlezmqhhx +pevvsyqgoirixtqh +wdxrornmhqsbfznb +zjqziqbctxkshqcn +nbqcwpzfwfaahylk +bxbvkonpcxprxqjf +xplbpqcnwzwqxheb +prsakggmnjibrpoy +xoguxbpnrvyqarjl +ilrgryrmgwjvpzjy +efwrmokaoigjtrij +yhcncebopycjzuli +gwcmzbzaissohjgn +lggmemwbbjuijtcf +fkqedbfrluvkrwwl +jcbppekecevkwpuk +onvolrckkxeyzfjt +zzousprgrmllxboy +cajthmamvxuesujl +rmiozfsikufkntpg +lvekypkwjbpddkcv +dwaqzfnzcnabersa +pcdsskjopcqwhyis +uabepbrrnxfbpyvx +yxlgdomczciiunrk +ccerskfzctqxvrkz +edvmkntljlncwhax +xtcbwecdwygrvowo +axqgqjqkqwrgcqot +tyjrynolpzqwnjgj +thrtmlegdjsuofga +mpgoeqkzzqqugait +emuslxgoefdjyivl +klehpcehdznpssfb +xfgvugyrdxolixkc +acenyrbdwxywmwst +yqgperajsfsamgan +dbjxlnumrmhipquw +hsnhirmswcenewxm +qehqkbhmgucjjpwo +gprjdglsbtsfzqcw +wvqkyrkoratfmvfi +myhzlerupqbduqsl +couyazesiuhwwhht +scxzehubxhkfejrr +gqlitwfriqkmzqdd +pxtbmqelssoagxko +dzhklewjqzmrfzsw +yxgeypduywntnbji +kwzbgzhkzbgedlfh +vukmuyfstgmscuab +vcmaybfvdgwnasgt +qmybkqqdhjigzmum +cbnuicuncvczyalu +qdgpsdpdlgjasjqr +kdzxqqheurupejjo +mcatrxfchbqnxelm +badunwkeggdkcgco +ntaeanvcylpoqmxi +ghnyfytpzgvuokjn +ozepydixmjijdmts +qefcfwzdhwmcyfvp +ycyktmpaqgaxqsxt +edpizkxnsxeeebfl +uwciveajsxxwoqyr +rbvjkljpxtglqjsh +nbplrskduutrptfk +vewrbadvkseuloec +upaotnjxquomoflx +qfwxkinrousqywdd +mqzxvvskslbxvyjt +oxicszyiqifoyugx +bkitxwzjpabvhraj +ydrbyjecggynjpir +hezyteaublxxpamq +hxkuektnoovsehnd +cwtbbavnhlpiknza +qrwvkhbyasgfxwol +qryjbohkprfazczc +wjksnogpxracrbud +znmsxbhliqxhvesr +gkippedrjzmnnwkp +pklylwsnsyyxwcwg +osdpwbxoegwaiemr +kpslrrrljgtjiqka +vuqkloqucpyzfxgk +bvtdsisgvkuzghyl +qlcayluuyvlhdfyy +kbimqwnzanlygaya +nvoeanlcfhczijed +kqvcijcuobtdwvou +pmhdpcmxnprixitl +yueilssewzabzmij +zqxhafrvjyeyznyg +mhdounmxkvnnsekx +hnacyglnzicxjakg +iaxfdqibnrcjdlyl +iypoelspioegrwix +uiqouxzmlnjxnbqt +kslgjfmofraorvjo +bgvotsdqcdlpkynk +huwcgxhvrrbvmmth +vpqyfnkqqjacpffw +hpjgdfovgmrzvrcl +vbntbhbvdeszihzj +nrbyyuviwyildzuw +wckeoadqzsdnsbox +xgsobwuseofxsxox +anvhsxdshndembsd +iygmhbegrwqbqerg +ylrsnwtmdsrgsvlh +zvvejnrarsavahvc +yncxhmmdtxxeafby +kekgiglblctktnes +uoqgymsrlrwdruzc +saaoymtmnykusicw +bqvcworpqimwglcp +zbpgtheydoyzipjv +pkykzslwsjbhcvcj +jhwxxneyuuidrzvl +pafeyajcrlehmant +klszcvtmcdeyfsmj +ledsltggvrbvlefn +hubpbvxknepammep +gthxhaapfpgtilal +jtfhbozlometwztj +jrhshycyenurbpwb +fyaxbawrsievljqv +lgfcgbenlqxqcxsd +dhedabbwbdbpfmxp +mxzgwhaqobyvckcm +qboxojoykxvwexav +jcpzfjnmvguwjnum +ohpsxnspfwxkkuqe +nyekrqjlizztwjqp +thuynotacpxjzroj +wymbolrlwosnbxqx +iyaqihnqvewxdtjm +hdvdbtvfpdrejenu +gtjscincktlwwkkf +wtebigbaythklkbd From 37b5adf4d695ef312b27e815f59404b24002a28b Mon Sep 17 00:00:00 2001 From: rick <rick@gnous.eu> Date: Wed, 17 Mar 2021 22:07:47 +0100 Subject: [PATCH 07/12] =?UTF-8?q?Ajout=20commandes=20pour=20les=20num?= =?UTF-8?q?=C3=A9ros=20de=20lignes=20en=20COBOL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 43 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 70f3a46..c312761 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # AoC 2015 + J’ai décidé de faire l’édition de 2015 de l’Advent of Code en utilisant un langage différent pour chaque jour. J’essaie d’utiliser au mieux le langage (par exemple, Java est orienté objet). Vous trouverez ci-dessous un tableau résumant rapidement ce dont vous avez besoin pour lancer chaque jour et plus bas encore des notes plus précises pour les différents jours. ## TLDR @@ -75,14 +76,30 @@ On retourne dans le passé ici avec le **Cobol**. J’ai utilisé le compilateur sudo xbps-install gnucobol gmp-devel # sur Void # pour compiler et exécuter -cobc -x jour5-prem.cob -./jour5-prem +cobc -x jour5.cob +./jour5 ``` -Il reste des messages de débugging. Si vous souhaitez les voir, il suffit de rajouter l’option `-fdebugging-line` au compilateur. +Il reste des messages de débugging. Si vous souhaitez les voir, il suffit de rajouter l’option `-fdebugging-line` au compilateur. **Les messages ont été supprimés.** J’ai appris à coder en COBOL très rapidement pour ce jour. Je me suis appuyé sur [le cours de Wikiversite](https://fr.wikiversity.org/wiki/COBOL) pour les bases et aussi de [la documentation officielle GNUCOBOL](https://devdocs.io/gnu_cobol/). +En tant que développeur, je suis feignant. Voici un mini script bash pour générer les colonnes de lignes se trouvant dans le fichier : + +```bash +nbLine=$(wc -l jour5.cob | cut -d\ -f1) +for i in $(seq -f "%06g" $nbLines); +do + sed -Ei '0,/^\s{1,6}/s//'$i'/' jour5.cob +done +``` + +Si vous souhaitez éditer le fichier, il est plus pratique de le faire sans ces nombres. Voici la commande permettant de les retirer : + +```bash +sed -Ei 's/^[0-9]{6}/ /g' jour5.cob +``` + ## Jour 6 ## Jour 7 ## Jour 8 @@ -113,7 +130,7 @@ Liste des langages utilisés * Shell * Perl -* LOLCODE / HolyC +* HolyC * C++ * C# * Pascal @@ -121,13 +138,27 @@ Liste des langages utilisés * Go * Rust * Groovy -* Haskell * JS * PHP * Pony * Ruby * Lua * Pawn -* PureBasic * Squirrel * Scala + +## Langages non utilisées + +Liste des langages devant être utiliser mais qui ne l’ont pas été. J’essai d’apporter des explications au pourquoi. + +### LOLCODE + +Le LOLCODE ne permet pas la manipulation de chaines de caractères ou de manière peu flexible : [post Stackoverflow](https://stackoverflow.com/questions/29762129/lolcode-string-parsing). + +### Haskell + +Le Haskell est un langage de logique, son foctionnement et surtout sa structure est différente des autres programmes. + +### PureBasic + +Compilateur propriétaire. From d9f9eddca6248a742239c90af203778f45c09045 Mon Sep 17 00:00:00 2001 From: rick <rick@gnous.eu> Date: Wed, 17 Mar 2021 22:21:19 +0100 Subject: [PATCH 08/12] Modification REGEX --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index c312761..e5c76af 100644 --- a/README.md +++ b/README.md @@ -87,16 +87,17 @@ J’ai appris à coder en COBOL très rapidement pour ce jour. Je me suis appuy En tant que développeur, je suis feignant. Voici un mini script bash pour générer les colonnes de lignes se trouvant dans le fichier : ```bash -nbLine=$(wc -l jour5.cob | cut -d\ -f1) -for i in $(seq -f "%06g" $nbLines); -do - sed -Ei '0,/^\s{1,6}/s//'$i'/' jour5.cob +nb=$(wc -l jour5.cob | cut -d\ -f1) +for i in $(seq -f "%06g" $nb) +do + sed -Ei '0,/(^\s{6}|^\s*$)/s//'$i'/' jour5.cob done ``` Si vous souhaitez éditer le fichier, il est plus pratique de le faire sans ces nombres. Voici la commande permettant de les retirer : ```bash +sed -Ei 's/^[0-9]{6}$//g' jour5.cob # pour éviter les espaces inutiles sed -Ei 's/^[0-9]{6}/ /g' jour5.cob ``` From ed7231d96a59c36ea41503174905bb7233034b28 Mon Sep 17 00:00:00 2001 From: rick <rick@gnous.eu> Date: Wed, 17 Mar 2021 22:24:31 +0100 Subject: [PATCH 09/12] Suppression messages de debug --- jour05/jour5.cob | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/jour05/jour5.cob b/jour05/jour5.cob index aaa90fc..42f7a82 100644 --- a/jour05/jour5.cob +++ b/jour05/jour5.cob @@ -32,7 +32,7 @@ BY CONTENT MY-STR, BY REFERENCE NB-NICE-PREM BY REFERENCE NB-NICE-DEUX - * On passe par référence NB-NICE pour l’incrémenter + * On passe par référence NB-NICE pour les incrémenter END-CALL END-READ END-PERFORM. @@ -112,35 +112,25 @@ parse. MOVE 0 TO NB-VOY. MOVE 'N' TO DOUBLE. - d DISPLAY STR. - d DISPLAY "=================". PERFORM VARYING I FROM 1 BY 1 UNTIL END-P MOVE STR(I:1) TO CHAR - d DISPLAY "ACT. CHAR : " CHAR - d DISPLAY "ACT. PRED : " PRED - d DISPLAY "I : " I - IF VOY - THEN ADD 1 TO NB-VOY END-ADD + IF VOY THEN + ADD 1 TO NB-VOY END-ADD END-IF IF I >= 2 THEN STRING PRED CHAR INTO TMP END-STRING - d DISPLAY "TMP STR : " TMP - IF BAD - THEN - EXIT PERFORM + IF BAD THEN + EXIT PERFORM END-IF - IF PRED = CHAR - THEN - MOVE 'Y' TO DOUBLE + IF PRED = CHAR THEN + MOVE 'Y' TO DOUBLE END-IF - d DISPLAY "DOUBLE : " DOUBLE END-IF MOVE CHAR TO PRED END-PERFORM. - IF NOT BAD AND NB-VOY >= 3 AND DOUBLE = 'Y' - THEN - ADD 1 TO NB END-ADD + IF NOT BAD AND NB-VOY >= 3 AND DOUBLE = 'Y' THEN + ADD 1 TO NB END-ADD END-IF. EXIT PROGRAM. END PROGRAM parse-prem. @@ -215,7 +205,6 @@ ADD 1 TO NB END-ADD END-IF. EXIT PROGRAM. - END PROGRAM parse-deux. END PROGRAM hub. From 0f6b2728534e85f869660b0e7d25d9c8b03acc5a Mon Sep 17 00:00:00 2001 From: rick <rick@gnous.eu> Date: Wed, 17 Mar 2021 22:28:17 +0100 Subject: [PATCH 10/12] Suppression espaces inutiles --- jour05/jour5.cob | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/jour05/jour5.cob b/jour05/jour5.cob index 42f7a82..f2312b3 100644 --- a/jour05/jour5.cob +++ b/jour05/jour5.cob @@ -1,18 +1,18 @@ IDENTIFICATION DIVISION. PROGRAM-ID. jour-cinq-prem-part. - + ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FILE1 ASSIGN TO "input" ORGANIZATION LINE SEQUENTIAL. - + DATA DIVISION. FILE SECTION. FD FILE1. 01 INPUT-FILE. 02 STR PIC A(17). - + WORKING-STORAGE SECTION. 01 MY-FILE. 02 MY-STR PIC A(17). @@ -20,7 +20,7 @@ 88 EOF VALUE 'Y'. 77 NB-NICE-PREM PIC 9(4) VALUE 0. 77 NB-NICE-DEUX PIC 9(4) VALUE 0. - + PROCEDURE DIVISION. main. OPEN INPUT FILE1. @@ -41,7 +41,7 @@ DISPLAY "Dans la partie 2 : " NB-NICE-DEUX END-DISPLAY. CLOSE FILE1. STOP RUN. - + ***************************************************************** * hub : exécute les 2 fonctions pour les 2 parties * STR : la chaine à passer en paramètre aux deux fonctions @@ -49,10 +49,10 @@ * NB-DEUX : (REFERENCE) nombre bonnes chaines partie 2 * Ces 2 variables seront incrémentées ***************************************************************** - + IDENTIFICATION DIVISION. PROGRAM-ID. hub. - + DATA DIVISION. LINKAGE SECTION. 77 STR PIC A(17). @@ -81,7 +81,7 @@ IDENTIFICATION DIVISION. PROGRAM-ID. parse-prem. - + DATA DIVISION. WORKING-STORAGE SECTION. 77 CHAR PIC A. @@ -103,11 +103,11 @@ * * LINKAGE SECTION contient les paramètres du programme parse-str ***************************************************************** - + LINKAGE SECTION. 77 STR PIC A(17). 77 NB PIC 9(4). - + PROCEDURE DIVISION USING STR, NB. parse. MOVE 0 TO NB-VOY. @@ -144,7 +144,7 @@ IDENTIFICATION DIVISION. PROGRAM-ID. parse-deux. - + DATA DIVISION. WORKING-STORAGE SECTION. 77 CHAR PIC A. @@ -159,7 +159,7 @@ 77 DOUBLE-CHAR-NEXT PIC AA. 77 BETWEEN PIC X. 77 DOUBLE PIC X. - + ****************************************************************** * PRED le caractère précédent * MYNEW le caractère suivant @@ -168,11 +168,11 @@ * DOUBLE est mit à Y lorsque 2 pairs sont trouvées * BETWEEN est mit à Y lorsque 2 memes lettres en encadrent une ****************************************************************** - + LINKAGE SECTION. 77 STR PIC A(17). 77 NB PIC 9(4). - + PROCEDURE DIVISION USING STR, NB. deuxieme-part. MOVE 'N' TO BETWEEN. From 883b2a19e6713d86a8a59f98326fd03b44aacdd6 Mon Sep 17 00:00:00 2001 From: rick <rick@gnous.eu> Date: Wed, 17 Mar 2021 22:30:08 +0100 Subject: [PATCH 11/12] changement de nom programme principal --- jour05/jour5.cob | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jour05/jour5.cob b/jour05/jour5.cob index f2312b3..c9da89e 100644 --- a/jour05/jour5.cob +++ b/jour05/jour5.cob @@ -1,5 +1,5 @@ IDENTIFICATION DIVISION. - PROGRAM-ID. jour-cinq-prem-part. + PROGRAM-ID. jour-cinq. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. @@ -208,4 +208,4 @@ END PROGRAM parse-deux. END PROGRAM hub. - END PROGRAM jour-cinq-prem-part. + END PROGRAM jour-cinq. From ddf165db9576a325bbaf7f9169c456bfa8891395 Mon Sep 17 00:00:00 2001 From: rick <rick@gnous.eu> Date: Wed, 17 Mar 2021 22:30:41 +0100 Subject: [PATCH 12/12] =?UTF-8?q?Ajout=20des=20num=C3=A9ros=20de=20lignes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jour05/jour5.cob | 422 +++++++++++++++++++++++------------------------ 1 file changed, 211 insertions(+), 211 deletions(-) diff --git a/jour05/jour5.cob b/jour05/jour5.cob index c9da89e..605c671 100644 --- a/jour05/jour5.cob +++ b/jour05/jour5.cob @@ -1,211 +1,211 @@ - IDENTIFICATION DIVISION. - PROGRAM-ID. jour-cinq. - - ENVIRONMENT DIVISION. - INPUT-OUTPUT SECTION. - FILE-CONTROL. - SELECT FILE1 ASSIGN TO "input" - ORGANIZATION LINE SEQUENTIAL. - - DATA DIVISION. - FILE SECTION. - FD FILE1. - 01 INPUT-FILE. - 02 STR PIC A(17). - - WORKING-STORAGE SECTION. - 01 MY-FILE. - 02 MY-STR PIC A(17). - 01 FILE-STATUS PIC X VALUE 'N'. - 88 EOF VALUE 'Y'. - 77 NB-NICE-PREM PIC 9(4) VALUE 0. - 77 NB-NICE-DEUX PIC 9(4) VALUE 0. - - PROCEDURE DIVISION. - main. - OPEN INPUT FILE1. - PERFORM UNTIL EOF - READ FILE1 RECORD INTO MY-FILE - * Lorsqu’on arrive à la fin du fichier, on met Y pour le signaler - AT END MOVE 'Y' TO FILE-STATUS - NOT AT END CALL "hub" USING - BY CONTENT MY-STR, - BY REFERENCE NB-NICE-PREM - BY REFERENCE NB-NICE-DEUX - * On passe par référence NB-NICE pour les incrémenter - END-CALL - END-READ - END-PERFORM. - DISPLAY "Nombres de bonnes chaines :" END-DISPLAY. - DISPLAY "Dans la partie 1 : " NB-NICE-PREM END-DISPLAY. - DISPLAY "Dans la partie 2 : " NB-NICE-DEUX END-DISPLAY. - CLOSE FILE1. - STOP RUN. - - ***************************************************************** - * hub : exécute les 2 fonctions pour les 2 parties - * STR : la chaine à passer en paramètre aux deux fonctions - * NB-PREM : (REFERENCE) nombre bonnes chaines partie 1 - * NB-DEUX : (REFERENCE) nombre bonnes chaines partie 2 - * Ces 2 variables seront incrémentées - ***************************************************************** - - IDENTIFICATION DIVISION. - PROGRAM-ID. hub. - - DATA DIVISION. - LINKAGE SECTION. - 77 STR PIC A(17). - 77 NB-PREM PIC 9(4). - 77 NB-DEUX PIC 9(4). - - PROCEDURE DIVISION USING STR, NB-PREM, NB-DEUX. - route. - CALL "parse-prem" USING - BY CONTENT STR, - BY REFERENCE NB-PREM - END-CALL. - - CALL "parse-deux" USING - BY CONTENT STR, - BY REFERENCE NB-DEUX - END-CALL. - EXIT PROGRAM. - - ****************************************************************** - * parse-prem : parse la chaine de caractères pour voir le nombre de - * bonnes chaines pour la partie 1. Prend en paramètres 2 arguments : - * STR : chaine de caractères de taille 17 à analyser. - * NB : (REFERENCE) le nombre de bonnes chaines. Sera incrémenter. - ***************************************************************** - - IDENTIFICATION DIVISION. - PROGRAM-ID. parse-prem. - - DATA DIVISION. - WORKING-STORAGE SECTION. - 77 CHAR PIC A. - 88 VOY VALUE 'a','e','i','o','u'. - 77 I PIC 99. - 88 END-P VALUE 17. - 77 NB-VOY PIC 99. - 77 PRED PIC A. - 77 TMP PIC AA. - 88 BAD VALUE 'ab', 'cd', 'pq', 'xy'. - 77 DOUBLE PIC X. - - ***************************************************************** - * NB-VOY contient le nombre de voyelles - * PRED le caractère précédent - * TMP forme la chaine contenant le caractère précédent et courant - * BAD les mauvaises formes de chaines - * DOUBLE est mit à Y lorsque CHAR = PRED - * - * LINKAGE SECTION contient les paramètres du programme parse-str - ***************************************************************** - - LINKAGE SECTION. - 77 STR PIC A(17). - 77 NB PIC 9(4). - - PROCEDURE DIVISION USING STR, NB. - parse. - MOVE 0 TO NB-VOY. - MOVE 'N' TO DOUBLE. - PERFORM VARYING I FROM 1 BY 1 UNTIL END-P - MOVE STR(I:1) TO CHAR - IF VOY THEN - ADD 1 TO NB-VOY END-ADD - END-IF - IF I >= 2 - THEN - STRING PRED CHAR INTO TMP END-STRING - IF BAD THEN - EXIT PERFORM - END-IF - IF PRED = CHAR THEN - MOVE 'Y' TO DOUBLE - END-IF - END-IF - MOVE CHAR TO PRED - END-PERFORM. - IF NOT BAD AND NB-VOY >= 3 AND DOUBLE = 'Y' THEN - ADD 1 TO NB END-ADD - END-IF. - EXIT PROGRAM. - END PROGRAM parse-prem. - - ****************************************************************** - * parse-deux : parse la chaine de caractères pour voir le nombre de - * bonnes chaines pour la partie 2. Prend en paramètres 2 arguments : - * STR : chaine de caractères de taille 17 à analyser. - * NB : (REFERENCE) le nombre de bonnes chaines. Sera incrémenter. - ***************************************************************** - - IDENTIFICATION DIVISION. - PROGRAM-ID. parse-deux. - - DATA DIVISION. - WORKING-STORAGE SECTION. - 77 CHAR PIC A. - 77 I PIC 99. - 88 STR-LENGTH VALUE 17. - 77 J PIC 99. - 77 K PIC 99. - 88 DOUBLE-STR-LENGTH VALUE 16. - 77 PRED PIC A. - 77 MYNEW PIC A. - 77 DOUBLE-CHAR PIC AA. - 77 DOUBLE-CHAR-NEXT PIC AA. - 77 BETWEEN PIC X. - 77 DOUBLE PIC X. - - ****************************************************************** - * PRED le caractère précédent - * MYNEW le caractère suivant - * DOUBLE-CHAR la paire à vérifier - * DOUBLE-CHAR-NEXT les paires suivantes - * DOUBLE est mit à Y lorsque 2 pairs sont trouvées - * BETWEEN est mit à Y lorsque 2 memes lettres en encadrent une - ****************************************************************** - - LINKAGE SECTION. - 77 STR PIC A(17). - 77 NB PIC 9(4). - - PROCEDURE DIVISION USING STR, NB. - deuxieme-part. - MOVE 'N' TO BETWEEN. - MOVE 'N' TO DOUBLE. - PERFORM VARYING I FROM 1 BY 1 UNTIL STR-LENGTH - COMPUTE J = I + 1 END-COMPUTE - MOVE STR(I:1) TO CHAR - IF I > 1 AND I < (LENGTH OF STR - 1) THEN - MOVE STR(J:1) TO MYNEW - IF PRED = MYNEW THEN - MOVE 'Y' TO BETWEEN - END-IF - END-IF - - IF I < ((LENGTH OF STR) - 2) AND DOUBLE = 'N' THEN - MOVE STR(I:2) TO DOUBLE-CHAR - ADD 1 TO J END-ADD - PERFORM VARYING K FROM J BY 1 UNTIL DOUBLE-STR-LENGTH - MOVE STR(K:2) TO DOUBLE-CHAR-NEXT - IF DOUBLE-CHAR = DOUBLE-CHAR-NEXT THEN - MOVE 'Y' TO DOUBLE - END-IF - END-PERFORM - END-IF - MOVE CHAR TO PRED - END-PERFORM. - - IF BETWEEN = 'Y' AND DOUBLE = 'Y' - THEN - ADD 1 TO NB END-ADD - END-IF. - EXIT PROGRAM. - END PROGRAM parse-deux. - - END PROGRAM hub. - END PROGRAM jour-cinq. +000001 IDENTIFICATION DIVISION. +000002 PROGRAM-ID. jour-cinq. +000003 +000004 ENVIRONMENT DIVISION. +000005 INPUT-OUTPUT SECTION. +000006 FILE-CONTROL. +000007 SELECT FILE1 ASSIGN TO "input" +000008 ORGANIZATION LINE SEQUENTIAL. +000009 +000010 DATA DIVISION. +000011 FILE SECTION. +000012 FD FILE1. +000013 01 INPUT-FILE. +000014 02 STR PIC A(17). +000015 +000016 WORKING-STORAGE SECTION. +000017 01 MY-FILE. +000018 02 MY-STR PIC A(17). +000019 01 FILE-STATUS PIC X VALUE 'N'. +000020 88 EOF VALUE 'Y'. +000021 77 NB-NICE-PREM PIC 9(4) VALUE 0. +000022 77 NB-NICE-DEUX PIC 9(4) VALUE 0. +000023 +000024 PROCEDURE DIVISION. +000025 main. +000026 OPEN INPUT FILE1. +000027 PERFORM UNTIL EOF +000028 READ FILE1 RECORD INTO MY-FILE +000029* Lorsqu’on arrive à la fin du fichier, on met Y pour le signaler +000030 AT END MOVE 'Y' TO FILE-STATUS +000031 NOT AT END CALL "hub" USING +000032 BY CONTENT MY-STR, +000033 BY REFERENCE NB-NICE-PREM +000034 BY REFERENCE NB-NICE-DEUX +000035* On passe par référence NB-NICE pour les incrémenter +000036 END-CALL +000037 END-READ +000038 END-PERFORM. +000039 DISPLAY "Nombres de bonnes chaines :" END-DISPLAY. +000040 DISPLAY "Dans la partie 1 : " NB-NICE-PREM END-DISPLAY. +000041 DISPLAY "Dans la partie 2 : " NB-NICE-DEUX END-DISPLAY. +000042 CLOSE FILE1. +000043 STOP RUN. +000044 +000045***************************************************************** +000046* hub : exécute les 2 fonctions pour les 2 parties +000047* STR : la chaine à passer en paramètre aux deux fonctions +000048* NB-PREM : (REFERENCE) nombre bonnes chaines partie 1 +000049* NB-DEUX : (REFERENCE) nombre bonnes chaines partie 2 +000050* Ces 2 variables seront incrémentées +000051***************************************************************** +000052 +000053 IDENTIFICATION DIVISION. +000054 PROGRAM-ID. hub. +000055 +000056 DATA DIVISION. +000057 LINKAGE SECTION. +000058 77 STR PIC A(17). +000059 77 NB-PREM PIC 9(4). +000060 77 NB-DEUX PIC 9(4). +000061 +000062 PROCEDURE DIVISION USING STR, NB-PREM, NB-DEUX. +000063 route. +000064 CALL "parse-prem" USING +000065 BY CONTENT STR, +000066 BY REFERENCE NB-PREM +000067 END-CALL. +000068 +000069 CALL "parse-deux" USING +000070 BY CONTENT STR, +000071 BY REFERENCE NB-DEUX +000072 END-CALL. +000073 EXIT PROGRAM. +000074 +000075****************************************************************** +000076* parse-prem : parse la chaine de caractères pour voir le nombre de +000077* bonnes chaines pour la partie 1. Prend en paramètres 2 arguments : +000078* STR : chaine de caractères de taille 17 à analyser. +000079* NB : (REFERENCE) le nombre de bonnes chaines. Sera incrémenter. +000080***************************************************************** +000081 +000082 IDENTIFICATION DIVISION. +000083 PROGRAM-ID. parse-prem. +000084 +000085 DATA DIVISION. +000086 WORKING-STORAGE SECTION. +000087 77 CHAR PIC A. +000088 88 VOY VALUE 'a','e','i','o','u'. +000089 77 I PIC 99. +000090 88 END-P VALUE 17. +000091 77 NB-VOY PIC 99. +000092 77 PRED PIC A. +000093 77 TMP PIC AA. +000094 88 BAD VALUE 'ab', 'cd', 'pq', 'xy'. +000095 77 DOUBLE PIC X. +000096 +000097***************************************************************** +000098* NB-VOY contient le nombre de voyelles +000099* PRED le caractère précédent +000100* TMP forme la chaine contenant le caractère précédent et courant +000101* BAD les mauvaises formes de chaines +000102* DOUBLE est mit à Y lorsque CHAR = PRED +000103* +000104* LINKAGE SECTION contient les paramètres du programme parse-str +000105***************************************************************** +000106 +000107 LINKAGE SECTION. +000108 77 STR PIC A(17). +000109 77 NB PIC 9(4). +000110 +000111 PROCEDURE DIVISION USING STR, NB. +000112 parse. +000113 MOVE 0 TO NB-VOY. +000114 MOVE 'N' TO DOUBLE. +000115 PERFORM VARYING I FROM 1 BY 1 UNTIL END-P +000116 MOVE STR(I:1) TO CHAR +000117 IF VOY THEN +000118 ADD 1 TO NB-VOY END-ADD +000119 END-IF +000120 IF I >= 2 +000121 THEN +000122 STRING PRED CHAR INTO TMP END-STRING +000123 IF BAD THEN +000124 EXIT PERFORM +000125 END-IF +000126 IF PRED = CHAR THEN +000127 MOVE 'Y' TO DOUBLE +000128 END-IF +000129 END-IF +000130 MOVE CHAR TO PRED +000131 END-PERFORM. +000132 IF NOT BAD AND NB-VOY >= 3 AND DOUBLE = 'Y' THEN +000133 ADD 1 TO NB END-ADD +000134 END-IF. +000135 EXIT PROGRAM. +000136 END PROGRAM parse-prem. +000137 +000138****************************************************************** +000139* parse-deux : parse la chaine de caractères pour voir le nombre de +000140* bonnes chaines pour la partie 2. Prend en paramètres 2 arguments : +000141* STR : chaine de caractères de taille 17 à analyser. +000142* NB : (REFERENCE) le nombre de bonnes chaines. Sera incrémenter. +000143***************************************************************** +000144 +000145 IDENTIFICATION DIVISION. +000146 PROGRAM-ID. parse-deux. +000147 +000148 DATA DIVISION. +000149 WORKING-STORAGE SECTION. +000150 77 CHAR PIC A. +000151 77 I PIC 99. +000152 88 STR-LENGTH VALUE 17. +000153 77 J PIC 99. +000154 77 K PIC 99. +000155 88 DOUBLE-STR-LENGTH VALUE 16. +000156 77 PRED PIC A. +000157 77 MYNEW PIC A. +000158 77 DOUBLE-CHAR PIC AA. +000159 77 DOUBLE-CHAR-NEXT PIC AA. +000160 77 BETWEEN PIC X. +000161 77 DOUBLE PIC X. +000162 +000163****************************************************************** +000164* PRED le caractère précédent +000165* MYNEW le caractère suivant +000166* DOUBLE-CHAR la paire à vérifier +000167* DOUBLE-CHAR-NEXT les paires suivantes +000168* DOUBLE est mit à Y lorsque 2 pairs sont trouvées +000169* BETWEEN est mit à Y lorsque 2 memes lettres en encadrent une +000170****************************************************************** +000171 +000172 LINKAGE SECTION. +000173 77 STR PIC A(17). +000174 77 NB PIC 9(4). +000175 +000176 PROCEDURE DIVISION USING STR, NB. +000177 deuxieme-part. +000178 MOVE 'N' TO BETWEEN. +000179 MOVE 'N' TO DOUBLE. +000180 PERFORM VARYING I FROM 1 BY 1 UNTIL STR-LENGTH +000181 COMPUTE J = I + 1 END-COMPUTE +000182 MOVE STR(I:1) TO CHAR +000183 IF I > 1 AND I < (LENGTH OF STR - 1) THEN +000184 MOVE STR(J:1) TO MYNEW +000185 IF PRED = MYNEW THEN +000186 MOVE 'Y' TO BETWEEN +000187 END-IF +000188 END-IF +000189 +000190 IF I < ((LENGTH OF STR) - 2) AND DOUBLE = 'N' THEN +000191 MOVE STR(I:2) TO DOUBLE-CHAR +000192 ADD 1 TO J END-ADD +000193 PERFORM VARYING K FROM J BY 1 UNTIL DOUBLE-STR-LENGTH +000194 MOVE STR(K:2) TO DOUBLE-CHAR-NEXT +000195 IF DOUBLE-CHAR = DOUBLE-CHAR-NEXT THEN +000196 MOVE 'Y' TO DOUBLE +000197 END-IF +000198 END-PERFORM +000199 END-IF +000200 MOVE CHAR TO PRED +000201 END-PERFORM. +000202 +000203 IF BETWEEN = 'Y' AND DOUBLE = 'Y' +000204 THEN +000205 ADD 1 TO NB END-ADD +000206 END-IF. +000207 EXIT PROGRAM. +000208 END PROGRAM parse-deux. +000209 +000210 END PROGRAM hub. +000211 END PROGRAM jour-cinq.