diff options
Diffstat (limited to 'LEXV.pl')
-rw-r--r-- | LEXV.pl | 37 |
1 files changed, 37 insertions, 0 deletions
@@ -0,0 +1,37 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use 5.016; + +my @string = split ' ', scalar(<>); +chomp(my $length = <>); + +unshift @string, undef; +my $base = @string; + +for my $num (0..$base ** $length - 1) { + my @digits; + my $remainder = $num; + for my $digit (1..$length) { + my $exponent = $length - $digit; + push @digits, int($remainder / $base ** $exponent); + $remainder -= $digits[-1] * $base ** $exponent; + } + @digits = map { $string[$_] } @digits; + next unless valid(@digits); + say join('', grep { defined } @digits); +} + +sub valid { + my @digits = @_; + + return unless grep { defined } @digits; + + my $seen_undef; + for my $digit (@digits) { + return if $seen_undef && defined($digit); + $seen_undef = 1 if !defined($digit); + } + + return 1; +} |