文字列の均等分割
この問題は、除算だけでははく算術演算とか、文字列の長さをstrlenの類いで測るとかをしなくても、多分書けるのではないかと思います。
Posted feedbacks - Scala
0からnumまでの無限リスト(num=4なら0,1,2,3,0,1,2,3...)を作成し、文字列の長さ分takeします。
そのリスト中のnの出現回数を求めると分割後のn個目要素の文字数になります。
ちゅーか、無限リストをライブラリで用意するならcycleとかrepeatくらい提供してほしい・・・
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | def cycle[A](s:Iterable[A]):Stream[A] = {
def rep[A](s:Stream[A], p:int):Stream[A] = {
val n = (if(p<s.size){p}else{0})
Stream.cons(s(n), rep(s, n+1))
}; rep(s.toStream,0)
}
def divid(num:int, str:String) = {
val table = (Array.make(num, 0) /: cycle(0 until num).take(str.length)){(r,n) =>
r(n) = r(n)+1;r
}
val result = new Array[String](num)
(str /: (0 until num)){(s,n) =>
result(n) = s.substring(0, table(n))
s.substring(table(n))
}
result
}
|





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