aboutsummaryrefslogtreecommitdiff
path: root/challenge-138/abigail/bash
diff options
context:
space:
mode:
authorAbigail <abigail@abigail.be>2021-11-14 19:04:39 +0100
committerAbigail <abigail@abigail.be>2021-11-14 19:05:04 +0100
commit522e70815e8a79ccd7f628768e6699bf54747dd5 (patch)
treed8e23b976fee0c9e07c5636d3acd1e0619f223fa /challenge-138/abigail/bash
parentc1db8bac0eaafcc7e7c94d712ce24dc69b776c53 (diff)
downloadperlweeklychallenge-club-522e70815e8a79ccd7f628768e6699bf54747dd5.tar.gz
perlweeklychallenge-club-522e70815e8a79ccd7f628768e6699bf54747dd5.tar.bz2
perlweeklychallenge-club-522e70815e8a79ccd7f628768e6699bf54747dd5.zip
Solutions for week 138, part 2 in 14 languages.
Diffstat (limited to 'challenge-138/abigail/bash')
-rw-r--r--challenge-138/abigail/bash/ch-2.sh51
1 files changed, 51 insertions, 0 deletions
diff --git a/challenge-138/abigail/bash/ch-2.sh b/challenge-138/abigail/bash/ch-2.sh
new file mode 100644
index 0000000000..f8de32c814
--- /dev/null
+++ b/challenge-138/abigail/bash/ch-2.sh
@@ -0,0 +1,51 @@
+#!/bin/sh
+
+#
+# See ../README.md
+#
+
+#
+# Run as: bash ch-2.sh < input-file
+#
+
+set -f
+
+function can_split () {
+ local target=$1
+ local number=$2
+
+ if ((target > number))
+ then can_split=0; return
+ fi
+ if ((target < 0))
+ then can_split=0; return
+ fi
+ if ((target == number))
+ then can_split=1; return
+ fi
+
+ local pow_10=10
+
+ while ((pow_10 <= number))
+ do can_split $((target - (number % pow_10))) $((number / pow_10))
+ if ((can_split == 1))
+ then return
+ fi
+ ((pow_10 *= 10))
+ done
+
+ can_split=0
+}
+
+
+while read num
+do sqrt=$(echo "sqrt($num)" | bc)
+ if ((num > 1))
+ then can_split $sqrt $num
+ if ((can_split == 1))
+ then echo 1
+ else echo 0
+ fi
+ else echo 0
+ fi
+done