challenge 文字列の均等分割

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

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

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

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

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

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

Posted feedbacks - diff

括弧が抜けてました…

1
2
- pat = "^%s$" % "(.?.{%d})" % i * n
+ pat = "^%s$" % ("(.?.{%d})" % i * n)

Pythonの便利さがすごい・・・。
自分のコードは文字の長さを使っていたので、strlen相当の関数を使用しないように変更してみました。

ifelseは第1引数の条件がTRUEなら第2引数、FALSEなら第3引数の処理を実行します。
条件にはTRUE/FALSEのリストを渡すこともでき、その長さに応じて後ろの処理のリストはコピーされていきます。
1
2
-   breaks <- sort(rep(1:num, len=length(string)))
+   breaks <- sort(ifelse(string==string, 1:num))

Index

Feed

Other

Link

Pathtraq

loading...