どう書く?org : 文字列の均等分割

original page : http://ja.doukaku.org/88/

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

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

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

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

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

#4258

original page : http://ja.doukaku.org/comment/4258/

例えば3分割なら1, 2, 3, 1, 2, 3, ... という配列を作ってソートし、1が並んでいるインデックスを1列目、
2が並んでいるインデックスを2列目・・・という風に文字列をスライスしています。

divid <- function(num, sample){
   string <- unlist(strsplit(sample, ""))
   breaks <- sort(rep(1:num, len=length(string)))
   cat(sapply(1:num, function(n)(paste(string[breaks==n], collapse=""))), sep="\n")
}