RosettaCodeData/Task/Word-wheel/Perl/word-wheel.pl
2023-07-01 13:44:08 -04:00

21 lines
594 B
Perl

#!/usr/bin/perl
use strict; # https://rosettacode.org/wiki/Word_wheel
use warnings;
$_ = <<END;
N D E
O K G
E L W
END
my $file = do { local(@ARGV, $/) = 'unixdict.txt'; <> };
my $length = my @letters = lc =~ /\w/g;
my $center = $letters[@letters / 2];
my $toomany = (join '', sort @letters) =~ s/(.)\1*/
my $count = length "$1$&"; "(?!(?:.*$1){$count})" /ger;
my $valid = qr/^(?=.*$center)$toomany([@letters]{3,$length}$)$/m;
my @words = $file =~ /$valid/g;
print @words . " words for\n$_\n@words\n" =~ s/.{60}\K /\n/gr;