diff options
| author | Guillermo Ramos | 2019-06-29 21:15:34 +0200 | 
|---|---|---|
| committer | Guillermo Ramos | 2019-06-29 21:18:32 +0200 | 
| commit | c47078d3ec4bb3111d8c91e9d972fe9cfe32efa9 (patch) | |
| tree | 5d181c68fb8453aee7fbbb950d76dc805c0af11c /014/ch1.pl | |
| parent | 2d8184306c563fddc0dbdd8692d5bb438530020a (diff) | |
| download | perlweekly-c47078d3ec4bb3111d8c91e9d972fe9cfe32efa9.tar.gz | |
[013#4]
Diffstat (limited to '014/ch1.pl')
| -rwxr-xr-x | 014/ch1.pl | 27 | 
1 files changed, 27 insertions, 0 deletions
diff --git a/014/ch1.pl b/014/ch1.pl new file mode 100755 index 0000000..60db7e2 --- /dev/null +++ b/014/ch1.pl @@ -0,0 +1,27 @@ +#!/usr/bin/env perl +# +# Write a script to generate Van Eck’s sequence starts with 0 +# (https://en.wikipedia.org/wiki/Van_Eck%27s_sequence) +################################################################################ + +use strict; +use warnings; + +my $iterations = shift or die "Usage: $0 <iterations>\n"; + +# Computed sequence +my @vaneck = (0); + +# Map numbers to the last time they appear in sequence +my %lastpos = (0 => 0); + +# For every n, compute (push) n+1 +foreach my $n (0 .. $iterations-2) { +    my $curn = $vaneck[$n]; +    my $m = $lastpos{$curn}; +    my $nextn = defined $m ? $n-$m : 0; +    push @vaneck, $nextn; +    $lastpos{$curn} = $n; +} + +print "@vaneck\n";  | 
