2016/12/13

★1星の器FC

★1 星の器 ふるこん!



十段取りたてのころ物量に慣れるのにこの曲がいいよっていうことでやってみて、なんもみえませ~~んだったのをよく覚えているわけですが、つながってしまいました(´・_・`)

久しぶりに、成長してるな~という感じがある成果がでました(´・_・`)…


2016/12/08

今更だけど競プロを始めた

最近高難易度サボりがちなので何も未難減らへん状態になってきました(´・_・`)
そりゃそうだね😌

さて最近なんですが競プロ(Wikipedia)をはじめました(´・_・`)
実装が早くなって捗るしアルゴリズムは知ってるけど…みたいなのを実装する機会になります
個人的にはレーティングが付いて自分の成長が分かる所が楽しいですね

ということで同じように競プロを始めた学友と蟻本を読んだりしております(´・_・`)
蟻本というのはコレのことで競プロに使えるアルゴリズムやデータ構造をずら~~っと勉強することが出来ます。結構有名な本。
のらりくらりとやってきた情報系の学生はろくに実装したりしていないので、知っているアルゴリズムでも実装したことが無いようなものを実装する機会になるわけです。

蟻本(アリが書いてあるから)

ということでこの本で勉強しつつコンテストに参加してみたりしています。
コンテストといってもオンラインで出来るものがたくさんあって、実力に応じてレーティングもちゃんと付いたりします。格ゲーみたいですね。
ありほんのコードはちゃんと残してます蟻本はCですがPythonでやってます(https://github.com/chahan69/AntBook)

そういうのをやってるサイトはたくさんあって検索すればなんぼでも出るんだけど、
とりあえず国産のAtCoderというものがあります。
有名な高橋直大氏が社長をやられている会社で、ここのコンテストはなんと日本語での問題もしっかり用意されていて日本人は始めやすいです(´・_・`)(´・_・`)
週に1回ぐらいでレーティングが付くコンテストが開かれています(´・_・`)


ここのコンテストに3回参加してみました!
五級だって…!?お、おれは皆伝だぞ!!??

精進します(^o^)丿





2016/12/02

攻城シノバズ城!

ブレイクスルーがなぁ~い!(^o^)
壁を割る感じが最近無いっすね~

シノバズになってやっとイベントも来たわけです。
copulaで言うところのとことこ鉄道式イベントですね~
BEMANI WIKI で調べて初めて知ったんですが、鍛錬って力が1000ちょっとになるまででいいらしいですね…
そうとは知らず力を4500ぐらいに上げてしまいました…ムキムキ(´・_・`)


さてまず☆11ですが禍根がちょいムズって感じでしたね。いつものU1という感じで譜面もU1譜面でした…
☆10ですがREDALiCEの新曲でBreaking Chainが追加されました~
REDALiCE曲は疾走感があってやってて楽しい感じになります(´・_・`)

で、☆12にはHADES, 九尾狐夜行, 焔極OVERKILLの3曲が追加されました(´・_・`)

HADES

ムービーなに!?
曲もムービーもクオリティがたか~いHARD STYLEでした(´・_・`)

HADES HARD
最後がキツキツナイアガラなのでイージーよりハードのほうがかんたんなんじゃないの~って感じでした。無事一発(^o^)丿

九尾狐夜行

ギタドラからの移植。
でしょうね!
OSTER PROJECTはいろんな曲作れて凄いなぁ…

ハード、イージーともにめっちゃ弱いと思います…Dとかちゃうかな?
あっさり埋まりすぎてリザルト撮り忘れた…

焔極OVERKILLS

最初のボス?でいいのかな?
正直結構難しいという話なので未難が増えるかな~とか思ってたんですが無事埋まりました(^o^)丿

焔極OVERKILL
お皿が結構えげつない感じで降ってくるので、うま~いことごまかしながら鍵盤だけのところで回復するのが良いですね(^o^)丿(^o^)丿



というわけなんですがその他にも徐々に埋まってます笑



弱めダリアとか



パラロスとか

そんな感じで頑張ります☺☺



2016/11/17

TwitterのBOT機能

うわ~~音ゲーの進捗がないよ~~~
地力S帯でもかんたんなの(IXとか共鳴遊戯)とむずかしいの(Chronodiverとかエレクリとか)の差エグくないですか?????(`´)
難しい方全然見えましぇ~んなので発狂BMSでチートしようかと思います☺


で、今回はTwitterのbotをPythonで作ってみたので紹介します(´・_・`)

botは自分だけが認証されてれば良いわけなのでOAuth認証とかもそんなにめんどくさくないしTwitterDevelopperに登録してキーもらったらさくっとできます(´・_・`)
正直良くわかってないけどライブラリ使ったら秒でできた(´・_・`)

  1. OAuth認証するやつ(https://github.com/requests/requests-oauthlib)
  2. twitterのAPIを叩くやつ(https://code.google.com/archive/p/python-twitter/)


どちらもpipでインストール出来るのでらくちんです。あとは公式(https://dev.twitter.com/)にAPIの一覧とかあるし、ぐぐったらわかりやすいサイトいくらでもあるし(´・_・`)


で、やってみたの

腹筋機能


腹筋する旨を伝えると


1から100まで腹筋ガチャをひくことが出来ます。
累計も教えてくれてムキムキになれます。

BMS課題機能


発狂BMSの課題がほしい旨を伝えると


適当に課題曲ガチャが引けます。




レベルを指定することもできます。


更新ランプの確認機能





なんかこんなことを言うと




こんな感じで前の更新から何をクリアしたのかを教えてくれます。140字以上になるときはツイートを分けてくれます。
今日は結構やったのにランプが3つだけだったみたいで泣いています(´・_・。`)




こんなことをしている場合じゃねえ(´・_・`)(´・_・`)(´・_・`)


2016/11/05

Pythonでぷるるん〜

こんにちはゆっけです。
皆伝を取ったので競プロを始めようと思い最近蟻本のイージーを狙っています。

はじめにですが今回の記事は音ゲー全く関係ないです(´・_____・`)

タイトルのぷるるんとはなんぞやという話ですが、これはGoogleplayやAppStoreにある一筆書きを考える系脳トレアプリのことです(´・_・`)
Google
https://play.google.com/store/apps/details?id=jp.co.OneStroke
Appstore
https://itunes.apple.com/jp/app/da-rengahamaru-naotore!pururun/id1145262669?mt=8

で、今日このアプリをひとからやらされたわけなんですが、まあ一筆書きを考えるだけなんですが結構難しいんですよね(´・_・`)

と、いうことでPythonで解いてみました(^o^)丿
脳トレアプリでさえ脳トレしないぞ(^o^)丿


蟻本では一番最初の方で全探索というものが紹介されます(´・_・`)
で、今回の問題もだいたいそれで解けるわけですね〜

直感的な戦略は

  1. 上下左右に移動
  2. 壁や既に通った道に来てしまったら終了
  3. 全部の道を通っていたら解答として出力

となります。

全探索にはざっくり深さ優先探索幅優先探索があるわけなんですが(詳しくはこちら→http://mathtrain.jp/dfsbfs)
今回は全部の道を埋めたいわけなので深さ優先探索となりますね(´・_・`)

ということでまずこれで書いてみます。
"."が道で"#"は壁、"S"がスタートです。



道が全部埋まったかどうかを確認するために、最初に道のマス目を全部数えて、移動するたびにマス目の数を1引いています。
全要素を見て全部の道を通ったかどうか確認するより、ビミョーに計算量が減ります(´・_・`)

また、Pythonのリストは参照渡しなので、関数やキューに渡すときはcopyモジュールのdeepcopyで複製を作っています。(もしかしたらコレが結構遅いかもしれない…)

結果はこちら(´・_・`)



さ、僕が自力で考えても10分ぐらい解けなかった問題も解くことができました。が、
Pythonが遅いのとコーディング力が無いので6×7の問題を解くのに70秒近くかかってしまいました(´・_・`)
う〜ん(´・_・`)
Python書きやすくていいんですが速さのほしいときにはどうしても使えません(´・_・`)
コレぐらいのとても小さい問題ならいいっすけどね…

ちなみにキューをFIFOで使って"幅"優先探索すると11分かかったのでそこは間違えないようにしましょう(´・_・`)


そこで高速化するために枝刈りを行います(´・_・`)
どう見てもこれ以上進んでもダメだ〜〜という場合にそれ以上先を考えないというやつですね(´・_・`)
今回枝刈りにはLakeCountingという有名(?)な問題を使ってみました。

LakeCountingというのは次のような問題です(´・_・`)



で、この問題をどのように応用したのかというと、
一筆書きできる➔道が2つに分かれていない
ということを利用します(´・_・`)

LakeCountingでは周囲8マスを見たわけですが、今回はそれを上下左右4マスのみ見るようにして、道を湖と見立てて分断されていないかどうかを調べるわけです。
道が分断されていればその時点で探索をやめていいわけですね。

LakeCountingの計算量は要素数をNとしてO(N)なわけなんですが、一筆書きの解を得るアルゴリズムはO(N4)ですからLakeCountingをいちいちやっていても大した計算にはなりません。


結果(^o^)丿


早い!!!!!
よく計れないレベルまで早くすることができました。

Search関数の呼び出し回数も測ってみました。



枝刈りって重要ですね〜〜
これなら安心して考えるより高速に問題を解くことができます。

と、いうことで脳トレを台無しにしてみよう!というお話でした。おしまい。
ぷるるん、やってみてください。


狙っているVOXUPがなかなかハードできないのでどういう呼吸法を使えばいいのか誰か教えてください…