結果

問題 No.179 塗り分け
ユーザー iwotiwot
提出日時 2020-06-21 22:05:03
言語 F#
(F# 4.0)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 1,299 bytes
コンパイル時間 5,577 ms
コンパイル使用メモリ 161,192 KB
最終ジャッジ日時 2024-04-29 19:38:57
合計ジャッジ時間 6,307 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
  復元対象のプロジェクトを決定しています...
  /home/judge/data/code/main.fsproj を復元しました (225 ms)。
MSBuild のバージョン 17.9.6+a4ecab324 (.NET)
/home/judge/data/code/Main.fs(12,25): error FS0058: 予期しない構文またはインデントが正しくない可能性: このトークンは位置 (11:52) から開始されるコンテキストのオフサイドになります。このトークンのインデントを増やしてみてください。非準拠のインデントを引き続き使用するには、'--strict-indent-' フラグをコンパイラに渡すか、言語バージョンを F# 7 に設定してください。 [/home/judge/data/code/main.fsproj]
/home/judge/data/code/Main.fs(12,25): error FS0010: この場所またはその前にある構造化コンストラクトが不完全です 式内 [/home/judge/data/code/main.fsproj]

ソースコード

diff #

let [| H; W |] = stdin.ReadLine().Split(' ') |> Array.map int
let mutable sample = None
let S = [ for i in 0 .. H-1 do
            let s = stdin.ReadLine().Trim()
            yield [ for j in 0 .. s.Length - 1 do
                        if s.[j] = '#' && sample.IsNone then sample <- Some (i, j)
                        yield if s.[j] = '#' then 1 else 0 ] ]

let isAll0 ss = Array.map (fun s -> Array.sum s) ss |> Array.sum |> ((=) 0)

let list2array (ss:int list list) : int [] [] = [| for i in 0 .. ss.Length - 1 do
                        yield List.toArray ss.[i] |]

if sample.IsNone then printfn "NO"
else
    let h0 = fst sample.Value
    let w0 = snd sample.Value
    let result = seq {
        for dh in 0-h0 .. H-1-h0 do
        for dw in 0-w0 .. W-1-w0 do
            if dh <> 0 || dw <> 0 then
                let check = list2array S
                for h in 0 .. H-1 do
                for w in 0 .. W-1 do
                    if h+dh >= 0 && h+dh < H && w+dw >= 0 && w+dw < W && check.[h].[w] = 1 && check.[h+dh].[w+dw] = 1 then
                        check.[h].[w] <- 0
                        check.[h+dh].[w+dw] <- 0
                yield if isAll0 check then "YES" else "NO" }
    match Seq.tryFind ((=) "YES") result with
    | Some(_) -> printfn "YES"
    | _ -> printfn "NO"
0