removed obsolete code. cosmetic changes day16/1 bash.
This commit is contained in:
@@ -1,99 +0,0 @@
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. AoC-2020-day-1-part-2.
|
||||
*> Inspired by https://github.com/GaloisGirl/Coding
|
||||
*> Compilation: cobc -F -fmfcomment -std=rm -x ex2-cob.cob
|
||||
*> Utilisation: ./ex2-cob < INPUT.txt
|
||||
AUTHOR. Bruno Raoult.
|
||||
|
||||
ENVIRONMENT DIVISION.
|
||||
INPUT-OUTPUT SECTION.
|
||||
FILE-CONTROL.
|
||||
SELECT INPUTFILE ASSIGN TO KEYBOARD
|
||||
ORGANIZATION IS LINE SEQUENTIAL.
|
||||
|
||||
DATA DIVISION.
|
||||
FILE SECTION.
|
||||
FD INPUTFILE.
|
||||
01 INPUTRECORD PIC 9(4).
|
||||
|
||||
WORKING-STORAGE SECTION.
|
||||
01 FILE-STATUS PIC 9 VALUE 0.
|
||||
01 LEN PIC 9(3) VALUE 0.
|
||||
01 ARRAY.
|
||||
02 ARR OCCURS 0 TO 1024 DEPENDING ON LEN.
|
||||
05 VAL PIC 9(5).
|
||||
01 S PIC 9(4).
|
||||
01 P PIC 9(12).
|
||||
01 FMT PIC Z(12)9.
|
||||
|
||||
LOCAL-STORAGE SECTION.
|
||||
01 I USAGE UNSIGNED-INT VALUE 1.
|
||||
01 J USAGE UNSIGNED-INT VALUE 1.
|
||||
01 K USAGE UNSIGNED-INT VALUE 1.
|
||||
01 TMP USAGE UNSIGNED-INT VALUE 1.
|
||||
|
||||
PROCEDURE DIVISION.
|
||||
01-MAIN.
|
||||
OPEN INPUT INPUTFILE.
|
||||
PERFORM 02-READ UNTIL FILE-STATUS = 1.
|
||||
CLOSE INPUTFILE.
|
||||
*> PERFORM 06-PRINT.
|
||||
MOVE 1 TO K
|
||||
*> PERFORM 05-BUBBLE
|
||||
SORT ARR ASCENDING KEY VAL
|
||||
*> DISPLAY "=========================".
|
||||
*> PERFORM 06-PRINT.
|
||||
PERFORM 04-LOOP
|
||||
STOP RUN.
|
||||
02-READ.
|
||||
READ INPUTFILE
|
||||
AT END MOVE 1 TO FILE-STATUS
|
||||
NOT AT END PERFORM 03-WRITE-TO-TABLE
|
||||
END-READ.
|
||||
|
||||
03-WRITE-TO-TABLE.
|
||||
ADD 1 TO LEN.
|
||||
UNSTRING INPUTRECORD INTO VAL(LEN).
|
||||
*> Wrong: "234" becomes 2340 instead of 0234
|
||||
*> COMPUTE VAL(LEN) = INPUTRECORD.
|
||||
*> DISPLAY VAL(LEN) " " LEN.
|
||||
04-LOOP.
|
||||
PERFORM VARYING I FROM 1 BY 1 UNTIL I > LEN
|
||||
ADD I 1 GIVING TMP
|
||||
PERFORM VARYING J FROM TMP BY 1 UNTIL J > LEN
|
||||
ADD J 1 GIVING TMP
|
||||
PERFORM VARYING K FROM TMP BY 1 UNTIL K > LEN
|
||||
ADD VAL(I) VAL(J) VAL(K) GIVING S
|
||||
*> DISPLAY I J K
|
||||
IF S = 2020 THEN
|
||||
MULTIPLY VAL(I) BY VAL(J) GIVING P
|
||||
MULTIPLY P BY VAL(K) GIVING P
|
||||
MOVE P TO FMT
|
||||
DISPLAY FMT
|
||||
EXIT PERFORM
|
||||
ELSE
|
||||
IF S > 2020 THEN
|
||||
EXIT PERFORM
|
||||
END-IF
|
||||
END-IF
|
||||
END-PERFORM
|
||||
END-PERFORM
|
||||
END-PERFORM.
|
||||
05-BUBBLE.
|
||||
MOVE 1 TO K
|
||||
PERFORM UNTIL K = 0
|
||||
MOVE 0 TO K
|
||||
PERFORM VARYING I FROM 1 BY 1 UNTIL I > LEN - 1
|
||||
ADD 1 I GIVING J
|
||||
IF VAL(I) > VAL(J)
|
||||
MOVE VAL(I) TO TMP
|
||||
MOVE VAL(J) TO VAL(I)
|
||||
MOVE TMP TO VAL(J)
|
||||
MOVE 1 TO K
|
||||
END-IF
|
||||
END-PERFORM
|
||||
END-PERFORM.
|
||||
06-PRINT.
|
||||
PERFORM VARYING I FROM 1 BY 1 UNTIL I > LEN
|
||||
DISPLAY VAL(I)
|
||||
END-PERFORM.
|
@@ -1,96 +0,0 @@
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. AoC-2020-day-1-part-2.
|
||||
*> Inspired by https://github.com/GaloisGirl/Coding
|
||||
*> Compilation: obc -F -fmfcomment -std=rm -x ex2-cob.cob
|
||||
AUTHOR. Bruno Raoult.
|
||||
|
||||
ENVIRONMENT DIVISION.
|
||||
INPUT-OUTPUT SECTION.
|
||||
FILE-CONTROL.
|
||||
SELECT INPUTFILE ASSIGN TO KEYBOARD
|
||||
ORGANIZATION IS LINE SEQUENTIAL.
|
||||
|
||||
DATA DIVISION.
|
||||
FILE SECTION.
|
||||
FD INPUTFILE.
|
||||
01 INPUTRECORD PIC 9(4).
|
||||
|
||||
WORKING-STORAGE SECTION.
|
||||
01 FILE-STATUS PIC 9 VALUE 0.
|
||||
01 LEN PIC 9(3) VALUE 0.
|
||||
01 ARR.
|
||||
05 VAL PIC 9(5) OCCURS 1024.
|
||||
01 S PIC 9(4).
|
||||
01 P PIC 9(12).
|
||||
01 FMT PIC Z(12)9.
|
||||
|
||||
LOCAL-STORAGE SECTION.
|
||||
01 I USAGE UNSIGNED-INT VALUE 1.
|
||||
01 J USAGE UNSIGNED-INT VALUE 1.
|
||||
01 K USAGE UNSIGNED-INT VALUE 1.
|
||||
01 TMP USAGE UNSIGNED-INT VALUE 1.
|
||||
|
||||
PROCEDURE DIVISION.
|
||||
01-MAIN.
|
||||
OPEN INPUT INPUTFILE.
|
||||
PERFORM 02-READ UNTIL FILE-STATUS = 1.
|
||||
CLOSE INPUTFILE.
|
||||
*> PERFORM 06-PRINT.
|
||||
MOVE 1 TO K
|
||||
PERFORM 05-BUBBLE
|
||||
*> DISPLAY "=========================".
|
||||
*> PERFORM 06-PRINT.
|
||||
PERFORM 04-LOOP.
|
||||
STOP RUN.
|
||||
02-READ.
|
||||
READ INPUTFILE
|
||||
AT END MOVE 1 TO FILE-STATUS
|
||||
NOT AT END PERFORM 03-WRITE-TO-TABLE
|
||||
END-READ.
|
||||
|
||||
03-WRITE-TO-TABLE.
|
||||
ADD 1 TO LEN.
|
||||
MOVE INPUTRECORD TO FMT
|
||||
MOVE FMT TO VAL(LEN)
|
||||
*> UNSTRING INPUTRECORD INTO VAL(LEN).
|
||||
DISPLAY VAL(LEN) " " LEN.
|
||||
04-LOOP.
|
||||
PERFORM VARYING I FROM 1 BY 1 UNTIL I > LEN
|
||||
ADD I 1 GIVING TMP
|
||||
PERFORM VARYING J FROM TMP BY 1 UNTIL J > LEN
|
||||
ADD J 1 GIVING TMP
|
||||
PERFORM VARYING K FROM TMP BY 1 UNTIL K > LEN
|
||||
ADD VAL(I) VAL(J) VAL(K) GIVING S
|
||||
*> DISPLAY I J K
|
||||
IF S = 2020 THEN
|
||||
MULTIPLY VAL(I) BY VAL(J) GIVING P
|
||||
MULTIPLY P BY VAL(K) GIVING P
|
||||
MOVE P TO FMT
|
||||
DISPLAY FMT
|
||||
EXIT PERFORM
|
||||
ELSE
|
||||
IF S > 2020 THEN
|
||||
EXIT PERFORM
|
||||
END-IF
|
||||
END-IF
|
||||
END-PERFORM
|
||||
END-PERFORM
|
||||
END-PERFORM.
|
||||
05-BUBBLE.
|
||||
MOVE 1 TO K
|
||||
PERFORM UNTIL K = 0
|
||||
MOVE 0 TO K
|
||||
PERFORM VARYING I FROM 1 BY 1 UNTIL I > LEN - 1
|
||||
ADD 1 I GIVING J
|
||||
IF VAL(I) > VAL(J)
|
||||
MOVE VAL(I) TO TMP
|
||||
MOVE VAL(J) TO VAL(I)
|
||||
MOVE TMP TO VAL(J)
|
||||
MOVE 1 TO K
|
||||
END-IF
|
||||
END-PERFORM
|
||||
END-PERFORM.
|
||||
06-PRINT.
|
||||
PERFORM VARYING I FROM 1 BY 1 UNTIL I > LEN
|
||||
DISPLAY VAL(I)
|
||||
END-PERFORM.
|
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# ex1.bash: Advent2020 game, day 15/games 1 and 2.
|
||||
# ex1.bash: Advent2020 game, day 16/game 1.
|
||||
|
||||
CMD=${0##*/}
|
||||
#shopt -s extglob
|
||||
@@ -16,11 +16,11 @@ while read -r line; do
|
||||
valid[$i]=1
|
||||
done
|
||||
elif [[ $line =~ (your ticket:|nearby tickets) ]]; then
|
||||
state=state+1
|
||||
((state++))
|
||||
elif [[ $line != "" ]]; then
|
||||
if ((state == 2)); then
|
||||
for i in ${line//,/ }; do
|
||||
[[ ! -v valid[$i] ]] && res=res+i
|
||||
[[ ! -v valid[$i] ]] && ((res++))
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
Reference in New Issue
Block a user