Day 3 part 1 in pascal!
This commit is contained in:
parent
b55cc9aa20
commit
e6481079d6
5
2021/3/.gitignore
vendored
Normal file
5
2021/3/.gitignore
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
diag.o
|
||||
diag
|
||||
diag2
|
||||
diag2.o
|
||||
input
|
11
2021/3/Makefile
Normal file
11
2021/3/Makefile
Normal file
@ -0,0 +1,11 @@
|
||||
.PHONY := all build run
|
||||
|
||||
all: build run
|
||||
|
||||
build:
|
||||
fpc -odiag diag.pas
|
||||
fpc -odiag2 diag2.pas
|
||||
|
||||
run:
|
||||
./diag
|
||||
./diag2
|
54
2021/3/diag.pas
Normal file
54
2021/3/diag.pas
Normal file
@ -0,0 +1,54 @@
|
||||
PROGRAM diagnostics;
|
||||
|
||||
TYPE
|
||||
vector = array [0..11] of integer;
|
||||
|
||||
VAR
|
||||
filein : text;
|
||||
mychar : char;
|
||||
column, rows, i, gamma, epsilon : integer;
|
||||
counts : vector;
|
||||
|
||||
BEGIN
|
||||
column := 0;
|
||||
rows := 0;
|
||||
gamma := 0;
|
||||
epsilon := 0;
|
||||
|
||||
for i := 0 to 11 do
|
||||
counts[i] := 0;
|
||||
|
||||
assign(filein, 'input');
|
||||
reset(filein);
|
||||
repeat
|
||||
begin
|
||||
(* Keeping track of the total number of lines in the file *)
|
||||
if(column = 0) then
|
||||
rows := rows + 1;
|
||||
|
||||
read(filein, mychar);
|
||||
|
||||
if(mychar = '1') then
|
||||
counts[column] := counts[column] + 1;
|
||||
|
||||
(* The mod 13 is not mod 12 because the newline
|
||||
characher is also getting looped over. *)
|
||||
column := (column + 1) mod 13;
|
||||
end;
|
||||
until eof(filein);
|
||||
close(filein);
|
||||
|
||||
for i := 0 to 11 do begin
|
||||
gamma := gamma shl 1;
|
||||
epsilon := epsilon shl 1;
|
||||
|
||||
if(counts[i] > rows - counts[i]) then
|
||||
gamma := gamma or 1
|
||||
else
|
||||
epsilon := epsilon or 1;
|
||||
end;
|
||||
|
||||
writeln('gamma: ', gamma, ', epsilon: ', epsilon, ', power consumption: ', gamma * epsilon);
|
||||
END.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user