aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbigail <abigail@abigail.be>2021-11-25 21:25:01 +0100
committerAbigail <abigail@abigail.be>2021-11-25 21:26:52 +0100
commit58b259534ee762f74e7cbb460c6287a07764a68f (patch)
treeff977d40a13b48304e2495c94f3d2022dca4f654
parenta6b407536002f1f2d000cec3d5519a6446aa1121 (diff)
downloadperlweeklychallenge-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.md1
-rw-r--r--challenge-135/abigail/pascal/ch-1.p43
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.