From c47078d3ec4bb3111d8c91e9d972fe9cfe32efa9 Mon Sep 17 00:00:00 2001 From: Guillermo Ramos Date: Sat, 29 Jun 2019 21:15:34 +0200 Subject: [013#4] --- 014/ch1.pl | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100755 014/ch1.pl (limited to '014') 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 \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"; -- cgit v1.2.3