summaryrefslogblamecommitdiffstats
path: root/LEXV.pl
blob: e19a91311072cf075e22c1f9d6ececf01df5a2b0 (plain) (tree)




































                                                           
#!/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;
}