diff options
| author | Abigail <abigail@abigail.be> | 2021-08-14 02:29:05 +0200 |
|---|---|---|
| committer | Abigail <abigail@abigail.be> | 2021-08-14 02:29:05 +0200 |
| commit | 26018e17bb38f61027306864c9b9a63063b7f089 (patch) | |
| tree | f7fa15849019dff77fb17531d25d4e389bbc8424 | |
| parent | 1f8d3b4f7da48be8efcf216eca31ba62f21f372d (diff) | |
| download | perlweeklychallenge-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.md | 1 | ||||
| -rw-r--r-- | challenge-125/abigail/tcl/ch-1.tcl | 45 |
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" + } + } +} |
