diff options
| author | Abigail <abigail@abigail.be> | 2021-11-25 22:25:31 +0100 |
|---|---|---|
| committer | Abigail <abigail@abigail.be> | 2021-11-25 22:25:31 +0100 |
| commit | 42e47a01eea6770846b143077a263492cdc6e118 (patch) | |
| tree | 94e4ba231b7dd32fea4eee77b905f80a05e16728 | |
| parent | 58b259534ee762f74e7cbb460c6287a07764a68f (diff) | |
| download | perlweeklychallenge-club-42e47a01eea6770846b143077a263492cdc6e118.tar.gz perlweeklychallenge-club-42e47a01eea6770846b143077a263492cdc6e118.tar.bz2 perlweeklychallenge-club-42e47a01eea6770846b143077a263492cdc6e118.zip | |
Pascal solution for week 135, part 2
| -rw-r--r-- | challenge-135/abigail/README.md | 1 | ||||
| -rw-r--r-- | challenge-135/abigail/pascal/ch-2.p | 56 |
2 files changed, 57 insertions, 0 deletions
diff --git a/challenge-135/abigail/README.md b/challenge-135/abigail/README.md index fa5d529ec2..00e67bfcb0 100644 --- a/challenge-135/abigail/README.md +++ b/challenge-135/abigail/README.md @@ -28,6 +28,7 @@ * [Lua](lua/ch-2.lua) * [Node.js](node/ch-2.js) * [Perl](perl/ch-2.pl) +* [Pascal](pascal/ch-2.p) * [Python](python/ch-2.py) * [R](r/ch-2.r) * [Ruby](ruby/ch-2.rb) diff --git a/challenge-135/abigail/pascal/ch-2.p b/challenge-135/abigail/pascal/ch-2.p new file mode 100644 index 0000000000..a6abd97b4b --- /dev/null +++ b/challenge-135/abigail/pascal/ch-2.p @@ -0,0 +1,56 @@ +Program XXX; + +(* *) +(* See ../README.md *) +(* *) + +(* *) +(* Run as: fpc -och-2.out ch-2.p; ./ch-2.out < input-file *) +(* *) + +uses + RegExpr; + +const + ord_0 = Ord ('0'); + ord_9 = Ord ('9'); + ord_A = Ord ('A'); + w : Array [0 .. 6] of Integer = (1, 3, 1, 7, 3, 9, 1); + +var + sedol: String; + valid: TRegExpr; + check: Integer; + c: Char; + val: Integer; + index: Integer; + +begin + valid := TRegExpr . Create ('^[0-9BCDFGHJKLMNPQRSTVWXYZ]{6}[0-9]$'); + while not eof do begin + readln (sedol); + if not valid . Exec (sedol) then begin + writeln (0); + continue; + end; + check := 0; + index := 0; + for c in sedol do begin + val := Ord (c); + if val <= ord_9 then begin + val := val - ord_0; + end + else begin + val := val - ord_A; + end; + check := check + val * w [index]; + inc (index); + end; + if check mod 10 = 0 then begin + writeln (1); + end + else begin + writeln (0); + end + end +end. |
