aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbigail <abigail@abigail.be>2021-08-14 02:29:05 +0200
committerAbigail <abigail@abigail.be>2021-08-14 02:29:05 +0200
commit26018e17bb38f61027306864c9b9a63063b7f089 (patch)
treef7fa15849019dff77fb17531d25d4e389bbc8424
parent1f8d3b4f7da48be8efcf216eca31ba62f21f372d (diff)
downloadperlweeklychallenge-club-26018e17bb38f61027306864c9b9a63063b7f089.tar.gz
perlweeklychallenge-club-26018e17bb38f61027306864c9b9a63063b7f089.tar.bz2
perlweeklychallenge-club-26018e17bb38f61027306864c9b9a63063b7f089.zip
Tcl solution for week 125, part 1
-rw-r--r--challenge-125/abigail/README.md1
-rw-r--r--challenge-125/abigail/tcl/ch-1.tcl45
2 files changed, 46 insertions, 0 deletions
diff --git a/challenge-125/abigail/README.md b/challenge-125/abigail/README.md
index 8fb1acbf4d..677f80fccf 100644
--- a/challenge-125/abigail/README.md
+++ b/challenge-125/abigail/README.md
@@ -40,6 +40,7 @@ Output: -1
* [Python](python/ch-1.py)
* [R](r/ch-1.r)
* [Ruby](ruby/ch-1.rb)
+* [Tcl](tcl/ch-1.tcl)
### Blog
[Perl Weekly Challenge 125: Pythagorean Triples][blog1]
diff --git a/challenge-125/abigail/tcl/ch-1.tcl b/challenge-125/abigail/tcl/ch-1.tcl
new file mode 100644
index 0000000000..172dd391ef
--- /dev/null
+++ b/challenge-125/abigail/tcl/ch-1.tcl
@@ -0,0 +1,45 @@
+#
+# See ../README.md
+#
+
+#
+# Run as: tclsh ch-1.tcl < input-file
+#
+
+proc introot {square} {
+ return [expr int (.4 + sqrt ($square))]
+}
+
+
+
+while {[gets stdin n] >= 0} {
+ if {$n <= 2} {
+ puts "-1"
+ continue
+ }
+ set n_sq [expr $n * $n]
+ set c [expr $n + 1]
+ set c_sq [expr $n_sq + 2 * $n + 1]
+
+ while {2 * $c - 1 <= $n_sq} {
+ set b_sq [expr $c_sq - $n_sq]
+ set b [introot $b_sq]
+
+ if {$b_sq == [expr $b * $b]} {
+ puts "$n $b $c"
+ }
+
+ set c_sq [expr $c_sq + 2 * $c + 1]
+ set c [expr $c + 1]
+ }
+
+ set max_a [expr int ($n / sqrt (2))]
+ for {set a 3} {$a <= $max_a} {incr a} {
+ set b_sq [expr $n_sq - $a * $a]
+ set b [introot $b_sq]
+
+ if {$b_sq == [expr $b * $b]} {
+ puts "$a $b $n"
+ }
+ }
+}