リングフィットアドベンチャーのダメージ計算手法:1

リングフィットアドベンチャーの敵を倒すときのダメージの計算方法はどうなっているのか気になったので調べてみる。 まずダメージ計算に必要そうなパラメータを挙げてみよう。

  • 攻撃力(=自分のレベルによるもの+ウェアによる攻撃力アップ)=a
  • 技の威力=b
  • best=c1 or good=c2 or nothing=c3
  • 技の回数=d
  • 敵の防御力=e

このうち陽にわからないのは敵の防御力。

あと、表示されるダメージが整数値のみなので、小数点以下がどうなっているのかがわからん。 切り捨てなのか四捨五入なのか切り上げなのか。

とりあえず一回の攻撃(一つの動作)で与えるダメージの仮設の式を立ててみる。


(敵に与えるダメージ) = \left( \frac{x \times a + y \times b}{d} \times c \right) /e

このままだと未知数が多いのでとりあえず

  • 全てbest、つまりc=c1=1
  • 一ターンで与えるダメージを計算する

これを念頭に置くと


(敵に一ターンで与えるダメージ) = ( x \times a + y \times b ) / e

この中でa,bははっきりとわかり、x,y,eは未知数、敵に一ターンで与えるダメージは整数値のみわかる、という状態になる。 後は未知数を求めるだけ。 データが必要だなー

Pythonの数値を指数表記で出力する方法

intだったりfloatで与えられた数値をstr型で出力する方法いろいろ。 意外と手こずった。


f = 1234.56をstr型に変換する

そのまま

str(f)
# '1234.56'

指数表記、有効数字

formatを使うのが一番手っ取り早い

'{:.2g}'.format(f)
# '1.2e+3'

など

このあたりが参考になるかも

Python, formatで書式変換(0埋め、指数表記、16進数など) | note.nkmk.me

自由形

1.2×103と表示したかったのでその方法

まず指数の肩の部分とfactorの部分を求める

a = int(math.log10(f)) 
b = round(f / 10**a,1)
# a = 3
# b = 1.2

そしてこれらを無理やり一つにして表示する

import matplotlib.pyplot as plt
plt.text(0.5,0.5,str(b)+'×'+r'$10^{'+str(a)+'}$')

で完成。

tex形式を使うけど$で囲まれた間に+でいろいろ結合しても問題ないようだ。

WSLにインストールしたものまとめ

研究環境に必要なソフトをまとめた まとめとかないと忘れそう

 


gnuplot

グラフ作成ソフト

texlive-font-utils

gnuplot内でepstopdfを使うならこれがいる

emacs25

テキストエディタ

python関連

python3-pip

jupyterを使うために必要なpipをインストールする

pip

pip3からのインストール

-H pip3 install -U pip

Jupyter

jupyter-lab

sudo pip install jupyterlab widgetsnbextension

-H pip3 install Jupyter

Jupyter-labの拡張機能

sudo jupyter labextension install * で入れる

sudoがないとjupyter-lab内からは入れられない

nodejs

jupyter-labの拡張機能を使うのに必要

curl -sL https://deb.nodesource.com/setup_12.x

でアップデートしてから入れる必要がある

irafとかpyrafとか

minicondaを使うと楽

http://www.kusastro.kyoto-u.ac.jp/~kazuya/p-kools/reduction-201806/install_software.html

GUI環境構築

pyrafを使おうとすると必要になった windows側での設定や、~/.bashrcの設定は

WSL2の導入とGUI環境の構築とsshfsしたものもgnome-openしたい!! - Qiita

を参考にする

必要最低限のGUI環境

sudo apt install libgl1-mesa-dev xorg-dev

GUI出力のテスト

sudo apt install x11-apps

xeyesで目の画面が出てくる

nautilus

ファイルマネージャー

QRコード決済のキャンペーンまとめ10/20~27

最近多いQRコード決済とかのキャンペーンがわかりずらいからまとめた。
国がやってる2%、5%のキャンペーンはどの決済方法でも同じなので省略する。 ここで上げる決済方法は

  • paypay
  • linepay
  • d払い
  • 楽天pay
  • Origami

基本的に期間限定のもののみを紹介、 決済方法初回使用限定のものは省略する。


今週還元率が高いのはpaypayとlinepayのCoke on payのキャンペーンぐらい。
楽天ペイのセブンイレブンのキャンペーンもそれなりの還元率。
それ以外はpaypay、linepay、楽天payを状況に応じて使い分け。
コンビニだと楽天ペイかな。

paypay

ちょっと前に感謝祭をやってたけど今は余り良いキャンペーンは無さそう。

ヒートテック1枚無料 10/4-10/22

paypayでヒートテックを一枚買うと、二枚目がタダになる。

  • 一人一回のみ
  • 990円のものだけ。要は一番普通のやつ。極暖とか超極暖は対象外なので注意
  • ユニクロアプリとPaypayの両方が必要

Paypayの支払い方法に関しての制限は無さそう。

まちかどペイペイ 10/1-11/30

最大10%戻ってくる。
とはいうもののpaypayからのキャッシュバックは5%のみだから実質5%還元。

  • 国の補助で5%引きが使える店かつpaypayが使える店が対象
  • paypay残高かヤフーカードから決済しないと不可
  • 一回の付与上限は1000円、月間付与の上限は25000円

余り使うことなさげ。

Coke Onで毎週100円戻ってくる 10/7-11/3

個人的にpaypayで今のところ一番のキャンペーン。

  • Coke Onアプリが必要
  • Coke On payが使える自動販売機が対象
  • コカ・コーラ社製品が対象
  • paypay残高で支払った場合のみ
  • 100円以上の製品を買ったとき
  • 週は月曜~日曜、日曜始まりではない

Coke On payを使える自販機がすぐにあればいいけど無いと面倒なことになるキャンペーン。 あとCoke On payが微妙に使いずらい。
でも100円のジョージアとか買うと、実質タダになるからこれはいいキャンペーン。
100円もすぐにくれる。

タクシー半額 9/27-10/31

  • DiDiアプリでタクシーを呼んだ場合のみ
  • 上限は1日1回、2000円まで
  • paypay残高で支払った場合のみ
  • 途中でキャンペーンが終了する可能性あり 自分はタクシー使わないから関係ないや。

Linepay

正直なんのキャンペーンをやっているのか一番わかりずらい。

最大12%キャッシュバック 10/18-10/31

あくまで最大であることに注意。 国のキャンペーン+Line payマイカラー+Line payボーナス
の合わせ技。キャンペーンからの割引は10%or5%。

  • Line payボーナスは10%対象店舗と5%対象店舗がある。全店舗で割り引いてくれるわけではない。
  • Line payコード支払いのみ対象
  • 上限は一人当たり1000円

要は10%か5%得だという話。
ややこしい。
まちかどpayと使い分けるとよさそう。

Coke Onで毎週100円戻ってくる 10/7-11/3

paypayとおんなじキャンペーン。 詳しくはpaypayの方を参照。

  • Line pay支払いのみ対象

ただしこちらは100円のドリンクを買ったことに対する、Linepayのポイントがもらえる。 このポイント分だけpaypayよりも得。
どっちも使えばもっと得。

CONOMI de GO!初回レビューで最大10万円 10/1-10/31

  • 対象店舗に店舗1件目となるレビューのみ
  • linepayを使って支払いをしなくてもよい
  • 貰える条件と残高が結構しょっぱい

まあ最大10万ですから。基本50円/投稿ですね。
そこまで得はしない模様。

スタバカード新規発行で100円クーポン 9/24-10/21

ほぼ終わりかけ。

  • カードの新規発行をしたときのみ
  • 1000円以上入金で100円分のチャージクーポン

スタバ使わない人には関係ないキャンペーン。
実質1割引き。

d払い

ちょっと前まで20%還元をやっててよかったけど今は微妙。
11月からドラックストアで+10%還元のキャンペーンが始まる。

d払い初めてで最大1000ポイント -10/31

  • d払いアプリでの利用設定で100円分
  • 初回決済月に2回以上の買い物で900円分(利用金額総額が2000円以上)
  • 要エントリー
  • 支払い方法には特に制限なし

楽天pay

結構キャンペーンの条件が厳しいイメージ。

全店舗5%引き 10/1-12/2

国の還元+楽天ペイの還元で5%。

  • 全店舗が対象
  • 楽天ペイによる還元が5%引きではないことに注意。
  • 要エントリー
  • 支払い方法に制限はなし

コンビニ決済だとpaypayやlinepayよりも得かも。
楽天による還元は0%or3%or5%なので名前ほどのキャンペーンではない。

セブンイレブンで10000ポイント当たる 10/1-11/1

  • 一回当たり711円以上の支払いが対象
  • 支払い方法に制限は無し
  • 条件を達成するともれなく150ポイント
  • 抽選で10000ポイント当たるかも セブンイレブンで711円以上買い物をするなら楽天ペイが絶対得。
    上のキャンペーンで5%+150ポイントだから、711円ギリギリの買い物をすると実質25%ぐらい戻ってくる。

スシローで最大550ポイント 10/3-10/20

あくまで最大550ポイント。

  • 対象店舗に制限があり。スシローならどこでもいいというわけではない。
  • 合計利用金額が1100円ごとに110ポイント
  • 支払い方法に制限は無し
  • 一回だけ

スシローに行くなら5-10%程度戻ってくるのであり。
1100円以上使った場合だけだけど。

Origami

あまり派手なキャンペーンをやってないイメージ。 常に3%引きとかやってたりはするけど。 11月からミニストップの新しいキャンペーンが始まる。

Pythonのよく使うライブラリまとめ

使ったことのあるライブラリのまとめ。


ライブラリ名 説明 参考サイトなど
numpy 色んな数学のライブラリ -
matplotlib.pyplot 表を書くならこれ -
pandas データフレームのやつ -
math 数学関連 npより実行速度が速い?
copy リストのコピーで使った Pythonでリストの深いコピー - えびしブログ
os os.path.exist:ファイルの存在確認 Pythonでファイル、ディレクトリ(フォルダ)の存在確認 | note.nkmk.me
subprocess 外部ソフトをサブプロセスで立ち上げるのに使った subprocess.Popen -
--- --- ---
astropy.io.fits fitsファイルの読み込み fits.open('hoge.fits')
scipy.interpolate リストのnanを補完する Scipyのinterpolateで欠損しているデータを補間する - Qiita
scipy.signal low-pass filterだったりhigh-pass filterだったり Python NumPy SciPy : デジタルフィルタ(ローパスフィルタ)による波形整形 | org-技術

VPNを使ってNAT越えswitchをプレイする方法

自宅外でよく使う某wifiではswitchのネットプレイができなかったのでそれを何とかできるようにする方法。

問題点

  • wifiの接続方式が合っていない
  • P2PがNATでブロックされている

wifiの接続方式

switchは暗号化方式が「WPA(TKIP)」または「WPA2(TKIP)」に対応していないようだ。

support.nintendo.co.jp


これはwindows10のモバイルホットスポットを使って、
wifi------PC(ルーター化)------switch
とすることでなんとかなる。

P2P通信ができない

これでテトリス99やソフトデータの更新などはできるようになる。 しかし、スマブラのネット対戦をしようとするとエラーが起きて全くプレイできない。 どうやらP2P通信がNATによって遮断されているようで、これが原因となっていることがわかった。


思いついた解決方法はVPNで回避する」これである。 ただ問題はVPNサーバーをどこに建てるかである。

  1. 自宅wifiルーターをVPNServerにする
  2. 自宅PCをVPNServerにする
  3. Cloud vmをVPNServerにする

1.自宅wifiルーターをVPNServerにする

どうやら個人用のwifiルーターの中にはVPNServerの機能付きのやつがあるっぽい。 io-dataのやつが手頃でおすすめ。 VPN接続には固定IPアドレスが必要だが、iobb.netを使えば変動IPアドレスでも大丈夫。


しかしこれにも難点がある。 マンションで一括のブロードバンドに加入していると使えない。 どうやらwifiルーターに何らかのグローバルIPアドレスが割り当てられていないと無理な模様。 残念ながら自宅のwifiルーターにはプライベートIPアドレスしか割り当てられておらず、 この方法は使えなかった。 折角wifiルーター買ったのに。。。
固定IPアドレスはブロードバンドの契約のオプションについてたりする。 けど月幾らかコストかかるし、セキュリティが少し不安だったりで断念。

参考にした記事

VPNサーバ機能付きWi-Fiルータはどれが良いのか 2019年春夏

2.自宅PCをVPNServerにする

色々方法はありそうだが、そこまでネット環境の構築に詳しくないので SoftEtherというものを使うことにした。

ja.softether.org

これを使用して、自宅PCにVPNServerを設置、ノートPCにVPNClientを入れて

自宅PC(VPNServer)-----自宅ルーター-----マンションNAT-----www -----wifi-----PC(VPNClient,モバイルホットスポット)-----switch

SoftEtherにあるVPNAzureを使えばServerにプライベートIPアドレスしかなくても VPN接続ができた。理由はよくわからん。 これでswitchを繋げることができる。
ややこしい。 しかしこの場合、自宅PCを常に起動させておかないといけない。 電力消費が心配。 もし省電力のVPNServer用のPCを置けるならこれでもいい。

参考にした記事

PC 間接続 VPN - SoftEther VPN プロジェクト

3.Cloud vmをVPNServerにする

最終的に落ち着いたのがこの方法である。 Cloud vmにもいくつか有料だったり無料だったり種類がある。 自分が使用したのはGoogle Cloud Platform。 上手いこと使えば無料でCloud vmを使える。 UbuntuをVPNServerとしてこれにSoftEtherを入れる。 注意しないといけないのがSecureNAT機能を有効にする必要があること。

Cloud vm(VPNServer)-----www-----wifi-----PC(VPNClient,モバイルホットスポット)-----switch

これでswitchで対戦ができるようになった。 ただ、Cloud vmからネットに繋いでいるような感じになるので、かなり変なグローバルIPアドレスになる。
あと割とラグい。 これはどうしようもないな。

参考にした記事

GCP の無料枠  |  Google Cloud Platform の無料枠  |  Google Cloud

GCP無料枠を使ってSoftEther VPN Serverを立ち上げる - Sunday morning

Ubuntu上でSoftEther VPN Server構築 - Qiita

GCPとSoftEther VPNで固定IPゲートウェイ環境を作る | 二代目俺のメモ