Skip to content

Instantly share code, notes, and snippets.

@yasuflatland-lf
Last active August 21, 2024 21:43
Show Gist options
  • Save yasuflatland-lf/8f7c676f2b0de2199bda2e0762f4207a to your computer and use it in GitHub Desktop.
Save yasuflatland-lf/8f7c676f2b0de2199bda2e0762f4207a to your computer and use it in GitHub Desktop.
Flamingo Armond State flow in Marmaid
stateDiagram-v2
    direction LR
    state StateCheck <<choice>>
    StateCheck: スワイプした時に、スワイプ情報があるか?
    NotExist:ない
    Exist:ある

    %% NotExist
    StateCheck --> NotExist:スワイプ情報保存
    NotExistTask:更新時間が一番古い+知らないもしくは未回答のものからカードを見せる
    NotExist --> NotExistTask
    NotExistTask --> StateCheck

    %% Exist
    StateCheck --> Exist:スワイプ情報保存

    Exist --> InWhile:上記のいずれにも当てはまらない場合で、前回からしばらく時間が空いていたら
    Exist --> Difficult: 直近のスワイプ情報5件が連続で知らない場合
    Exist --> Easy:直近のスワイプ情報5件が連続で知っている場合
    Exist --> Good: 直近のスワイプ情報10件中5件が知ってる場合
    Exist --> Def2:上記のいずれにも当てはまらない場合

    ChgState:ユーザーステート変更
    Def2: Default

    Difficult --> ChgState:知ってるであろう単語をy回表示させる
    note right of Difficult : 最近追加された簡単な単語(インターバルが長いもの)をランダムに選択
    Good --> ChgState:標準アルゴリズムで表示
    note right of Good: Spaced Repetitionで実装する。
    Easy --> ChgState:知らない単語バケットからランダムに表示させる。
    note right of Easy : Updateが変更されていない最古で、覚えたというフラグがないものをランダムに選択
    InWhile --> ChgState:知ってる単語5つくらいからスタートする
    note right of InWhile : Updateが直近で変更されて、覚えたというフラグがないものをランダムに選択
    Def2 --> ChgState:最近追加された単語からランダムにスタートする。

    ReturnCards: 10個くらいのバッチで次のリクエストまでフロントで処理すべきカードのリストを返却する。
    ChgState --> ReturnCards
    ReturnCards --> StateCheck
Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment