From 4334b3fc883c60197c387ce38f348645be607ea7 Mon Sep 17 00:00:00 2001 From: Fung Cheok Yin <61836418+E7-87-83@users.noreply.github.com> Date: Sun, 26 Apr 2020 18:36:29 +0800 Subject: Rename ch-2.pl to challenge-057/cheok-yin-fung/perl/ch-2.pl --- ch-2.pl | 49 ------------------------------- challenge-057/cheok-yin-fung/perl/ch-2.pl | 49 +++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 49 deletions(-) delete mode 100644 ch-2.pl create mode 100644 challenge-057/cheok-yin-fung/perl/ch-2.pl diff --git a/ch-2.pl b/ch-2.pl deleted file mode 100644 index 2d628176b3..0000000000 --- a/ch-2.pl +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/perl -use strict; -use Scalar::Util qw/dualvar/; - -#Usage: $ ch-2.pl [list of words] -#e.g. ch-2.pl alphabet book carpet cadmium cadeau alpine -#output: alph , b , car , cadm , cade , alpi - -my @data = @ARGV; - - - -my $N = $#data + 1; - -my $i = 0; -my @dualv_sorted = sort {$a cmp $b} map { dualvar($i++, $_) } @data; - -my @dualv_processed = (); - -my $k = 1; - -for (0..$N-2) { - my $tempk = $k; - $k = 1; - my $first = substr($dualv_sorted[$_], 0, $k); - - while ($first eq substr( $dualv_sorted[$_+1], 0, $k)) { - $k++; - $first = substr( $dualv_sorted[$_], 0, $k); - } - - $first = substr($dualv_sorted[$_], 0, max($tempk, $k)); - $dualv_processed[$_] = dualvar( $dualv_sorted[$_]+0 , "$first"); -} - - - $dualv_processed[$N-1] - = dualvar($dualv_sorted[$N-1]+0, substr($dualv_sorted[$N-1], 0, $k)); - - -print join " , ", (sort {$a <=> $b} @dualv_processed); - - - - - -sub max { - return ($_[0] > $_[1] ? $_[0]: $_[1]); -} diff --git a/challenge-057/cheok-yin-fung/perl/ch-2.pl b/challenge-057/cheok-yin-fung/perl/ch-2.pl new file mode 100644 index 0000000000..2d628176b3 --- /dev/null +++ b/challenge-057/cheok-yin-fung/perl/ch-2.pl @@ -0,0 +1,49 @@ +#!/usr/bin/perl +use strict; +use Scalar::Util qw/dualvar/; + +#Usage: $ ch-2.pl [list of words] +#e.g. ch-2.pl alphabet book carpet cadmium cadeau alpine +#output: alph , b , car , cadm , cade , alpi + +my @data = @ARGV; + + + +my $N = $#data + 1; + +my $i = 0; +my @dualv_sorted = sort {$a cmp $b} map { dualvar($i++, $_) } @data; + +my @dualv_processed = (); + +my $k = 1; + +for (0..$N-2) { + my $tempk = $k; + $k = 1; + my $first = substr($dualv_sorted[$_], 0, $k); + + while ($first eq substr( $dualv_sorted[$_+1], 0, $k)) { + $k++; + $first = substr( $dualv_sorted[$_], 0, $k); + } + + $first = substr($dualv_sorted[$_], 0, max($tempk, $k)); + $dualv_processed[$_] = dualvar( $dualv_sorted[$_]+0 , "$first"); +} + + + $dualv_processed[$N-1] + = dualvar($dualv_sorted[$N-1]+0, substr($dualv_sorted[$N-1], 0, $k)); + + +print join " , ", (sort {$a <=> $b} @dualv_processed); + + + + + +sub max { + return ($_[0] > $_[1] ? $_[0]: $_[1]); +} -- cgit