「有限オートマトン」についてググっていたときに面白そうな問題を見つけたよ。 有限オートマトンとは関係ない話だけれど、勉強になりそうなのでチャレンジ。 (注) メモリに配慮した実装方法はこちら。 (10月9日追記) 問題 状態、'0'および、'A'~'I'に…
字句解析・構文解析くらい知ろうねと言う師匠に、数式解析できたよーってメールしたら、返事が来たよ。 数式解析は最初の題材にはちょうど良かったね。 字句解析は有限オートマトンでやって 構文解析はプッシュダウン・オートマトンってのでやることが多いで…
Rubyにて、補数がよく分からなかったので整理。 printf "%b" , -0b110 #<= '..1010' どうしてこの結果になるかというと、 110の2の補数は1010 だから。 110 のビットを反転して001→ 1をたして010→ 左側に無限の1を加えて..1010 そっか。 0b110 は0b110の2の…
スタックの勉強をしたときから気になっている、 XMLパーサーの実装(Hamlとか)にチャレンジしてみようと。 まずは高らかに宣戦布告(師匠に)。 今日はパーサーを作ります!!! あら、、、 パーサーの作り方はどっかで調べたの?う。。。 調べてもあんまり…
ハノイの塔 こんなにシンプルに書けるのね! 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")ビット演算の練習を兼ねて、グレイコード…
掛け算・べき乗をビット演算で行っているサイトがあったので勉強。 掛け算を一回もしない掛け算 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) …
このサイトを参考に、 ビット演算の奥深さを勉強中。 レジスタ中の 1 になっているビット数を数えるアルゴリズム 最下位の1を倒していく def numofbits3 bits num = 0 while bits != 0 do num += 1 if (bits & (bits-1)) bits = bits & (bits-1) end num end…
このサイトを参考に、 ビット演算の奥深さを勉強中。 レジスタ中の 1 になっているビット数を数えるアルゴリズム 今回はビットカウントテーブルを使う方法です。 Rubyでのビット符号って? Rubyの最上位ビット(MSB)はどこ? 右シフトは、符号ビット(最上位ビ…
川渡りが解けたよーって師匠にメールしたら おれも解いてみました 1時間くらいかな、ちょっと時間かかったってメールが来た。むきー! このサンプルを参考にブラッシュアップ。以前のコードはこちら 改善ポイント 状態遷移図をビット化する @_members = ["da…
重複を含む順列 重複を含む要素のすべての順列を求める(例) "3331"→1333,3133,3313,3331 "aab"→aab,aba,baa たとえば "aabb" だったら4!/(2!*2!) で6通り。 コードで書くとこういう感じ。 使った要素はフラグを立てて、使っていない要素を配列につめていく…
ビット演算・・ってアルゴリズムを考える上で便利かも。 と思って勉強してみる。このサイトが、 どういうときにビット演算を使うと便利なのか、 が分かりやすく書いてあって面白かったです。 記念すべき1問目 レジスタ中の 1 になっているビット数を数えるアル…
パーフェクトJavaを読みおわったよ。 パーフェクトJava (PERFECT SERIES) (PERFECT SERIES 2)作者: アリエル・ネットワーク株式会社,井上誠一郎,永井雅人,松山智大出版社/メーカー: 技術評論社発売日: 2009/09/24メディア: 大型本購入: 26人 クリック: 360回…
パーフェクトJavaを読んで改めてJavaを振り返り中。 経緯については学習記録その1をご参照ください。以下、学んだこと。 リフレクションは単なるAPI 例えばアノテーションは言語仕様だけれど リフレクションは「仕様」という範疇ではない。 Java言語仕様に…
お友達が個展を開くので、 そのサイトを作ったよ。完成したサイトはこちら岡山県で遠いけれど、近くの方は是非! 私もこの勉強期間が終わっていたら。。いきたい。 石井さんの要件 そんなに凝らなくてもいい 字体は明朝ざっくり!以下、作業中に学んだことな…
今日の二丁目はちび専ガッちびナイトかー。orz 川渡り問題とは 男と3つの荷物--キツネ(狐),ガチョウ(鵞鳥),トウモロコシ(玉蜀黍)1袋--のうちの1つしか運べません。キツネとガチョウまたはガチョウとトウモロコシをいっしょにしておくことはできませ…
パーフェクトJavaを読んで改めてJavaを振り返り中。 え?我が家の育児ですか? 基本セルフサービスかな。この母親自体も言語獲得に必死なので、 子供というよりもはや同志の感があります。。 経緯については学習記録その1をご参照ください。以下、学んだこ…
パーフェクトJavaを読んで改めてJavaを振り返り中。 経緯については学習記録その1をご参照ください。以下、学んだこと。 オンデマンドインポートはなぜ良くないか オンデマンドインポートって、 アスタリスクでフォルダ内全てのクラスをインポートするあれ…
apparent type で決まるメソッドボディて なんやろうかと、疑問に思った次第っすという師匠の疑問に答えるべく、 メソッドの話ではなくて、フィールド参照時は 変数の宣言クラスによって型が解決されているという話ですね、と記事を書いたらお返事が来た。こ…
パーフェクトJavaを読んで改めてJavaを振り返り中。 経緯については学習記録その1をご参照ください。以下、学んだこと。 Hoge.thisってなんだ? synchronizedの章で出てきた一節。thisって、レシーバーだな、 くらいの認識しかなかったので改めて確認してみ…
隠蔽とオーバーロードの違いについて書いたら、師匠からメールがきたよ。 つっこみやなくて、質問なんですが 呼ばれるメソッドの実体は、 隠蔽時:変数の型で決まる オーバーライド時:オブジェクトの型で決まる この隠蔽時ってなんですか? ちなみに、変数…
パーフェクトJavaを読んで改めてJavaを振り返り中。眠い。経緯については学習記録その1をご参照ください。以下、学んだこと。 文・式とは 文とは(特徴) 単独で完結する言語要素 文の種類 制御文 ブロック文 宣言文 式文(空文を含む) このうち終端にセミ…
パーフェクトJavaを読んで改めてJavaを振り返り中。パーフェクトPHP ⇒0.5キロ減 パーフェクトRuby ⇒2キロ減 今度は何キロ痩せるかな。子供を産んでも体重が変わらなかった私からすると、 「体重が落ちる」なんて、かつてない経験。。 経緯については学習記録…
昨日書いた記事の中でも オブジェクトと変数の違い、 クラスはオブジェクトじゃない、 について師匠からつっこみがあったので、修正したよ。ていうか最初のメールが Javaの再勉強ですか 今度は吐かないようにね。 ちなみにツッコミとかあったら、また吐いち…
パーフェクトJavaを読んで改めてJavaを振り返り中。息も絶え絶えです。経緯については学習記録その1をご参照ください。以下、学んだこと。 「実装」と「振る舞い」の違い 「実装」と「振る舞い」は別の概念。 共通した振る舞いのことを「型」と呼ぶ。こうや…
パーフェクトJavaを読んで改めてJavaを振り返り中。息も絶え絶えです。経緯については学習記録その1をご参照ください。以下、学んだこと。 Stringオブジェクトと文字列リテラル 文字列リテラルはStringオブジェクト = Stringクラスのインスタンス。 言い換…
インタプリタ言語に触れて約1ヶ月くらいがたちました。勉強していて常々感じているは 「これってJavaだとどうなってたっけ?」 ということ。 入社以来Javaを触って約5年。 ※まあSIerなのでコード量なんてたかが知れていると思いますが。他言語を知った上で、…
ずいぶん嵌ったので、備忘録をかねて。 fetchコマンドは引数にトピックブランチを取らない! 用語の整理 まずは用語の整理から。 トピックブランチ (ローカルにある通常のブランチ) 追跡ブランチ(ローカルにある追跡ブランチ) リモートブランチ(リモー…
宣言通り、1週間で終わりました↓ プログラミングの宝箱 アルゴリズムとデータ構造 第2版作者: 紀平拓男,春日伸弥出版社/メーカー: ソフトバンククリエイティブ発売日: 2011/03/30メディア: 単行本購入: 15人 クリック: 255回この商品を含むブログ (31件) を…
振り返り。テンパズルとは。 1から9までの、1桁の数字がかかれたカードが4枚ある。 この数字をそれぞれ1回ずつ使い、10になるように計算する。 あれです。 駅の切符とか、ナンバープレートとかで暇つぶしにやるあれ。 方法 1.計算順序を考えるのは大変なの…
4桁の数字から全ての数式のパターンを列挙する。 数式は逆ポーランド記法で記述する。 (例)"12+3+4+" すごい!30分で書けた! もう再帰は見切ったぞ。 ・dupでコピーをとりながら再帰を回す(必要に応じて深いコピー) ・終了条件を満たしたものをresult配列…