Expected Number of Restriction Sites

Author: L. Grondin

http://rosalind.info/problems/eval/

Sample input

10
AG
0.25 0.5 0.75

Sample output

0.422 0.563 0.422

Source code: eval-grondilu.pl

use v6;

sub prob(:$dna, :$gc-content) {
    1/2**$dna.chars *
    [*] map { $_ eq 'G'|'C' ?? $gc-content !! (1 - $gc-content) }, $dna.comb
}

my @data = ('10', 'AG', '0.25 0.5 0.75');
my $n = @data.shift;
my $s = @data.shift;
my @A = @data.shift.split: ' ';

my @B;

for @A -> $gc-content {
    push @B, ($n - $s.chars + 1) * prob :dna($s), :$gc-content;
}

say @B.fmt("%.3f");