aboutsummaryrefslogtreecommitdiff
path: root/challenge-135/abigail/tcl
diff options
context:
space:
mode:
authorAbigail <abigail@abigail.be>2021-10-19 20:02:55 +0200
committerAbigail <abigail@abigail.be>2021-10-19 20:02:55 +0200
commitec0548d9d1f8f277a0cd78d5a626c4efdd42f3ef (patch)
tree45a24d4f75371a676e782f445687ef3a7582b4b3 /challenge-135/abigail/tcl
parent5f51c70957a90c3ea098217e195c8f84dd87d389 (diff)
downloadperlweeklychallenge-club-ec0548d9d1f8f277a0cd78d5a626c4efdd42f3ef.tar.gz
perlweeklychallenge-club-ec0548d9d1f8f277a0cd78d5a626c4efdd42f3ef.tar.bz2
perlweeklychallenge-club-ec0548d9d1f8f277a0cd78d5a626c4efdd42f3ef.zip
Tcl solutions for week 135
Diffstat (limited to 'challenge-135/abigail/tcl')
-rw-r--r--challenge-135/abigail/tcl/ch-1.tcl23
-rw-r--r--challenge-135/abigail/tcl/ch-2.tcl31
2 files changed, 54 insertions, 0 deletions
diff --git a/challenge-135/abigail/tcl/ch-1.tcl b/challenge-135/abigail/tcl/ch-1.tcl
new file mode 100644
index 0000000000..b4024a86a5
--- /dev/null
+++ b/challenge-135/abigail/tcl/ch-1.tcl
@@ -0,0 +1,23 @@
+#
+# See ../README.md
+#
+
+#
+# Run as: tclsh ch-1.tcl < input-file
+#
+
+while {[gets stdin line] >= 0} {
+ if {[regexp {^[-+]?([0-9]+)$} $line -> digits]} {
+ set ll [string length $digits]
+ if {[expr $ll % 2] == 0} {
+ puts "even number of digits"
+ } elseif {[expr $ll < 3]} {
+ puts "too short"
+ } else {
+ puts [string range $digits [expr ($ll - 3) / 2]\
+ [expr ($ll + 2) / 2]]
+ }
+ } else {
+ puts "not an integer"
+ }
+}
diff --git a/challenge-135/abigail/tcl/ch-2.tcl b/challenge-135/abigail/tcl/ch-2.tcl
new file mode 100644
index 0000000000..9df349e33b
--- /dev/null
+++ b/challenge-135/abigail/tcl/ch-2.tcl
@@ -0,0 +1,31 @@
+#
+# See ../README.md
+#
+
+#
+# Run as: tclsh ch-2.tcl < input-file
+#
+
+set w {1 3 1 7 3 9 1}
+
+while {[gets stdin line] >= 0} {
+ if {[regexp {^[0-9BCDFGHJKLMNPQRSTVWXYZ]{7}$} $line]} {
+ set check 0
+ for {set i 0} {$i < [string length $line]} {incr i} {
+ set val [scan [string index $line $i] %c]
+ if {[expr $val <= [scan "9" %c]]} {
+ set val [expr $val - [scan "0" %c]]
+ } else {
+ set val [expr $val - [scan "A" %c] + 10]
+ }
+ set check [expr $check + [lindex $w $i] * $val]
+ }
+ if {[expr $check % 10] == 0} {
+ puts 1
+ } else {
+ puts 0
+ }
+ } else {
+ puts 0
+ }
+}