文字列の均等分割
この問題は、除算だけでははく算術演算とか、文字列の長さをstrlenの類いで測るとかをしなくても、多分書けるのではないかと思います。
Posted feedbacks - D
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"));
}
|





nobsun
#4090()
Rating-1/3=-0.33
1 reply [ reply ]