Comment detail

文字列の均等分割 (Nested Flatten)

This comment is reply for 4235 にしお: 正規表現を使いました。 count...(文字列の均等分割). Go to thread root.

D に移植してみました。文字列の長さと分割数次第ではひどく時間がかかります。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import std.stdio;
import std.regexp;
import std.string;

string[] divid(uint n, string s){
    string[] ret;
    for(uint i;; i++){
        auto pat = "^" ~ format("(.{%d,%d})", i, i + 1).repeat(n) ~ "$";
        if(auto m = search(s, pat)){
            for(uint j = 1; j <= n; j++){
                ret ~= m.match(j);  // ret ~= m[j];
            }
            break;
        }
    }
    return ret;
}

void main(){
    auto sample = "ゆめよりもはかなき世のなかをなげきわびつゝあかしくらすほどに四月十よひにもなりぬれば木のしたくらがりもてゆく";
    writefln(divid(4, sample).join("\n"));
    writefln("----");
    writefln(divid(5, sample).join("\n"));
    writefln("----");
    writefln(divid(6, sample).join("\n"));
}

Index

Feed

Other

Link

Pathtraq

loading...