challenge 文字列の均等分割

一行の文字列を指定した数の行にできるだけ文字数が均等になるように分割してください.
ただし,除算や剰余算を使わないで書いてみてください.

sample = "ゆめよりもはかなき世のなかをなげきわびつゝあかしくらすほどに四月十よひにもなりぬれば木のしたくらがりもてゆく"

divid 4 sample =>
 "ゆめよりもはかなき世のなかを"
 "なげきわびつゝあかしくらすほ"
 "どに四月十よひにもなりぬれ"
 "ば木のしたくらがりもてゆく"

divid 5 sample => 
 "ゆめよりもはかなき世の"
 "なかをなげきわびつゝあ"
 "かしくらすほどに四月十"
 "よひにもなりぬれば木の"
 "したくらがりもてゆく"

divid 6 sample => 
 "ゆめよりもはかなき"
 "世のなかをなげきわ"
 "びつゝあかしくらす"
 "ほどに四月十よひに"
 "もなりぬれば木のし"
 "たくらがりもてゆく"

この問題は、除算だけでははく算術演算とか、文字列の長さをstrlenの類いで測るとかをしなくても、多分書けるのではないかと思います。

Posted feedbacks - PHP

昔、8bitCPUでグラフィック画面に直線を書いた方法の応用?

>php divstr.php 7
ゆめよりもはかな
き世のなかをなげ
きわびつゝあかし
くらすほどに四
月十よひにもなり
ぬれば木のしたく
らがりもてゆく
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
<?php
$sample = "ゆめよりもはかなき世のなかをなげきわびつゝあかしくらすほどに四月十よひにもなりぬれば木のしたくらがりもてゆく";

$d=max($argv[1],1);
$l=strlen($sample);
$s=$l;
for($i=0;($c=mb_substr($sample,$i,1))!='';++$i)
{    echo $c;
    for($j=0;$j<strlen($c);++$j)
        $s-=$d;
    if($s<=0)
    {    echo "\n";
        $s+=$l;
    }
}
?>

Index

Feed

Other

Link

Pathtraq

loading...