aboutsummaryrefslogtreecommitdiff
path: root/challenge-133/abigail/ruby
diff options
context:
space:
mode:
authorE7-87-83 <fungcheokyin@gmail.com>2021-11-15 06:31:00 +0800
committerE7-87-83 <fungcheokyin@gmail.com>2021-11-15 06:31:00 +0800
commit4f3b607b4fabd7693f8ee8d9c2291cdddd614b25 (patch)
treea60ba10532b3a3ab29b304c639e68404fa2b1626 /challenge-133/abigail/ruby
parenta3c164970c4e43cc71b5fe8bd1c4a3fb02a35709 (diff)
parentf0cf4c2649ad878ce73142862f83e08dead5cc86 (diff)
downloadperlweeklychallenge-club-4f3b607b4fabd7693f8ee8d9c2291cdddd614b25.tar.gz
perlweeklychallenge-club-4f3b607b4fabd7693f8ee8d9c2291cdddd614b25.tar.bz2
perlweeklychallenge-club-4f3b607b4fabd7693f8ee8d9c2291cdddd614b25.zip
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'challenge-133/abigail/ruby')
-rw-r--r--challenge-133/abigail/ruby/ch-1.rb14
-rw-r--r--challenge-133/abigail/ruby/ch-2.rb53
2 files changed, 67 insertions, 0 deletions
diff --git a/challenge-133/abigail/ruby/ch-1.rb b/challenge-133/abigail/ruby/ch-1.rb
new file mode 100644
index 0000000000..efd3e4b8a0
--- /dev/null
+++ b/challenge-133/abigail/ruby/ch-1.rb
@@ -0,0 +1,14 @@
+#!/usr/bin/ruby
+
+#
+# See ../README.md
+#
+
+#
+# Run as: ruby ch-1.rb < input-file
+#
+
+ARGF . each_line do
+ |num|
+ puts ((Math . exp(Math . log(num . to_i) / 2)) . to_i)
+end
diff --git a/challenge-133/abigail/ruby/ch-2.rb b/challenge-133/abigail/ruby/ch-2.rb
new file mode 100644
index 0000000000..22b3bae8f0
--- /dev/null
+++ b/challenge-133/abigail/ruby/ch-2.rb
@@ -0,0 +1,53 @@
+#!/usr/bin/ruby
+
+#
+# See ../README.md
+#
+
+#
+# Run as: ruby ch-2.rb
+#
+
+$small_primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]
+
+def factorize (num)
+ factors = []
+ $small_primes . each do
+ | prime |
+ while num % prime == 0 do
+ factors . push(prime)
+ num /= prime
+ end
+ end
+ if num > 1 then
+ factors . push (num)
+ end
+ return (factors)
+end
+
+
+def digit_sum (numbers)
+ sum = 0
+ numbers . each do
+ | num |
+ while num > 0 do
+ sum += num % 10
+ num /= 10
+ end
+ end
+ return sum
+end
+
+
+number = 1
+count = 0
+
+while count < 10 do
+ factors = factorize(number)
+ if factors . length > 1 and digit_sum([number]) == digit_sum(factors) then
+ puts (number)
+ count += 1
+ end
+ number += 1
+end
+