html,cssを学ぶ、幅優先探索で初めてqueue使った
今日は昨日内容が薄かった分濃くなるぞ!
まずUnityのプロジェクトから行こうかな
デザイン変更
入力画面
結果画面その1 handにしかカードがない場合
結果画面その2 boardにもカードがある場合
適当に切ったら端切れた。
フォントをすべて統一した。
中身も大幅に変更した点があって、それは実機テストを行ったときに1分半近くかかってた処理を0.1秒以下にするためのもの。
問題だったのはhandにしかカードがないとき、どの役になるかを計算するのに200万回計算をしてた。
いや、カードを5枚選んだ時それがどの役になるかとかすべて計算してるので1セットにつき20-50くらい計算してるのかな。
すると1億回ぐらい計算することになる。
そりゃ遅いわけや。
それをいかに早くするか考えてたんやけど、まず最初配られた2枚は52C2通りしかない。
いや、もっと少ない。ポーカーにおいては
2ハート 3スペードって手と
2ダイヤモンド 3ハートは同じものとして扱っていい
(最初に配られた時の手札に関して、同じものとしてみていいってこと)
つまり手札にもてる番号の組み合わせと、それぞれが同じ記号なのかそうでないのかを考えればよい。つまり169通りしかない。
じゃあ、その169通りをあらかじめ計算して、どっかに保存しておけばいいやんって思った。C#で配列を宣言するとき、
int numbers [, , ,] = new int[, , , ] {{{ , , , },{ , , , }},{ ......
みたいな形にしたらいいからそういう出力になるようにやらした。
結果は
↑↑↑↑↑↑↑↑↑↑↑↑下のスクロールバーに注目。↑↑↑↑↑↑↑↑↑↑↑↑
1時間計算してもらいました。パソコンありがとう。お疲れ様。
これをscriptにはっ付けたから、今はこのデータを呼び出すだけ。
マジで一瞬。素晴らしい。
ゲームとかダウンロードしたら、追加のダウンロードをして処理を早くしますか、みたいな感じの発想かな。
これをうまくやるのに結構時間がかかった。
うまく行ったのでおっけい。
長くなったけど、次にインターンについて
あるインターンに申し込んだんだが、そこは
未経験者は勉強するものを与えるから200-400時間ぐらいで終わるであろう物をやってきてね。テストもするよ。
ってかんじ。
これはいいチャンスだと思い、始めた。
html,css,ruby,VScode,Javascript,Railsどれも全く触れたことがないので、成長しまくれるやんって思った。
早速html,cssの範囲をどっとインストールで勉強。これが全体の5パーセントくらいの時間かかるらしいけど、2時間で終わった。100時間で終わるかな?
これが作ったもの、初めてのhtmlの範囲をやったことある人は懐かしいかもしれない。
結構簡単で、調べながらならこのブログくらいのものは作れるなって思った。
そういえばなんかはてなブログでもそういうなんいじれたよな。時間があったらのぞいてみよう。
ドットインストールは動画が短くていいね。すごく進んでる気分になる。
次はAtcoderについて
今はABCの昔の問題を解いてるんやけど、幅優先探索 breadth first searchやったっけ。
の問題がCにあったので、手を出してみた。
蟻本の最初のほうに載ってたしできるかなって。
やっぱりインプットだけじゃできない。本を見ながら解いた。
なるほどね。問題演習できるインターネットの教材って特にプログラミングではいいと思う。紙じゃ難しい。
そこで思ったのが 普通x,yのxって左右の値でyが上下やん?
2次元配列で vector[y][x]やったら正しく出るけど、なんかいつもx,yって受験のt子機から使ってるから少しこんがらがった。
x,y使わずに解いたほうがいいのかな。自分だけなのかな。
今日は
Atcoder10問、Unity2時間、ドットインストール2時間、蟻本1時間、VScodeの基本30分をした。
明日は
Atcoder10問、Unity1時間、インターンの勉強1時間、蟻本1時間、が最低目標。