diff options
| author | Ildar Shaimordanov <ildar.shaimordanov@gmail.com> | 2022-04-25 21:28:47 +0300 |
|---|---|---|
| committer | Ildar Shaimordanov <ildar.shaimordanov@gmail.com> | 2022-04-25 21:28:47 +0300 |
| commit | f8a5059338e0da84f40b191d44ead097728710ce (patch) | |
| tree | c477e09b7e7fcb769fb10a67b9253922d3b18acb /challenge-161 | |
| parent | af5fd62b1bded1873f6d0c1d54119cfc4dddcb17 (diff) | |
| download | perlweeklychallenge-club-f8a5059338e0da84f40b191d44ead097728710ce.tar.gz perlweeklychallenge-club-f8a5059338e0da84f40b191d44ead097728710ce.tar.bz2 perlweeklychallenge-club-f8a5059338e0da84f40b191d44ead097728710ce.zip | |
Add the solution for challenge-161/ch-1 by Ildar Shaimordanov
Diffstat (limited to 'challenge-161')
| -rw-r--r-- | challenge-161/ildar-shaimordanov/README | 1 | ||||
| -rw-r--r-- | challenge-161/ildar-shaimordanov/perl/ch-1.pl | 50 |
2 files changed, 51 insertions, 0 deletions
diff --git a/challenge-161/ildar-shaimordanov/README b/challenge-161/ildar-shaimordanov/README new file mode 100644 index 0000000000..1509c3983f --- /dev/null +++ b/challenge-161/ildar-shaimordanov/README @@ -0,0 +1 @@ +Solution by Ildar Shaimordanov diff --git a/challenge-161/ildar-shaimordanov/perl/ch-1.pl b/challenge-161/ildar-shaimordanov/perl/ch-1.pl new file mode 100644 index 0000000000..477d6164cf --- /dev/null +++ b/challenge-161/ildar-shaimordanov/perl/ch-1.pl @@ -0,0 +1,50 @@ +#!/usr/bin/env perl + +use strict; +use warnings; + +# https://theweeklychallenge.org/blog/perl-weekly-challenge-161/ +# +# Task 1: Abecedarian Words +# Submitted by: Ryan J Thompson +# +# An abecedarian word is a word whose letters are arranged in alphabetical +# order. For example, “knotty” is an abecedarian word, but “knots” +# is not. Output or return a list of all abecedarian words in the +# dictionary, sorted in decreasing order of length. + +# ========================================================================= + +# The version using regex + +# The same approach as one-liner +# perl -nle 'BEGIN { $A = join "", "a".."z" } $a = $A; ( $w = $_ ) =~ s/(.)\1*/$a =~ s#.*$1## ? "" : $&/eg; $w or print' + +my $A = join "", "a".."z"; + +while ( <> ) { + my $a = $A; + + chomp( my $word = $_ ); + + $word =~ s/(.)\1*/ $a =~ s|.*$1|| ? "" : $& /eg; + + $word or print; +} + +# ========================================================================= + +# The version using split/sort/join + +# The same approach as one-liner +# perl -nle '( join "", sort split // ) eq $_ && print' + +#while ( <> ) { +# chomp( my $word = $_ ); +# my $sorted = join '', sort split //, $word; +# $sorted eq $word && print; +#} + +# ========================================================================= + +# EOF |
