文字列の均等分割
この問題は、除算だけでははく算術演算とか、文字列の長さをstrlenの類いで測るとかをしなくても、多分書けるのではないかと思います。
Posted feedbacks - Scheme
文字列の長さ分'1'を並べたリストをn要素ごとに分割(余りは0fill)し、i番目の要素を合計するとそれがi行目の文字数になる。
gosh> (define *sample*
"ゆめよりもはかなき世のなかをなげきわびつゝあかしくらすほどに四月十よひにもなりぬれば木のしたくらがりもてゆく")
*sample*
gosh> (divid 4 *sample*)
("ゆめよりもはかなき世のなかを" "なげきわびつゝあかしくらすほ" "どに四月十よひにもなりぬれ" "ば木のしたくらがりもてゆく")
gosh> (divid 5 *sample*)
("ゆめよりもはかなき世の" "なかをなげきわびつゝあ" "かしくらすほどに四月十" "よひにもなりぬれば木の" "したくらがりもてゆく")
gosh> (divid 6 *sample*)
("ゆめよりもはかなき" "世のなかをなげきわ" "びつゝあかしくらす" "ほどに四月十よひに" "もなりぬれば木のし" "たくらがりもてゆく")
gosh> (define *sample*
"ゆめよりもはかなき世のなかをなげきわびつゝあかしくらすほどに四月十よひにもなりぬれば木のしたくらがりもてゆく")
*sample*
gosh> (divid 4 *sample*)
("ゆめよりもはかなき世のなかを" "なげきわびつゝあかしくらすほ" "どに四月十よひにもなりぬれ" "ば木のしたくらがりもてゆく")
gosh> (divid 5 *sample*)
("ゆめよりもはかなき世の" "なかをなげきわびつゝあ" "かしくらすほどに四月十" "よひにもなりぬれば木の" "したくらがりもてゆく")
gosh> (divid 6 *sample*)
("ゆめよりもはかなき" "世のなかをなげきわ" "びつゝあかしくらす" "ほどに四月十よひに" "もなりぬれば木のし" "たくらがりもてゆく")
1 2 3 4 5 6 7 8 9 10 | (use gauche.sequence)
(use util.list)
(use srfi-13)
(define (divid n str)
(values-ref
(map-accum (lambda (n s) (values (string-take s n) (string-drop s n)))
str
(apply map + (slices (make-list (string-length str) 1) n #t 0)))
0))
|




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