Hofstadter Figure-Figure sequences: Difference between revisions

(→‎{{header|Factor}}: Marked incorrect)
(→‎{{header|Perl6}}: fixed perl6)
Line 472:
-> T</lang>
 
=={{header|Perl6Perl 6}}==
 
{{output?|Perl6}}
<lang perl6>my %r = 1 => 1;
This purely recursive version is too slow, so it does not the last part of the task.
my %s = 1 => 2;
<lang perl6>
 
sub ffr(Int $n where { $n > 0 }) { $n == 1 ?? 1 !! ffr($n-1) + ffs($n-1) }
sub ffr ($n) {
sub ffs(Int $n where { $n > 0 }) { $n == 1 ?? 2 !! (grep none( map &ffr, 1..$n ), 1..* )[$n-1] }
return %r{$n} if %r.exists($n);
say map &ffr, 1..10
sub ffr(Int $n where { $n > 0 }) %r{ $n} == 1 ?? 1 !! ffr($n - 1) + ffs($n - 1) };
return %r{$n};
}
 
sub ffs ($n) {
return %s{$n} if %s.exists($n);
sub ffs(Int $n where { $n > 0 }) %s{ $n} == 1 ?? 2 !! (grep none( map &ffr, 1..$n ), max(%s.values)+1..* )[$n-10] };
return %s{$n};
}
 
say "first 10 values of R are:";
say map &ffr, 1..10;
 
# first 40 values of R
my @a = map &ffr, 1..40;
 
# first 960 values of S
# WARNING: be sure you got about 3GB of ram to burn
my @b = map &ffs, 1..960;
 
use Test;
is sort(@a,@b), 1..1000, 'R(1..40) v S(1..960) == 1..1000';
</lang>
 
Anonymous user