aboutsummaryrefslogtreecommitdiff
path: root/challenge-153
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-153')
-rw-r--r--challenge-153/olivier-delouya/perl/ch-2.pl20
1 files changed, 20 insertions, 0 deletions
diff --git a/challenge-153/olivier-delouya/perl/ch-2.pl b/challenge-153/olivier-delouya/perl/ch-2.pl
new file mode 100644
index 0000000000..976c0db85a
--- /dev/null
+++ b/challenge-153/olivier-delouya/perl/ch-2.pl
@@ -0,0 +1,20 @@
+# !/bin/perl is_factorion.pl NNN
+
+use strict;
+
+sub factorial
+ {
+ my $fact = 1;
+ $fact *= $_ foreach (2..$_[0]);
+ $fact;
+ }
+
+sub is_factorion
+ {
+ my ($len, $ord_0, $digfactsum) = (length($_[0]), ord('0'), 0);
+ for(my $i=0; $i<$len; $i++) { $digfactsum += factorial(vec($_[0], $i, 8) - $ord_0); }
+ # ^ minus the ascii digits range offset
+ (($digfactsum == $_[0])? 1:0);
+ }
+
+print is_factorion($ARGV[0]);