トップページ > プログラム > 2015年02月05日 > yEh0kGG/

書き込み順位&時間帯一覧

61 位/229 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000000010001



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
プログラミングのお題スレ Part6©2ch.net

書き込みレス一覧

プログラミングのお題スレ Part6©2ch.net
458 :デフォルトの名無しさん[sage]:2015/02/05(木) 20:31:02.61 ID:yEh0kGG/
>>444 F#

let points (x, y) = seq { for x in [x-1; x; x+1] do for y in [y-1; y; y+1] -> x, y }
let spaces map p = points p |> Seq.filter(fun p -> Set.contains p map)
let findRoom map p = Seq.tryFind (Set.intersect (Set(spaces map p)) >> Seq.isEmpty >> not)

let lookup map rooms p =
 match findRoom map p rooms with
 | None -> Set.add (Set [p]) rooms
 | Some room -> Set.remove room rooms |> Set.add (Set.add p room)

let charsi data =
 (data+"").Split '\n'
 |> Seq.mapi(fun y -> Seq.mapi(fun x c -> (x,y),c))
 |> Seq.collect id

let makeMap = charsi >> Seq.choose(function p, '.' -> Some p | _ -> None) >> Set.ofSeq

let printCount data =
 let map = makeMap data
 Seq.fold (lookup map) Set.empty map
 |> Set.count
 |> printfn "%s\n%d rooms" data
 
printCount "#####
#.#.#
##.##
#####"


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。