diff options
| author | Abigail <abigail@abigail.be> | 2021-11-27 19:41:46 +0100 |
|---|---|---|
| committer | Abigail <abigail@abigail.be> | 2021-11-27 19:41:46 +0100 |
| commit | b04e6c21440d605f4c4fe18e28bc8c9bb24dc2ce (patch) | |
| tree | b25f033e2f67628206cb5d784e24f47c66edabf6 | |
| parent | 6b37925eeb4cf7c6cc22c1ab72e00d257c1eebb2 (diff) | |
| download | perlweeklychallenge-club-b04e6c21440d605f4c4fe18e28bc8c9bb24dc2ce.tar.gz perlweeklychallenge-club-b04e6c21440d605f4c4fe18e28bc8c9bb24dc2ce.tar.bz2 perlweeklychallenge-club-b04e6c21440d605f4c4fe18e28bc8c9bb24dc2ce.zip | |
Two more solutions for week 132, part 1
| -rw-r--r-- | challenge-132/abigail/README.md | 2 | ||||
| -rw-r--r-- | challenge-132/abigail/go/ch-1.go | 41 | ||||
| -rw-r--r-- | challenge-132/abigail/tcl/ch-1.tcl | 55 |
3 files changed, 98 insertions, 0 deletions
diff --git a/challenge-132/abigail/README.md b/challenge-132/abigail/README.md index 5eef101325..00f4ac117d 100644 --- a/challenge-132/abigail/README.md +++ b/challenge-132/abigail/README.md @@ -5,11 +5,13 @@ * [AWK](awk/ch-1.awk) * [Bash](bash/ch-1.sh) * [C](c/ch-1.c) +* [Go](go/ch-1.go) * [Lua](lua/ch-1.lua) * [Node.js](node/ch-1.js) * [Perl](perl/ch-1.pl) * [Python](python/ch-1.py) * [Ruby](ruby/ch-1.rb) +* [Tcl](tcl/ch-1.tcl) ## Part 2 diff --git a/challenge-132/abigail/go/ch-1.go b/challenge-132/abigail/go/ch-1.go new file mode 100644 index 0000000000..648a8ff8fa --- /dev/null +++ b/challenge-132/abigail/go/ch-1.go @@ -0,0 +1,41 @@ +package main + +// +// See ../README.md +// + +// +// Run as: go run ch-1.go +// + +import ( + "fmt" +) + +func g2j (Y int, M int, D int) int { + return ((1461 * (Y + 4800 + (M - 14) / 12)) / 4 + + (367 * (M - 2 - 12 * ((M - 14) / 12))) / 12 - + (3 * ((Y + 4900 + (M - 14) / 12) / 100)) / 4 + D - 32075) +} + +func j2g (J int) (int, int, int) { + e := 4 * (J + 1401 + (((4 * J + 274277) / 146097) * 3) / 4 - 38) + 3 + D := ((5 * ((e % 1461) / 4) + 2) % 153) / 5 + 1 + M := (((5 * ((e % 1461) / 4) + 2) / 153 + 2) % 12) + 1 + Y := (e / 1461) - 4716 + (12 + 2 - M) / 12 + return Y, M, D +} + +func main () { + julian_today := g2j (2021, 9, 22) + var Y, M, D int + for n, err := fmt . Scanf ("%d/%d/%d", &Y, &M, &D); n == 3 && err == nil + n, err = fmt . Scanf ("%d/%d/%d", &Y, &M, &D) { + julian_then := g2j (Y, M, D) + Y1, M1, D1 := j2g (2 * julian_then - julian_today) + Y2, M2, D2 := j2g (2 * julian_today - julian_then) + fmt . Printf ("%04d/%02d/%02d, %04d/%02d/%02d\n", + Y1, M1, D1, Y2, M2, D2); + + } +} diff --git a/challenge-132/abigail/tcl/ch-1.tcl b/challenge-132/abigail/tcl/ch-1.tcl new file mode 100644 index 0000000000..f2a49a8977 --- /dev/null +++ b/challenge-132/abigail/tcl/ch-1.tcl @@ -0,0 +1,55 @@ +# +# See ../README.md +# + +# +# Run as: tclsh ch-1.tcl < input-file +# + +proc idiv {a b} { + set sign 1 + if {$a < 0} { + set sign [expr $sign * -1] + set a [expr -$a] + } + if {$b < 0} { + set sign [expr $sign * -1] + set b [expr -$b] + } + return [expr $sign * ($a / $b)] +} + +proc g2j {Y M D} { + set M14 [expr $M - 14] + set M12 [idiv $M14 12] + set e1 [idiv [expr 1461 * ($Y + 4800 + $M12)] 4] + set e2 [idiv [expr 367 * ($M - 2 - 12 * $M12)] 12] + set e3 [idiv [expr $Y + 4900 + $M12] 100] + set e4 [idiv [expr 3 * $e3] 4] + return [expr $e1 + $e2 - $e4 + $D - 32075] +} + +proc j2g {J} { + set e [expr 4 * ($J + 1401 + (((4 * $J + 274277) / 146097) * 3) / 4 \ + - 38) + 3] + set D [expr ((5 * (($e % 1461) / 4) + 2) % 153) / 5 + 1] + set M [expr (((5 * (($e % 1461) / 4) + 2) / 153 + 2) % 12) + 1] + set Y [expr ($e / 1461) - 4716 + (12 + 2 - $M) / 12] + return "$Y $M $D" +} + +set julian_today [g2j 2021 9 22] + +while {[gets stdin line] >= 0} { + lassign [split $line "/"] year month date + if {[string index $month 0] eq "0"} { + set month [string index $month 1] + } + if {[string index $date 0] eq "0"} { + set date [string index $date 1] + } + set julian_then [g2j $year $month $date] + lassign [j2g [expr 2 * $julian_then - $julian_today]] Y1 M1 D1 + lassign [j2g [expr 2 * $julian_today - $julian_then]] Y2 M2 D2 + puts [format "%04d/%02d/%02d, %04d/%02d/%02d" $Y1 $M1 $D1 $Y2 $M2 $D2] +} |
