diff options
| author | Abigail <abigail@abigail.be> | 2021-11-25 21:25:01 +0100 |
|---|---|---|
| committer | Abigail <abigail@abigail.be> | 2021-11-25 21:26:52 +0100 |
| commit | 58b259534ee762f74e7cbb460c6287a07764a68f (patch) | |
| tree | ff977d40a13b48304e2495c94f3d2022dca4f654 | |
| parent | a6b407536002f1f2d000cec3d5519a6446aa1121 (diff) | |
| download | perlweeklychallenge-club-58b259534ee762f74e7cbb460c6287a07764a68f.tar.gz perlweeklychallenge-club-58b259534ee762f74e7cbb460c6287a07764a68f.tar.bz2 perlweeklychallenge-club-58b259534ee762f74e7cbb460c6287a07764a68f.zip | |
Pascal solution for week 135, part 1
| -rw-r--r-- | challenge-135/abigail/README.md | 1 | ||||
| -rw-r--r-- | challenge-135/abigail/pascal/ch-1.p | 43 |
2 files changed, 44 insertions, 0 deletions
diff --git a/challenge-135/abigail/README.md b/challenge-135/abigail/README.md index c6b1e98bb6..fa5d529ec2 100644 --- a/challenge-135/abigail/README.md +++ b/challenge-135/abigail/README.md @@ -10,6 +10,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) * [R](r/ch-1.r) diff --git a/challenge-135/abigail/pascal/ch-1.p b/challenge-135/abigail/pascal/ch-1.p new file mode 100644 index 0000000000..8f8bf9f507 --- /dev/null +++ b/challenge-135/abigail/pascal/ch-1.p @@ -0,0 +1,43 @@ +Program ch1; + +(* *) +(* See ../README.md *) +(* *) + +(* *) +(* Run as: fpc -och-1.out ch-1.p; ./ch-1.out < input-file *) +(* *) + +uses + RegExpr; + +var + line: String; + re_valid: TRegExpr; + re_sign: TRegExpr; + len: Integer; + +begin + re_valid := TRegExpr . Create ('^[-+]?[0-9]*$'); + re_sign := TRegExpr . Create ('^[-+]'); + while not eof do begin + readln (line); + if not re_valid . Exec (line) then begin + writeln ('not an integer'); + continue; + end; + if re_sign . Exec (line) then begin + Delete (line, 1, 1); + end; + len := length (line); + if len mod 2 = 0 then begin + writeln ('even number of digits'); + continue; + end; + if len < 3 then begin + writeln ('too short'); + continue; + end; + writeln (copy (line, 1 + ((len - 3) div 2), 3)); + end +end. |
