challenge 文字列の均等分割

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

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

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

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

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

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

Posted feedbacks - Groovy

Code golf的に、最短コードを目指しました。
これ以上圧縮できないと思います。

10行での実行例
--------------------------------
入力を10行に分割します

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

def lines = args[0].toInteger()
println "入力を${lines}行に分割します\n"
element= sample.toList()

int p=0
for (i in 0..lines-1) { 
    for (j = i; j < element.size(); j+=lines ) {
        print sample.getAt(p++)
    }
    println ""
}

Index

Feed

Other

Link

Pathtraq

loading...