🦌

しかのこのこのここしたんたん耐久オートマトン

2024/06/29に公開

概要

Q

しかのこのこのここしたんたん耐久

オートマトンを用意して受理させます。以前、「ドドスコスコスコ」が連続3回並んでいたら受理する問題を解いたときにオートマトンを用意しましたが、そのとき、こんなこともあろうかとライブラリ化しておいたので、今回はそれを利用します。

前回の問題

https://zenn.dev/ikawaha/articles/20220806-55c9db03732a09

ライブラリ

https://github.com/ikawaha/automaton

まず「しかのこのこのここしたんたん」x1 にチャレンジ

状態遷移はこんな感じ

状態遷移

さすがに一瞬で終わります。16ms 👍

実行結果

「しかのこのこのここしたんたん」x2

状態遷移の状態数が多くなってきました。

状態遷移

結構時間がかかります。運もありますが、手元の計算機ではおおむね10分程度で見つかりました。運が悪いと40分以上かかるときもあります(10分程度で終わるのが運がよいのかも?)

実行結果

さて、しかのこのこのここしたんたん耐久

では、「しかのこのこのここしたんたん」x3 は、OPテーマ「シカ色デイズ」イントロ耐久1時間以内に受理できるでしょうか?

https://www.youtube.com/watch?v=dCEMSaho0io

状態数も多いです。

状態遷移

結論は・・・

1時間耐久

できませんでした!

怒濤の24時間耐久へ

明日、結果が分かる予定です。

24時間ではだめでした!
実行結果

つぶやかれている方がいらっしゃいましたが、まさにこういうことですよね ↓。しかのコイン🦌ほしい

つぶやき

とういか完全な乱択なので、厳しそうですよね。しかの道は厳しい 🦌

コード

ライブラリを用意しておいたので、状態遷移だけ書けば、main はこんな感じです。

今回は1時間耐久なので、context.WithTimeout を1時間にセットして、あとはオートマトンを動かしておくだけです。

https://github.com/ikawaha/automaton/blob/38fc268cae4fd6a11d302db013b952729f90106e/_sample/shikanoko/main.go#L115-L140

状態遷移部分はこんな感じです。

https://github.com/ikawaha/automaton/blob/38fc268cae4fd6a11d302db013b952729f90106e/_sample/shikanoko/main.go#L38-L83

ちなみに、1回繰り返し、2回繰り返しには、終了状態をそれぞれ s7, s14 にセットしておくことで対応できます。

まとめ

しかのこのこのここしたんたん言いたいだけでした。

Happy hacking!

Discussion