All pastes #161365 Raw Edit

Untitled

public text v1 · immutable
·published 2006-09-05 09:57 UTC
rendered paste body
my @combs = ('A','T','G','C');
my $data;

sub combine {
        my (@combs) = @_;
        my @newcombs = ();
        for my $item (@combs) {
                for my $item2 (@combs) {
                        # dodii...
                        my $tmp = "$item$item2";
                        push @newcombs, $tmp if ($data=~/$tmp/);
                }
        }
        return @newcombs;
}

sub prepare {
        open FILE, "<data.txt" or die("Unable to open data.txt: $!");
        $data = join "", <FILE>;
        close FILE;
}

sub lookup {
        my (@combs) = @_;
        my %tmp;
        my @newcombs;
        map { @{$tmp{$_}} = ($data=~/$_/g); } @combs;
        for my $comb (keys %tmp) {
                push @newcombs, $comb if (@{$tmp{$comb}} > 0);
        }
        return @newcombs;
}

$| = 1;

prepare;

for my $i (1..5) {
        print STDERR "Iteration $i..." . @combs . " combine ";
        @combs = combine @combs;
        print STDERR @combs . " out ";
        ## look for combs
        #my @tmpcombs = lookup @combs;
        #print STDERR @tmpcombs . " out\n";
        last unless(@combs);
        open OUTPUT, ">combs";
        print OUTPUT join "\n", @combs;
        close OUTPUT;
}