aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwanderdoc <wanderdoc@googlemail.com>2021-03-21 14:58:18 +0100
committerwanderdoc <wanderdoc@googlemail.com>2021-03-21 14:58:18 +0100
commit2dd9caae82e00ccbdca9d4b01b26a3ff97854d53 (patch)
tree2db62ea0ea5fff7f1a680756de6b2ea9b0afc13d
parente9ea0d8d7f3b84d7a6c204e8fa79f91cd1df7627 (diff)
downloadperlweeklychallenge-club-2dd9caae82e00ccbdca9d4b01b26a3ff97854d53.tar.gz
perlweeklychallenge-club-2dd9caae82e00ccbdca9d4b01b26a3ff97854d53.tar.bz2
perlweeklychallenge-club-2dd9caae82e00ccbdca9d4b01b26a3ff97854d53.zip
Solution to task 1 challenge-104
-rw-r--r--challenge-104/wanderdoc/perl/ch-1.pl36
1 files changed, 36 insertions, 0 deletions
diff --git a/challenge-104/wanderdoc/perl/ch-1.pl b/challenge-104/wanderdoc/perl/ch-1.pl
new file mode 100644
index 0000000000..bacb9e6dac
--- /dev/null
+++ b/challenge-104/wanderdoc/perl/ch-1.pl
@@ -0,0 +1,36 @@
+#1perl
+use strict;
+use warnings FATAL => qw(all);
+
+=prompt
+Write a script to generate first 50 members of FUSC Sequence. The sequence defined as below:
+fusc(0) = 0 fusc(1) = 1
+for n > 1:
+when n is even: fusc(n) = fusc(n / 2),
+when n is odd: fusc(n) = fusc((n-1)/2) + fusc((n+1)/2)
+=cut
+
+
+
+
+
+sub generate_fusc
+{
+ my $max = $_[0];
+ my @arr;
+ my $i = - 1;
+
+ return sub
+ {
+ $i++;
+
+ if ( $i < 2 ) { $arr[$i] = $i; }
+ elsif ( $i % 2 ) { $arr[$i] = $arr[($i-1)/2] + $arr[($i+1)/2]; }
+ else { $arr[$i] = $arr[$i / 2]; }
+ return undef if $i > $max;
+ return [$i, $arr[$i]];
+ }
+}
+
+my $next = generate_fusc(50);
+while ( my $item = $next->() ) { print join(": ", @$item), $/; } \ No newline at end of file