diff options
| -rw-r--r-- | challenge-003/abigail/README.md | 1 | ||||
| -rw-r--r-- | challenge-003/abigail/pascal/ch-1.p | 48 | ||||
| -rw-r--r-- | challenge-123/abigail/README.md | 1 | ||||
| -rw-r--r-- | challenge-123/abigail/pascal/ch-1.p | 48 |
4 files changed, 98 insertions, 0 deletions
diff --git a/challenge-003/abigail/README.md b/challenge-003/abigail/README.md index 966649afde..6d798bf875 100644 --- a/challenge-003/abigail/README.md +++ b/challenge-003/abigail/README.md @@ -9,6 +9,7 @@ * [Java](java/ch-1.java) * [Lua](lua/ch-1.lua) * [Node.js](node/ch-1.js) +* [Pascal](pascal/ch-1.p) * [Perl](perl/ch-1.pl) * [Python](python/ch-1.py) * [Ruby](ruby/ch-1.rb) diff --git a/challenge-003/abigail/pascal/ch-1.p b/challenge-003/abigail/pascal/ch-1.p new file mode 100644 index 0000000000..79eec3a1d3 --- /dev/null +++ b/challenge-003/abigail/pascal/ch-1.p @@ -0,0 +1,48 @@ +Program ch1; + +(* *) +(* See https://theweeklychallenge.org/blog/perl-weekly-challenge-003 *) +(* *) + +(* *) +(* 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. diff --git a/challenge-123/abigail/README.md b/challenge-123/abigail/README.md index 4625c6930f..449bc1d0e3 100644 --- a/challenge-123/abigail/README.md +++ b/challenge-123/abigail/README.md @@ -27,6 +27,7 @@ Output: 12 * [Java](java/ch-1.java) * [Lua](lua/ch-1.lua) * [Node.js](node/ch-1.js) +* [Pascal](pascal/ch-1.p) * [Perl](perl/ch-1.pl) * [Python](python/ch-1.py) * [R](r/ch-1.r) 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. |
