let rec combi lst v acc =
match acc with
| [] -> combi lst (nextset v) [v]
| x::xs ->
match x with
| _ when x < lst ->
combi lst (nextset x) ((nextset x)::acc)
| _ -> List.tail acc
combi (first n) (first r) []
|> List.map ( fun n -> pr n )
|> printfn "%A"
seq { for x in "aiueo" -> string x } |> Seq.toArray;;
ブレイスさん、hafuuさんありがとうございます!下記の方法でまずはやってみました!
```
module Test =
let mutable i = 0
let aaa (arr:array<_>) str =
for v in str do
if v = '1' then
printfn "%A" arr.[i]
i <- i + 1
let StringToArray str =
str
|> Seq.map string
|> Seq.toArray
[<EntryPoint>]
let main (args: string[]) =
let str = "abc"
let bit = "110"
aaa (StringToArray str) bit
0
// "a"
// "b"
```
Available only forNUnit
ふーむ…
let parseStrToArray str =
let rec parseRec str acc =
match String.length str with
| 0 -> acc
| _ -> parseRec (str.[1..]) (str.[0] :: acc)
parseRec str [] |> List.rev |> List.toArray
[<EntryPoint>]
let main (args: string[]) =
let str = "abc"
let bit = "110"
Seq.zip str bit |> printfn "%A"
// seq [('a', '1'); ('b', '1'); ('c', '0')]
Seq.zip str bit
|> Seq.map ( fun tpl ->
match snd tpl with
| '1' -> printfn "%A" tpl
| _ -> printfn "%A" ('z') )
// ★ seq [('a','b')] としたい!
0
let str = "abcdefg"
let bit = "1110010"
let rec tostr (acc: char list) (strs: char list) (bits: char list) =
match bits with
| [] -> acc
| '1' :: bx -> strs.[0] :: (tostr acc (List.tail strs) (List.tail bits))
| '0' :: bx -> tostr acc (List.tail strs) (List.tail bits)
| x -> failwith ("unexpected value: " + x.ToString())
let result = tostr [] (List.ofSeq(str)) (List.ofSeq(bit))
printfn "%A" result
とか。
lst bit
を先頭に流し込めそうな気がするのですが、、、お手すきの時にヒント頂けると嬉しいです。module mapping =
[<EntryPoint>]
let main (args:string[]) =
let lst = ["A"; "B"; "C"]
let bit = ["110"; "101"; "011"]
let mapping lst bit =
(lst, bit)
||> Seq.zip
|> Seq.filter (fun (s, b) -> b = '1')
|> Seq.map fst
// ★ここの部分がもっと簡潔にかける気がするのですが。。。
//--------------------------
let f = mapping lst
bit
|> List.map (fun n -> f n)
|> Seq.map ( fun elm -> Seq.toList elm )
|> Seq.toList
|> printfn "%A"
//--------------------------
0
// 結果
// [["A"; "B"]; ["A"; "C"]; ["B"; "C"]]