結果
問題 | No.701 ひとりしりとり |
ユーザー |
![]() |
提出日時 | 2018-06-16 08:52:22 |
言語 | F# (F# 4.0) |
結果 |
AC
|
実行時間 | 482 ms / 2,000 ms |
コード長 | 1,471 bytes |
コンパイル時間 | 14,491 ms |
コンパイル使用メモリ | 206,896 KB |
実行使用メモリ | 54,272 KB |
最終ジャッジ日時 | 2024-06-30 16:08:06 |
合計ジャッジ時間 | 11,073 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 12 |
コンパイルメッセージ
復元対象のプロジェクトを決定しています... /home/judge/data/code/main.fsproj を復元しました (357 ms)。 MSBuild のバージョン 17.9.6+a4ecab324 (.NET) main -> /home/judge/data/code/bin/Release/net8.0/main.dll main -> /home/judge/data/code/bin/Release/net8.0/publish/
ソースコード
let genSafeWord =let rec num2alp num =match num with| 0 -> ""| num ->let alpSize = ('z' |> int) - ('a' |> int)let alpOffset = ('a' |> int) - 1let n =match num%alpSize with| 0 -> alpSize| n -> nlet s = (n + alpOffset) |> char |> stringmatch n with| x when x = num -> s| x -> num2alp((num - n) / alpSize) + slet cnt=ref 1let genWord startCharacter =let newWord = startCharacter + (num2alp cnt.Value)incr cntnewWord(fun (preWord:string) ->let preLastCharacter = preWord.ToCharArray() |> Array.last |> stringlet newWord = genWord preLastCharactermatch newWord.ToCharArray()|> Array.last |> string with| "n" -> genWord preLastCharacter| _ -> newWord)let genOutWord (preWord:string) =let preLastCharacter = preWord.ToCharArray() |> Array.last |> stringpreLastCharacter + "n"let n = stdin.ReadLine() |> intSeq.unfold(fun (word,cnt)->match cnt = (n-1) with| true ->let nextWord = genOutWord wordSome(word, (nextWord, cnt + 1))| _ ->let nextWord = genSafeWord wordSome(word, (nextWord, cnt + 1))) ("a", 0)|> Seq.skip 1|> Seq.take n|> Seq.iter(printfn "%s")