aboutsummaryrefslogtreecommitdiff
path: root/challenge-072/arne-sommer/perl/zero-faculty-perl
blob: 076ed740b41955f589e8d23354f1aee257aeae3e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#! /usr/bin/env perl

use strict;
use feature 'say';

my $N = shift(@ARGV) // die 'Please specify $N';
my $verbose;
my $upto;

while ($N eq "--verbose" || $N eq "-v" || $N eq "--upto" || $N eq "-u")
{
  $verbose++ if $N eq "--verbose" || $N eq "-v";
  $upto++    if $N eq "--upto"    || $N eq "-u";

  $N = shift(@ARGV) // die 'Please specify $N';
}

die '$N must be an integer >= 1' unless int($N) == $N && $N >= 1;

my $faculty = 1;

for my $value (1 .. $N)
{
  $faculty *= $value;
  
  if ($upto || $value == $N)
  {
    say ": $value Faculty: $faculty" if $verbose;
    $faculty =~ /(0*)$/;
    say length $1;
  }
}