查找共享拼接基序

作者:L. Grondin

http://rosalind.info/problems/lcsq/

示例输入

>Rosalind_23
AACCTTGG
>Rosalind_64
ACACTGTGA

示例输出

AACTGG

注意:需要先构建 lcsq 共享库。例如,在 Linux 系统上使用以下命令

$ gcc --std=c99 -fPIC -c -o lcsq.o lcsq.c
$ gcc -shared -o lcsq.so lcsq.o

源代码: lcsq-grondilu.pl

use v6;

use NativeCall;

sub lcsq(Str $, Str $ --> Str) is native($*SPEC.catdir($*PROGRAM-NAME.IO.dirname, 'lcsq')) {*}

my $default-input = q:to/END/;
    >Rosalind_23
    AACCTTGG
    >Rosalind_64
    ACACTGTGA
    END

sub MAIN($input-file = Nil) {
    my $input = $input-file ?? $input-file.IO.slurp !! $default-input;

    say lcsq |gather for $input.match:
    / ^^ '>Rosalind_' <digit>+ \n (<[\nACGT]>*) /, :g {
        take ~.[0].subst(/\n/,'', :g);
    }
}