せかいや

いまいるここを、おもしろく http://sekai-in-the-box.appspot.com/

【Ruby】【アルゴリズム】ガーベッジコレクションの実装。不正な状態遷移を見つける。ダイクストラ法。

「有限オートマトン」についてググっていたときに面白そうな問題を見つけたよ。 有限オートマトンとは関係ない話だけれど、勉強になりそうなのでチャレンジ。 (注) メモリに配慮した実装方法はこちら。 (10月9日追記) 問題 状態、'0'および、'A'~'I'に…

【Ruby】【アルゴリズム】有限オートマトンとは?宣教師と人食い問題(全列挙型Ver) ※だめな解法

字句解析・構文解析くらい知ろうねと言う師匠に、数式解析できたよーってメールしたら、返事が来たよ。 数式解析は最初の題材にはちょうど良かったね。 字句解析は有限オートマトンでやって 構文解析はプッシュダウン・オートマトンってのでやることが多いで…

【Ruby】【アルゴリズム】Rubyの補数とは。グレイコード。

Rubyにて、補数がよく分からなかったので整理。 printf "%b" , -0b110 #<= '..1010' どうしてこの結果になるかというと、 110の2の補数は1010 だから。 110 のビットを反転して001→ 1をたして010→ 左側に無限の1を加えて..1010 そっか。 0b110 は0b110の2の…

【Ruby】【アルゴリズム】数式解析(字句解析・構文解析)。右結合あり。操車場アルゴリズム

スタックの勉強をしたときから気になっている、 XMLパーサーの実装(Hamlとか)にチャレンジしてみようと。 まずは高らかに宣戦布告(師匠に)。 今日はパーサーを作ります!!! あら、、、 パーサーの作り方はどっかで調べたの?う。。。 調べてもあんまり…

【Ruby】【アルゴリズム】ハノイの塔 /モンテカルロ法

ハノイの塔 こんなにシンプルに書けるのね! def hanoi(n, start, goal, tmp) return if n == 0 hanoi(n-1, start, tmp, goal) p "move #{n} to #{goal}" hanoi(n-1, tmp, goal, start) end hanoi(3, "A", "B", "C")ビット演算の練習を兼ねて、グレイコード…

【Ruby】【アルゴリズム】ビット演算。掛け算しないで掛け算する。

掛け算・べき乗をビット演算で行っているサイトがあったので勉強。 掛け算を一回もしない掛け算 def shift_multi(x, y) m = 0 while x != 1 if x.even? y = (y << 1) # * 2 x = (x >> 1) # / 2 else m += y x -= 1 end end y += m end p shift_multi(15,3) …

【Ruby】【アルゴリズム】ビットカウント。最下位の1を倒していくVer。ループしないVer。

このサイトを参考に、 ビット演算の奥深さを勉強中。 レジスタ中の 1 になっているビット数を数えるアルゴリズム 最下位の1を倒していく def numofbits3 bits num = 0 while bits != 0 do num += 1 if (bits & (bits-1)) bits = bits & (bits-1) end num end…

【Ruby】【アルゴリズム】Rubyの最上位ビットはどこ? ビットカウントテーブルを使ってビットカウントの巻。

このサイトを参考に、 ビット演算の奥深さを勉強中。 レジスタ中の 1 になっているビット数を数えるアルゴリズム 今回はビットカウントテーブルを使う方法です。 Rubyでのビット符号って? Rubyの最上位ビット(MSB)はどこ? 右シフトは、符号ビット(最上位ビ…

【Ruby】【アルゴリズム】バックトラックはややこしい。 川渡り問題(リファクタリング後)

川渡りが解けたよーって師匠にメールしたら おれも解いてみました 1時間くらいかな、ちょっと時間かかったってメールが来た。むきー! このサンプルを参考にブラッシュアップ。以前のコードはこちら 改善ポイント 状態遷移図をビット化する @_members = ["da…

【Ruby】【アルゴリズム】重複を含む要素の順列(非数値もOK)

重複を含む順列 重複を含む要素のすべての順列を求める(例) "3331"→1333,3133,3313,3331 "aab"→aab,aba,baa たとえば "aabb" だったら4!/(2!*2!) で6通り。 コードで書くとこういう感じ。 使った要素はフラグを立てて、使っていない要素を配列につめていく…

【Ruby】【アルゴリズム】ビット演算。1 になっているビット数を数える。

ビット演算・・ってアルゴリズムを考える上で便利かも。 と思って勉強してみる。このサイトが、 どういうときにビット演算を使うと便利なのか、 が分かりやすく書いてあって面白かったです。 記念すべき1問目 レジスタ中の 1 になっているビット数を数えるアル…

【Java】パーフェクトJava学習感想文 まとめ

パーフェクトJavaを読みおわったよ。 パーフェクトJava (PERFECT SERIES) (PERFECT SERIES 2)作者: アリエル・ネットワーク株式会社,井上誠一郎,永井雅人,松山智大出版社/メーカー: 技術評論社発売日: 2009/09/24メディア: 大型本購入: 26人 クリック: 360回…

【Java】JSPコンパイルのタイミング パーフェクトJava学習感想文 その7

パーフェクトJavaを読んで改めてJavaを振り返り中。 経緯については学習記録その1をご参照ください。以下、学んだこと。 リフレクションは単なるAPI 例えばアノテーションは言語仕様だけれど リフレクションは「仕様」という範疇ではない。 Java言語仕様に…

【Webデザイン】 【jQuery】友達のサイトを作ったよ

お友達が個展を開くので、 そのサイトを作ったよ。完成したサイトはこちら岡山県で遠いけれど、近くの方は是非! 私もこの勉強期間が終わっていたら。。いきたい。 石井さんの要件 そんなに凝らなくてもいい 字体は明朝ざっくり!以下、作業中に学んだことな…

【Ruby】【アルゴリズム】川渡り問題(深さ優先検索Ver)

今日の二丁目はちび専ガッちびナイトかー。orz 川渡り問題とは 男と3つの荷物--キツネ(狐),ガチョウ(鵞鳥),トウモロコシ(玉蜀黍)1袋--のうちの1つしか運べません。キツネとガチョウまたはガチョウとトウモロコシをいっしょにしておくことはできませ…

【Java】「String.class」はリテラル記法。クラスメソッドのレシーバーって? パーフェクトJava学習感想文 その7

パーフェクトJavaを読んで改めてJavaを振り返り中。 え?我が家の育児ですか? 基本セルフサービスかな。この母親自体も言語獲得に必死なので、 子供というよりもはや同志の感があります。。 経緯については学習記録その1をご参照ください。以下、学んだこ…

【Java】 64ビット変数とスレッドセーフの関係性って? パーフェクトJava学習感想文 その6

パーフェクトJavaを読んで改めてJavaを振り返り中。 経緯については学習記録その1をご参照ください。以下、学んだこと。 オンデマンドインポートはなぜ良くないか オンデマンドインポートって、 アスタリスクでフォルダ内全てのクラスをインポートするあれ…

【Java】フィールドの型解決はコンパイルのタイミング。 パーフェクトJava学習感想文 余談

apparent type で決まるメソッドボディて なんやろうかと、疑問に思った次第っすという師匠の疑問に答えるべく、 メソッドの話ではなくて、フィールド参照時は 変数の宣言クラスによって型が解決されているという話ですね、と記事を書いたらお返事が来た。こ…

【Java】Hoge.thisってなんだ? パーフェクトJava学習感想文 その5

パーフェクトJavaを読んで改めてJavaを振り返り中。 経緯については学習記録その1をご参照ください。以下、学んだこと。 Hoge.thisってなんだ? synchronizedの章で出てきた一節。thisって、レシーバーだな、 くらいの認識しかなかったので改めて確認してみ…

【Java】隠蔽とオーバーロードの違い、詳しく。 パーフェクトJava学習感想文 余談

隠蔽とオーバーロードの違いについて書いたら、師匠からメールがきたよ。 つっこみやなくて、質問なんですが 呼ばれるメソッドの実体は、 隠蔽時:変数の型で決まる オーバーライド時:オブジェクトの型で決まる この隠蔽時ってなんですか? ちなみに、変数…

【Java】「式」と「文」と「式文」と。 パーフェクトJava学習感想文 その5

パーフェクトJavaを読んで改めてJavaを振り返り中。眠い。経緯については学習記録その1をご参照ください。以下、学んだこと。 文・式とは 文とは(特徴) 単独で完結する言語要素 文の種類 制御文 ブロック文 宣言文 式文(空文を含む) このうち終端にセミ…

【Java】Javaでの「関数渡し」の実現方法。 パーフェクトJava学習感想文 その4

パーフェクトJavaを読んで改めてJavaを振り返り中。パーフェクトPHP ⇒0.5キロ減 パーフェクトRuby ⇒2キロ減 今度は何キロ痩せるかな。子供を産んでも体重が変わらなかった私からすると、 「体重が落ちる」なんて、かつてない経験。。 経緯については学習記録…

【Java】すべてのクラスは対応するClassオブジェクトをもつ

昨日書いた記事の中でも オブジェクトと変数の違い、 クラスはオブジェクトじゃない、 について師匠からつっこみがあったので、修正したよ。ていうか最初のメールが Javaの再勉強ですか 今度は吐かないようにね。 ちなみにツッコミとかあったら、また吐いち…

【Java】「実装」と「振る舞い」の違い。クラスはオブジェクトではない。 パーフェクトJava学習感想文 その3

パーフェクトJavaを読んで改めてJavaを振り返り中。息も絶え絶えです。経緯については学習記録その1をご参照ください。以下、学んだこと。 「実装」と「振る舞い」の違い 「実装」と「振る舞い」は別の概念。 共通した振る舞いのことを「型」と呼ぶ。こうや…

【Java】リテラル・参照・文字列オブジェクト パーフェクトJava学習感想文 その2

パーフェクトJavaを読んで改めてJavaを振り返り中。息も絶え絶えです。経緯については学習記録その1をご参照ください。以下、学んだこと。 Stringオブジェクトと文字列リテラル 文字列リテラルはStringオブジェクト = Stringクラスのインスタンス。 言い換…

【Java】改めてJavaを振り返る。パーフェクトJava学習感想文 その1

インタプリタ言語に触れて約1ヶ月くらいがたちました。勉強していて常々感じているは 「これってJavaだとどうなってたっけ?」 ということ。 入社以来Javaを触って約5年。 ※まあSIerなのでコード量なんてたかが知れていると思いますが。他言語を知った上で、…

【Git】fetchコマンドは引数にトピックブランチを取らない

ずいぶん嵌ったので、備忘録をかねて。 fetchコマンドは引数にトピックブランチを取らない! 用語の整理 まずは用語の整理から。 トピックブランチ (ローカルにある通常のブランチ) 追跡ブランチ(ローカルにある追跡ブランチ) リモートブランチ(リモー…

【Ruby】【アルゴリズム】グラフ構造。最短経路を求める。ダイクストラ法(うそものVer)。

宣言通り、1週間で終わりました↓ プログラミングの宝箱 アルゴリズムとデータ構造 第2版作者: 紀平拓男,春日伸弥出版社/メーカー: ソフトバンククリエイティブ発売日: 2011/03/30メディア: 単行本購入: 15人 クリック: 255回この商品を含むブログ (31件) を…

【Ruby】【アルゴリズム】10パズルを解く。ファイナルアンサー。回答全部入り。

振り返り。テンパズルとは。 1から9までの、1桁の数字がかかれたカードが4枚ある。 この数字をそれぞれ1回ずつ使い、10になるように計算する。 あれです。 駅の切符とか、ナンバープレートとかで暇つぶしにやるあれ。 方法 1.計算順序を考えるのは大変なの…

【Ruby】【アルゴリズム】10パズルを解く。全ての数式を逆ポーランドで作る編

4桁の数字から全ての数式のパターンを列挙する。 数式は逆ポーランド記法で記述する。 (例)"12+3+4+" すごい!30分で書けた! もう再帰は見切ったぞ。 ・dupでコピーをとりながら再帰を回す(必要に応じて深いコピー) ・終了条件を満たしたものをresult配列…