blog.bouzuya.net

2023-03-31 Hades ではじめて脱出した

Hades ではじめて脱出した (1周目) 。ネタバレする。

  • 武器は双拳
  • プレイ時間は 30 時間
  • 試行回数は 50 回

クリアかと思ったらスタッフロールがないし周回を促されるし、展開的にも……となって困った。エンディングを見るまではやるか……。

既にめちゃくちゃ周回させられている。グラフィック・会話など世界観の作り込みが良いのかな……。何にせよ何度もプレイさせられている時点でよくできているのだと思う。全体的にゲームスピードが早くて、いまだに何が起きているのか分からないままにガチャガチャやっている。弾避けが多くてシューティングゲームっぽさを感じる。功徳次第でそのへんもごまかせるのでプレイに幅がある。そこまでクリア重視でプレイしていなくて、強いものを狙って取るとつまらなくなりそう (逆に詰まる) な気配を感じて、予言の書を埋めるつもりで周回していた。

デュオニュソスが好み。二日酔いは思っている以上にダメージが入っている (気がする) 。

すこしペースを落として続けそう。


bouzuya/tsukota 0.1.15 をつくった。

入力検証を追加している。 react-hook-form を入れて適当に。


ABC115 : AtCoder Beginner Contest 115 の A, B, C, D を解いた。

use proconio::input;

fn main() {
    input! {
        n: usize,
        x: usize,
    };

    let mut levels = vec![(0_usize, 0_usize); n + 1];
    levels[0] = (1, 1);
    for i in 1..=n {
        let (a, p) = levels[i - 1];
        levels[i] = (3 + a * 2, 1 + p * 2);
    }

    let mut level = n;
    let mut offset = 0_usize;
    let mut sum = 0_usize;
    loop {
        let (a, p) = levels[level];
        if x == offset + a {
            sum += p;
            break;
        } else if x == offset + 1 {
            assert!(level != 0);
            break;
        } else {
            let (pa, pp) = levels[level - 1];
            let mid = 1 + pa + 1;
            match x.cmp(&(offset + mid)) {
                std::cmp::Ordering::Less => {
                    offset += 1;
                    level -= 1;
                }
                std::cmp::Ordering::Equal => {
                    sum += pp + 1;
                    break;
                }
                std::cmp::Ordering::Greater => {
                    sum += pp + 1;
                    offset += mid;
                    level -= 1;
                }
            }
        }
    }

    let ans = sum;
    println!("{}", ans);
}

今日のコミット。