Sha256: 7fb8473761e8a3df85ca31e1b60ed0db30f9a9d93ecff1e56446ca591a96e97f

Contents?: true

Size: 984 Bytes

Versions: 323

Compression:

Stored size: 984 Bytes

Contents

package Example;

use strict;
use warnings;

use List::Util qw(first);
use List::MoreUtils qw(pairwise all);

sub check_lists {
    my( $l1, $l2 ) = @_;

    if( is_equal($l1, $l2) ) {
	return "equal";
    } 
    if( @$l1 == 0 ) {
	return "sublist";
    } 
    if( @$l2 == 0 ) {
	return "superlist";
    }
    if( is_sublist($l1, $l2) ) {
	return "sublist";
    }
    if( is_sublist($l2, $l1) ) {
	return "superlist";
    }

    return "unequal";
}

sub is_equal {
    my( $l1, $l2 ) = @_;

    return unless @$l1 == @$l2;

    foreach my $i ( 0 .. @$l1-1 ) {
	return unless $l1->[$i] == $l2->[$i];
    }

    return 1;
}

sub is_sublist {
    my( $l1, $l2 ) = @_;

    return if @$l1 > @$l2;

    my $idx = -1;
    while() {
	$idx = first { $l2->[$_] == $l1->[0] } $idx+1 .. @$l2-1;
	return unless defined $idx;
	return if @$l1 > @$l2 - $idx;

	my @l2_rest = @{ $l2 }[$idx .. $idx + @$l1 -1];
	return 1 if all { $_->[0] == $_->[1] } pairwise { [$a,$b] } @$l1, @l2_rest;
    }
}

1;

Version data entries

323 entries across 323 versions & 1 rubygems

Version Path
trackler-2.2.1.105 tracks/perl5/exercises/sublist/Example.pm
trackler-2.2.1.104 tracks/perl5/exercises/sublist/Example.pm
trackler-2.2.1.103 tracks/perl5/exercises/sublist/Example.pm
trackler-2.2.1.102 tracks/perl5/exercises/sublist/Example.pm
trackler-2.2.1.101 tracks/perl5/exercises/sublist/Example.pm
trackler-2.2.1.100 tracks/perl5/exercises/sublist/Example.pm
trackler-2.2.1.99 tracks/perl5/exercises/sublist/Example.pm
trackler-2.2.1.98 tracks/perl5/exercises/sublist/Example.pm
trackler-2.2.1.97 tracks/perl5/exercises/sublist/Example.pm
trackler-2.2.1.96 tracks/perl5/exercises/sublist/Example.pm
trackler-2.2.1.95 tracks/perl5/exercises/sublist/Example.pm
trackler-2.2.1.94 tracks/perl5/exercises/sublist/Example.pm
trackler-2.2.1.93 tracks/perl5/exercises/sublist/Example.pm
trackler-2.2.1.92 tracks/perl5/exercises/sublist/Example.pm
trackler-2.2.1.91 tracks/perl5/exercises/sublist/Example.pm
trackler-2.2.1.90 tracks/perl5/exercises/sublist/Example.pm
trackler-2.2.1.89 tracks/perl5/exercises/sublist/Example.pm
trackler-2.2.1.88 tracks/perl5/exercises/sublist/Example.pm
trackler-2.2.1.87 tracks/perl5/exercises/sublist/Example.pm
trackler-2.2.1.86 tracks/perl5/exercises/sublist/Example.pm