From ccbec87cef4c99c8f62a3ee7aad3e20f93c4efe6 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sun, 18 Nov 2012 18:10:08 -0600 Subject: another solution --- LONG.pl | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 LONG.pl diff --git a/LONG.pl b/LONG.pl new file mode 100644 index 0000000..6046050 --- /dev/null +++ b/LONG.pl @@ -0,0 +1,37 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use 5.016; + +chomp(my @lines = <>); + +my $full = shift @lines; +while (@lines) { + my $found; + my $found_length = 0; + my $before; + for my $i (0..$#lines) { + for my $len (reverse 1..length($lines[0])) { + last if $len <= $found_length; + if (substr($full, 0, $len) eq substr($lines[$i], -$len)) { + $found_length = $len; + $found = $i; + $before = 1; + } + elsif (substr($full, -$len) eq substr($lines[$i], 0, $len)) { + $found_length = $len; + $found = $i; + $before = 0; + } + } + } + my $str = splice(@lines, $found, 1); + if ($before) { + $full = substr($str, 0, -$found_length) . $full; + } + else { + $full = $full . substr($str, $found_length); + } +} + +say $full; -- cgit v1.2.3