「ぼくは大きくなったらダークキングになるんだっ!」
「えっ」
Vジャンプの魔物仮面を付けたかったのですが、課金NGプレイが信条ですので。。
さて、以前作ったレグナード強さつぶやきBOT君ですがダークキングの強さもTwitterでつぶやくようにしました。
こんな感じでつぶやきます。
ちなみに、レグと違ってダークキングって1→2→3→4→1→2と規則的に強さが変わるみたいですね。
そこで学生の頃から算数がニガテな文系のみえちょん。
どうやったら強さを計算して出せるのか、考えてみました。
一応UNIXコマンドでやってるので、MacとかLinuxだとすぐに試せますね。
Windowsではbashはネイティブではサポートされてないので、cygwinを入れる必要があります。
しかし、Windows10では8/2の大型アップデートでbashがネイティブサポートされます!
CASE1 一日毎に1ずつ加算していく
まずは適当なファイルに1を入れておく。
$ echo 1 > tmp
$ cat tmp
1
そのファイルの数字を1加算するようにして、5になった場合は1にリセットするようにする。
$ expr
cat tmp
+ 1 > tmp ; if [cat tmp
-ge 5 ]; then echo 1 > tmp
適当に言葉を入れるとこんな感じになる。
【実行例】
$ exprcat tmp
+ 1 > tmp ; if [cat tmp
-ge 5 ]; then echo 1 > tmp ; fi ; echo 今日はダークキングcat tmp
だよ!
今日はダークキング2だよ!
$ exprcat tmp
+ 1 > tmp ; if [cat tmp
-ge 5 ]; then echo 1 > tmp ; fi ; echo 今日はダークキングcat tmp
だよ!
今日はダークキング3だよ!
$ exprcat tmp
+ 1 > tmp ; if [cat tmp
-ge 5 ]; then echo 1 > tmp ; fi ; echo 今日はダークキングcat tmp
だよ!
今日はダークキング4だよ!
$ exprcat tmp
+ 1 > tmp ; if [cat tmp
-ge 5 ]; then echo 1 > tmp ; fi ; echo 今日はダークキングcat tmp
だよ!
今日はダークキング1だよ!
$ exprcat tmp
+ 1 > tmp ; if [cat tmp
-ge 5 ]; then echo 1 > tmp ; fi ; echo 今日はダークキングcat tmp
だよ!
今日はダークキング2だよ!
$ exprcat tmp
+ 1 > tmp ; if [cat tmp
-ge 5 ]; then echo 1 > tmp ; fi ; echo 今日はダークキングcat tmp
だよ!
今日はダークキング3だよ!
$ exprcat tmp
+ 1 > tmp ; if [cat tmp
-ge 5 ]; then echo 1 > tmp ; fi ; echo 今日はダークキングcat tmp
だよ!
今日はダークキング4だよ!
あとはこのコマンドをcronなどで1日一回ダークキングの更新時間に叩けば良いだけ。
メリット:
かんたん、オフラインで実行可能、外部要因によるエラーがでない
強さ変更ルールが変わった場合は除く)
デメリット:
内部要因により、一度ズレが生じるとズレつづける
CASE2 日付を参照して1ずつ加算していく
一年は365日で日にちがリセットされる為、エポックタイム(1970年1月1日0:00:00(UTC)から進んだ秒数)というものを使う。
それをJSTで出して一日の秒数86400秒で割って余りを捨てれば一日1ずつ増える整数が出せる。
$ date
2016年 7月 6日 水曜日 15:10:25 JST
$ exprdate +%s
/ 86400
16988
つまり初日7/6は1970年1月1日から数えて16988日目ってこと。
で強さが4つあるから4で割って余りを出せばいいわけね。
【実行例】
$ date
2016年 7月 6日 水曜日 15:25:25 JST
$ exprdate +%s
/ 86400 % 4
0
$ exprdate +%s -d '1 day'
/ 86400 % 4
1
$ exprdate +%s -d '2 day'
/ 86400 % 4
2
$ exprdate +%s -d '3 day'
/ 86400 % 4
3
$ exprdate +%s -d '4 day'
/ 86400 % 4
0
$ exprdate +%s -d '5 day'
/ 86400 % 4
1
$ exprdate +%s -d '6 day'
/ 86400 % 4
2
$ exprdate +%s -d '7 day'
/ 86400 % 4
3
これを見ると初日の強さ1の時に余りが0になってるので、+1すればいいわけね。
【実行例】
$ expr
date +%s
/ 86400 % 4 + 1 > tmp ; echo 今日はダークキングcat tmp
だよ!
今日はダークキング1だよ!
$ exprdate +%s -d '1 day'
/ 86400 % 4 + 1 > tmp ; echo 今日はダークキングcat tmp
だよ!
今日はダークキング2だよ!
$ exprdate +%s -d '2 day'
/ 86400 % 4 + 1 > tmp ; echo 今日はダークキングcat tmp
だよ!
今日はダークキング3だよ!
$ exprdate +%s -d '3 day'
/ 86400 % 4 + 1 > tmp ; echo 今日はダークキングcat tmp
だよ!
今日はダークキング4だよ!
$ exprdate +%s -d '4 day'
/ 86400 % 4 + 1 > tmp ; echo 今日はダークキングcat tmp
だよ!
今日はダークキング1だよ!
$ exprdate +%s -d '5 day'
/ 86400 % 4 + 1 > tmp ; echo 今日はダークキングcat tmp
だよ!
今日はダークキング2だよ!
$ exprdate +%s -d '6 day'
/ 86400 % 4 + 1 > tmp ; echo 今日はダークキングcat tmp
だよ!
今日はダークキング3だよ!
$ exprdate +%s -d '7 day'
/ 86400 % 4 + 1 > tmp ; echo 今日はダークキングcat tmp
だよ!
今日はダークキング4だよ!
※ ↑は7/6の実行例なので7/7に実行したらちゃんと2になってました。
$ date
2016年 7月 7日 木曜日 15:03:56 JST
$ expr date +%s
/ 86400 % 4 + 1 > tmp ; echo 今日はダークキングcat tmp
だよ!
今日はダークキング2だよ!
メリット:
外部要因によるズレが発生しない(強さ変更ルールがズレた場合は除く)
内部要因によるズレが発生しない(ntp同期はずれは考慮しない)
デメリット:
強さ変更ルールがズレた場合は手動で計算方法を変えないとダメ
2016/09/01 追記
考え方としては上記でいいんですが、朝6時に更新っていうのが抜けてましたね。
9時間ズレの朝6時追加で3時間分10800秒ズレるのを計算しないとです。
なので、書きコマンドが正解なはず。
$ i=
date +%s
; echo 今日はダークキングecho "($i + 10800) / 86400 % 4 + 1" | bc
だよ
今日はダークキング1 だよ
Bash on Ubuntu on Windows入れてたらWindows上でも打てる事を確認してました(´・ω・`)
規則的なルールだと簡単に計算できるものですね。
ちなみにみえちょんは上記のようは方法は使っていませんw
というのも、もともと色々なサイトから情報を引っ張ってきて整形して自分用にデータを出すようにしてるんですね。
その中で一部のデータをブログに表示させたり、レグの強さをTwitterでつぶやくようにしてたわけです。
今回のダークキングも、レグの強さを引っ張るついでに一緒に引っ張ってきただけなんですね。
計算もクソもありゃしない。
一応メリットとデメリットは以下の通り。
メリット:
自分が必要と思うデータを好きなだけもってくる事ができる
強さ変更ルールがズレた場合でも影響なし
デメリット:
データをパクっている引用しているサイトの更新が遅れたり書き方が変わったりすると更新が必要になったりする
つまりは計算でもとめられないデータをすでに色々引っ張ってたので、相乗りしましたって事ですねw
必要なデータをもとめられるようになったら、Twitterに自動投稿したりブログを自動更新したりメールやSLACKに通知したりなどできるので便利だったりします。
つーわけで、@miechon_DQXをフォローよろしくねっ(ノ´∀`*)
↓ いい記事だと思ったり、かわいいと思ったら
↓ 押してくれるとうれしいなっ☆
コメント
なるほど・・・ナルホド・・・・
ってなに書いてるかわからんわ!!
> アクちゃん
えっ?
つまりは、Twitterフォローしてね!
ブログランキングぽちってね!!
いろいろ貢いでね!!!
こういう事です(*´ω`*)
待ってるで(`・ω・´)ゞ
どこの何語やねん。キャベツ語か。
>鮎さん
キャベツがしゃべるわけないやん^q^