aboutsummaryrefslogtreecommitdiff
path: root/challenge-123/abigail/pascal
diff options
context:
space:
mode:
authorAbigail <abigail@abigail.freedom.nl>2022-01-06 18:41:33 +0100
committerAbigail <abigail@abigail.freedom.nl>2022-01-06 18:41:33 +0100
commitb97c7e9a60e75f3a5daedbc80fe7d767305b4d53 (patch)
treeaa839505965d092b63090abbbe9a2a08cabf9563 /challenge-123/abigail/pascal
parentec311b177fa675877c45ed1518dceff5c787d13b (diff)
downloadperlweeklychallenge-club-b97c7e9a60e75f3a5daedbc80fe7d767305b4d53.tar.gz
perlweeklychallenge-club-b97c7e9a60e75f3a5daedbc80fe7d767305b4d53.tar.bz2
perlweeklychallenge-club-b97c7e9a60e75f3a5daedbc80fe7d767305b4d53.zip
Week 3 & Week 123: Pascal solution for part 1
Diffstat (limited to 'challenge-123/abigail/pascal')
-rw-r--r--challenge-123/abigail/pascal/ch-1.p48
1 files changed, 48 insertions, 0 deletions
diff --git a/challenge-123/abigail/pascal/ch-1.p b/challenge-123/abigail/pascal/ch-1.p
new file mode 100644
index 0000000000..f4f7b2515f
--- /dev/null
+++ b/challenge-123/abigail/pascal/ch-1.p
@@ -0,0 +1,48 @@
+Program ch1;
+
+(* *)
+(* See https://theweeklychallenge.org/blog/perl-weekly-challenge-123 *)
+(* *)
+
+(* *)
+(* Run as: fpc -och-1.out ch-1.p; ./ch-1.out < input-file *)
+(* *)
+
+var
+ max, count, next_2, next_3, next_5: integer;
+ min, c2, c3, c5: qword;
+ ugly: array of qword;
+
+begin
+ while not eof do begin
+ readln (max);
+ setlength (ugly, max);
+
+ ugly [0] := 1;
+ count := 0;
+ next_2 := 0;
+ next_3 := 0;
+ next_5 := 0;
+ min := 0;
+
+ while count < max - 1 do begin
+ inc (count);
+
+ c2 := 2 * ugly [next_2];
+ c3 := 3 * ugly [next_3];
+ c5 := 5 * ugly [next_5];
+
+ if (c2 <= c3) and (c2 <= c5) then begin min := c2; end;
+ if (c3 <= c2) and (c3 <= c5) then begin min := c3; end;
+ if (c5 <= c2) and (c5 <= c3) then begin min := c5; end;
+
+ ugly [count] := min;
+
+ if c2 <= ugly [count] then begin inc (next_2); end;
+ if c3 <= ugly [count] then begin inc (next_3); end;
+ if c5 <= ugly [count] then begin inc (next_5); end;
+ end;
+
+ writeln (ugly [count]);
+ end
+end.