1 of 15

ハイドロポンプ略称�ジェネレーターを作った

nishinoyama

#until_lt0x05

2 of 15

自己紹介

  • 氏名:中山淳
  • HN:Nishinoyama
  • 所属:CS24, IPCヒラ?, DDNA研究室
    • データ駆動ネットワーキングアーキテクチャ研究室
  • やっていること:競プロ (Rust)
  • 生年月日:2001/10/05(今日誕生日らしい)

3 of 15

ハイドロポンプ

  • みず・特殊
  • 威力:110 命中率:80 PP:5
    • 第五世代までは威力120
  • 略称で好みが分かれ、話題になることが多い
    • 公式の情報局が発信するなど

4 of 15

ハイドロポンプの略称

  • ドロポン(学研の小学生向けの科学誌の付録の名前)
  • ハイポン(日ペの塗料、テーブルゲーム)
  • ハイドロ(ハイドロカノン)
  • ポンプ (一般名詞)
  • イドポプ
  • ドロンプ
  • ハインプ
  • ハドロン(素粒子、ハドロンエンジン)

5 of 15

ハイドロポンプの略称?

_人人人人人人人人人_� > プンポロドイハ < � ̄Y^Y^Y^Y^Y^Y^Y^Y^ ̄

HP

ホンプ

ドロンポ

ポンドロ

ポンドロ

プンポロ

ドーロンプ

ンードロ

インド

ハイドロポンプ

水砲

6 of 15

略称の定義

  •  

7 of 15

強い定義での略称の数

  •  

8 of 15

弱い定義での略称の数

  •  

9 of 15

ジェネレーターを作る

  • 「文字列に対し、その文字列の略称を� 一様ランダムで選び、1つ返す」�という関数を作る
  • 面倒だったため、簡単のため、�文字列の文字はすべて異なるとする

10 of 15

強い略称ジェネレーター

  • 簡単。
  • 文字列の文字を頭から見ていき、�50%で取る/取らないを選択しその順序を保ったまま結合する
  • 全部取った/取らなかったら再抽選
    • 再抽選率は7文字だと2%程度�かなり小さいのでこれで良い

イ ロ ンプ

11 of 15

弱い略称ジェネレーター

  • 大変難しい。
  • 長い略称ほど順列の数も増えるので確率が高くなる
    • 2文字は~0.31%、 4文字は~6.1%、6文字は~36.7%
  • 以下、ダメな例
    • 強い略称生成関数の文字列をランダムに入れ替える
      • 短い文字列が出すぎる
    • すべての略称を生成し、そこから一つ選ぶ
      • 15文字だと略称は3兆通りくらいある。全部生成する余裕はない

12 of 15

一解答(完答ではない)

  •  

1

2

3文字

4文字

5文字

6文字

7文字

 

ハイドロポンプ

ドイロポンハプ

13 of 15

完答ではない理由

  • 文字列長が大きいと正確に通り数が表現できない
  • doubleに逃げると浮動小数点数の地獄を見る
  • Bigintに逃げよう

  • 「コンピューターと数」の関係はほんと難しい

14 of 15

ちなみに

  •  

shuffle(array){

n := length of array

for i in 0..n {

j := randInt(n)

array.swap(i, j)

}

return array

}

15 of 15

おまけ

  • 遊べるようにした。タイトル 「pumperodhy」
  • Vite + バニラなTS を開発に利用。開発体験が大変良かった