Blame


1 1ddd2d4e 2023-09-10 jrmu #!/usr/bin/perl
2 1ddd2d4e 2023-09-10 jrmu
3 1ddd2d4e 2023-09-10 jrmu # Using a Schwartzian Transform, read a list of words and sort them in
4 1ddd2d4e 2023-09-10 jrmu # "dictionary order." Dictionary order ignores all capitalization and
5 1ddd2d4e 2023-09-10 jrmu # internal punctuation. Hint: The following transformation might be useful:
6 1ddd2d4e 2023-09-10 jrmu #
7 1ddd2d4e 2023-09-10 jrmu # my $string = 'Mary Ann';
8 1ddd2d4e 2023-09-10 jrmu # $string =~ tr/A-Z/a-z/;
9 1ddd2d4e 2023-09-10 jrmu # $string =~ tr/a-z//cd;
10 1ddd2d4e 2023-09-10 jrmu # print $string;
11 1ddd2d4e 2023-09-10 jrmu
12 1ddd2d4e 2023-09-10 jrmu # Be sure you don't mangle the data! If the input includes 'the Professor'
13 1ddd2d4e 2023-09-10 jrmu # and 'The Skipper', the output should have them listed in that order, with
14 1ddd2d4e 2023-09-10 jrmu # that capitalization.
15 1ddd2d4e 2023-09-10 jrmu
16 1ddd2d4e 2023-09-10 jrmu use v5.24;
17 1ddd2d4e 2023-09-10 jrmu use warnings;
18 1ddd2d4e 2023-09-10 jrmu use strict;
19 1ddd2d4e 2023-09-10 jrmu use utf8;
20 1ddd2d4e 2023-09-10 jrmu
21 1ddd2d4e 2023-09-10 jrmu chomp(my @lines = <>);
22 1ddd2d4e 2023-09-10 jrmu
23 1ddd2d4e 2023-09-10 jrmu my @sorted =
24 1ddd2d4e 2023-09-10 jrmu map { $_->[0] }
25 1ddd2d4e 2023-09-10 jrmu sort { $a->[1] cmp $b->[1] }
26 1ddd2d4e 2023-09-10 jrmu map {
27 1ddd2d4e 2023-09-10 jrmu my $str = $_;
28 1ddd2d4e 2023-09-10 jrmu $str =~ tr/A-Z/a-z/;
29 1ddd2d4e 2023-09-10 jrmu $str =~ tr/a-z//cd;
30 1ddd2d4e 2023-09-10 jrmu [$_, $str]
31 1ddd2d4e 2023-09-10 jrmu } @lines;
32 1ddd2d4e 2023-09-10 jrmu print join "\n", @sorted;