99 problems Q14,15,18
# duplicate ["a";"b";"c";"c";"d"];; - : string list = ["a"; "a"; "b"; "b"; "c"; "c"; "c"; "c"; "d"; "d"]
これはそのままhdを2回追加すれば良いだけだから簡単。
ただこれの回数が可変になると一気に変わる。
# replicate ["a";"b";"c"] 3;; - : string list = ["a"; "a"; "a"; "b"; "b"; "b"; "c"; "c"; "c"]
考え方
・要素を1つ受け取って増やす関数を作って
・それぞれの要素に対してそれを当てはめる
・結果をまとめる
って感じに分解できると後は簡単
prepend: 繰り返す回数nと文字xを受け取って回数分増やした文字列を返す
fold_left: 各要素にprependを当てて、結果をまとめる
# slice ["a";"b";"c";"d";"e";"f";"g";"h";"i";"j"] 2 6;; - : string list = ["c"; "d"; "e"; "f"; "g"]
先頭から指定数切り落とす関数
先頭から指定数取り出す関数
を作って合わせる