Union Find木
互いに素な集合 Union Find| データ構造ライブラリ | Aizu Online Judge
B: Union Find - AtCoder Typical Contest 001 | AtCoder
蟻本を読んでてわからなかったので、いろいろググったら、やっと簡易版がわかるようになった。
蟻本のpar[x] = Xの所は何を示しているのかというと、par[x]のxは要素そのものであるのに対して、Xは所属グループ・・・つまりノードの親を示している。
簡単な例を書くと、初期化したものは以下のようになる。
par[0] = 0, par[1] = 1, par[2] = 2
rank[0] = 0, rank[1] = 0, rank[2] = 0
初期値の場合、すべてが根になる par[x] == xが根の条件になるので。
ここから、x =0, y=1として結合させると、x = root(0) = 0, y = root(1) = 1となり、par[y=1] = (x=0)となるため、 par[1] = 0となり、要素1は要素0を根とするグループに所属することになる。イメージ:(0) → (1)
root(1)を求めると、root(1) = 0となるため、次のステップでroot(0) = 0となり、1の根が0であることを示している。
x=1, y=2でもう一回結合すると、par[2] = 0となるので、要素2も要素0に所属することになり、ノードは (1) ← (0) → (2) となる。
・・・なるほどね、よくできている。これを考えた人はすごいな。
とりあえず簡易版は理解できたので、次は下のリンク先のものを勉強するとします。
Union-Find木の参考になるサイトと例題 - ゆらのふなびと
EvernoteからOnenoteへの移行
エバーノートが終わりかもしれん 無料版は同期2台までに制限で値上げ [無断転載禁止]©2ch.net
evernoteのベーシックが制限かかる上にプレミアム値上げとか、まじかよ・・・。
自分のG-Mailに上のお知らせが来てたので、調べてみると、すでに何人かはEvernoteからMSのOnenoteに移籍済みらしい。
自分はとくに生活ログとかではなく、記事の保存目的でしかevernoteを使っていなかったので、これを機にOnenoteへ移籍しようと決めました。
しかし、OnenoteはEvernoteをインポートする機能がちゃんとあるのね。
MSはevernoteも買収する気なのかなあ。
インポート方法はこれ
自分の麻雀スタイルの経緯と変移
麻雀ネタについて少し書いてみる。
自分の麻雀歴はけっこう長くて、かれこれはじめて牌を触って10年近くなります。
そのほとんどを天鳳というネット麻雀で過ごしているため、あまりリアルの牌には慣れていないが、初期の鳳凰卓に到達した経験もあるので、それなりの水準では打てるレベルかなと。
現時点では、天鳳はほぼ引退に近い状態で、リアル、天鳳でも身内でセットをするくらいのレベル。
ただ、天鳳でバリバリ打ってた時期よりも、今の方が強いという自負はあります。
けっこう前置きが長くなったけど、そろそろ本題へ突入する。
そもそもデジタル打ちってなんぞや?って話ですが、自分は以下のような条件を満たす打ち手をデジタル打ちと読んでいます。べつに悪意があって呼んでいるわけではないので、悪しからず。
1.ベースに、確率的に優位な選択をし続けることという考えがある
2.聴牌すれば、ほぼぜんぶ先制リーチを打つ
3.シャンテン数を落とすような打ち方は基本的にしない。のみ手でも聴牌を取りにいく
4.リーチに対しては、完全に降りるかぜんぶ突っ張るかの2つしか判断基準を持たない
上のような打ち手はネット麻雀ではかなり多く、僕が天鳳で現役のときはそれが正義とされていました
今でも最強最速みたいな戦術本がけっこう出版されたりしているので、まだまだ上に書いたような戦術は有用であると考えている打ち手は多いでしょう。
しかし、デジタル打ちはブレが少ないという大きねメリットがある反面、欠点もあります。
昔は自分もデジタル打ちだったけど、このスタイルに限界を感じたため、赤無しと雀鬼流の打法を取り入れ、複合スタイルに変更した経緯があります。改造した結果、少しラス率が増えたけど、トップ率を大きく伸ばすことに成功しました。
改善できた点を大きく3つ挙げると、
「手役をつけるのがうまくなった」
「放銃を嫌う癖が抜けた」
「読みの精度があがった」
という感じかなと。
次回からは、上の3つについて1つずつ文章化していきます。
次回の記事タイトルは、「麻雀力が絶対にあがる3つの考え方」とかいうタイトルにしてみようかしら。
今更ながらアジャイル開発について学ぶ
メモがわりとして。
XP(Extreme Programming)は聞いたことあったし、イメージも漠然と持ってはいたけど、いくつかの資料を読むことで、けっこうスッキリした。
グラス片手にアジャイル開発 第2回 - アジャイルの主な実践手法とその取捨選択 (2/3):CodeZine(コードジン)
いまさら聞けないTDD/BDD超入門(1):テスト駆動開発/振る舞い駆動開発を始めるための基礎知識 (1/3) - @IT
7つのアジャイル開発手法の実践ガイド(第1回) (1/3):CodeZine(コードジン)
成長と課題発見能力の関連性
上達が早い人っていうのは、わりと課題発見能力が高い人なんだなーと最近感じる。
あれよこれよと技術力とか知識を身につけていく人は、今はこの知識もしくは技術が足りていないから、この技術を身につければ、もう一段上のステップに進める!っていう目の付け所がよい気がする。
そういう視点って、どこから来るのかなーって見てみると、ロールモデルを見つけることとスキルマップをつくる事をひたすら繰り返してる。
よくグル(師)を見つけることが上達の秘訣だっていうけど、それはまさにロールモデルを見つけることなんだよね。別に師匠を見つけるレベルまではいかなくても、何かしらのコミュニティに属して、そこで自分のロールモデルを見つけることが肝心かなめなわけで。この感覚がわかりにくい人は、部活動を思い出すと比較的すんなり腑に落ちるかもしれない。部活動もけっきょくの所は、はじめは何をしていいかわからない状態から、まずは先輩というロールモデルを見つける場所として機能している(コミュニティに属することで面する様々な人間関があるけど、それはまた別の話として置いておくとして)。まずは真似事から入るのが上達の王道だけど、そのためにはモデルが必要ってこと。
次はスキルマップ。こっちは上に比べると少し難しい気がする。首尾よくモデルを見つけたまではいいけれど、真似をはじめてみると、うまくいかないことが多々でてくる。こういう時、何のスキルが必要で、そのスキルをどんな練習方法で効率的に伸ばせるか。この点がわからないと、ブレイクスルーするまでに多大な時間が必要になる。まず、どの点を練習すれば良いかは、知識の問題。なので、まずは基礎理論を学ぶことで、いまの自分のレベルと上級者のレベルの間にどのくらいの差があるかを知る。そして、そのレベルを埋めるためには何のスキルが必要かを明示化し、そのスキルを身に付けるための練習方法とそこに費やす時間まで作業内容をブレイクダウンしてやる必要がある。ここまでくれば、あとは愚直に練習あるのみで、比較的少ない労力で上達が見込めるとおもう。
最後にモチベーションだけど、自分の理想とする選手の動画を見たり、啓発書を読んだりして維持すればよいのかなあという感じ。仕事なら、報酬として金銭的な対価があるけど、趣味とかってなると、カッコイイとかモテたいとか、そういうモチベでも全然いいんじゃないかなあ。
はじめに
自分のメモ用にブログを書いていくことにした。
むかしもブログを書いていた時期があるけど、PVを狙った・・・なんというか、他人の目を気にながら書いていた感があったので、しばらく書くのを控えていたのだけれど、今回のブログは完全に自分のメモとして書いていこうと思う。
たぶん、毒にも薬にもならないものになるだろうから、とくにコメントなんかがつくことの無いはず。
内容は、プログラミング、麻雀、読書感想なんかがメインになるかな。