問題3.4

ハノイの塔。懐かしい。 某国営放送N○Kの入社試験で出題された記憶。笑。 学生時代からテレビ無かったので、面接で好きなテレビ番組聞かれて答えられずに落ちました^ ^; 問題古典的なハノイの塔の問題では、3つの塔とN枚のサイズの異なる円盤を用いて塔の間…

問題3.5

頭の体操って感じ。老人のボケ防止に、これ位の簡単なアルゴリズムの問題っていいと思う。笑。 問題MyQueueというクラス名で、2つのスタックを用いてキューを実装してください。 #encoding: utf-8 class MyQueue(): ''' 2つのスタックで構成されるキュー。 >…

第4章 問題の再現

デバッグするには、まず問題の再現が必要ってことを、3章より掘り下げて書いた章ですね。 目次 4.1 デバッグの最初の作業 4.2 問題環境の再現 4.3 プログラム実行の再現 4.3.1 データの再現 4.3.2 ユーザの対話操作の再現 4.3.3 コミュニケーションの再現 4…

第3章 プログラムを失敗させる

問題が発生したら、以下に挙げるように何度も同じテストの実施が必要です。 何度も実施するんだから、デバッグ用テスト自動化しておきましょうねって話。 (本書では、未知の問題の検出を目的としたものを妥当性確認テスト、 既知の問題の発見を目的としたも…

第2章 問題の管理

発生した障害や、テスト中に見つかった問題は、ちゃんんと管理してトラッキングしましょうって話。 ポイントは「障害報告」の書き方。 問題を再現するために必要かつ十分な情報を書くこと。情報が少ないと再現出来ないし、 かと言って情報過多だと、データベ…

Vmail

Vim Advent Calendar 2012 の 25 日目の記事です。 これ、参加=記事を書くってことだったんですね。 ちゃんとみてなかったので気づかず、今日連絡もらって気がつきました。。。Vim暦は長いけど、Advent Calenderに書くほど使いこなしてない(- -;;) でもさす…

問題3.3

この辺も簡単ですね。さくさくっと進みます。 問題皿が積み上がっている状況をイメージしてください。もし、高く積み上がり過ぎたら倒れてしまうでしょう。ですから、実生活ではスタックがある領域を越えたとき、新しいスタックを用意することになるでしょう…

第1章

「世界で闘うプログラミング力を鍛える150問」と並行して、こちらも少し読み始めました。 まず1章読んだので、軽くまとめ。 ポイントは"TRAFFIC" T rack : 問題をデータベースに記録する R eproduction : 障害を再現する A utomate : テストケースの自動化…

問題3.2

3章入りました。 最初popのこと考えなかったので簡単かと思いきや、、、ってやつですね。 まぁ最初なんでウォーミングアップ。 問題pushとpopに加えて、最小の要素を返す関数minを持つスタックをどのようにデザインしますか?ただしpush、pop、min関数はすべ…

問題2.7

世界で闘うプログラミング力を鍛える150問 問題集だと、また再帰で解いてますね。 再帰ねー。数学脳じゃないんで、どうも苦手。 はやくこの問題集終わらせて、オライリーの「デバッグの理論と実装」読みたいので、再帰はやりませぬ。 って、まだ問題集130問…

問題2.6

世界で闘うプログラミング力を鍛える150問 今回は解答みないと解けませんでした。 リスト処理でランナーテクニックって定石らしいです。 多分大学で教えてたんだろうね。ほとんど行ってなかったからね。。。 問題循環する連結リストが与えられたとき、循環す…

問題2.5

世界で闘うプログラミング力を鍛える150問 今回は同じ問題を2通りの方法で解いてみました。 1個目が、最初に何も考えずに解いた解法。 2個目が、解答みて再帰使ってたので、そちらを取り入れたもの。 どっちがいいんでしょうねぇ。 たしかに1個目はきれ…

問題2.4

世界で闘うプログラミング力を鍛える150問 昨日呑みに行ったばかりに、せっかく毎日書いてたブログが早速途切れてしまった。 ってか今日も明日も明々後日も呑みなんだけど。師走。。。 問題ある数xが与えられたとき、連結リストの要素を並べ替え、xより小さ…

問題2.3

世界で闘うプログラミング力を鍛える150問 問題自体は簡単。 Pythonのオーバーライドや、doctestのELLIPSISの使い方は多少参考になるかも? ってかこの本、邦訳が悪いのか、たまに質問の意味がわからないですね。 問題単方向連結リストにおいて、中央の要素…

問題2.2

世界で闘うプログラミング力を鍛える150問 夕飯休憩中にもう1問。 テキストだと再帰で解いてますね。 まぁなんとなく分かるけど、再帰って頭こんがらがるんですよね。。。 ってことで地味な方法でやります。 問題単方向連結リストにおいて、末尾から数えてk…

問題2.1

世界で闘うプログラミング力を鍛える150問 昨日、作りながら寝落ちしたので、昼休みに残り完成。 時間切れなので、発展問題は検討すらしてないです。 問題ソートされていない連結リストから、重複する要素を削除するコードを書いてください。 発展問題もし、…

問題1.8

世界で闘うプログラミング力を鍛える150問 これもまぁ解けたけど、面接とかでいきなり解けって言われたら思いつかないかも。 いやー、思った以上に脳が腐ってきてる。笑。 問題片方の文字列が、もう片方の文字列の一部分になっているかどうかを調べるメソッ…

問題1.5

世界で闘うプログラミング力を鍛える150問ちょっと汚いかも。まぁ。。。 問題文字の連続する数を使って基本的な文字列処理圧縮を行うメソッドを実装してください。たとえば、「aabcccccaaa」は「a2b1c5a3」のようにしてください。もし、圧縮変換された文字列…

問題1.7

世界で闘うプログラミング力を鍛える150問 寝る前に一問。 問題MxNの行列について、要素が0であれば、その行と列のすべてを0にするようなアルゴリズムを書いてください。 #encoding: utf-8 def initialize_with_zero(matrix): ''' 引数で受け取ったMxNの行列…

問題1.6

世界で闘うプログラミング力を鍛える150問あー。マトリクスとか、面倒すぎる。 この辺、普段から頭使ってないと、咄嗟に出来ないなー。 Numpy使っちゃいたくなるよね。。。 問題NxNの行列に書かれた、1つのピクセルが4バイト四方の画像があります。その画像…

問題1.4

世界で闘うプログラミング力を鍛える150問はいはい。サクサクっとね。 問題文字列内に出現するすべての空白文字を"%20"で置き換えるメソッドを書いてください。ただし、文字列の後ろには新たに文字を追加するためのスペースが十分にある(バッファのサイズは…

問題1.3

世界で闘うプログラミング力を鍛える150問はい。簡単なんで、どんどん行きましょう。 問題2つの文字列が与えられたとき、片方がもう片方の並び替えになっているかどうかを決定するメソッドを書いてください。 #encoding: utf-8 def is_same_characters(str1,…

問題1.2

世界で闘うプログラミング力を鍛える150問引き続き〜☆ 問題CかC++で、void reverse(char* str)という'\0'終端の文字列を逆に並び替える関数を実装してください。 CかC++って指定されてるけど、相変わらず面倒なのでPythonで行きます。 #encoding: utf-8 def …

問題1.1

世界で闘うプログラミング力を鍛える150問せっかく買ったんで、解きながらブログに載せていきます! これなら手軽にブログ書けるネタになるので、ちょうどいいし。笑。 あ、ちなみに本ではCとC++で実装してますが、 面倒なので基本的にPythonで書いちゃいま…

数値認識 with python-tesseract

PIL(Python Image Library)の導入の続き さて、前回のエントリで画像を読み込んだり、簡単な加工をすることは出来るようになりました! 今回は、私が目的とする画像から数値(と簡単な演算子)を抽出する方法についてです〜。 ターゲット画像はこちら。 このJP…

PIL(Python Image Library)の導入

気がついたら前回のエントリから半年も経っていた・・・。 心を入れ替えてこれからは!一日坊主になりませんように。笑。 ちょいと文字認識のプログラムが必要だったので、その周りのネタ。 以下のリンクを参考にしてます。 ほぼ一緒ですが、OSX環境に最適化…

MAMP環境構築メモ

諸事情にて急遽PHPでとあるウェブサービスを開発しないといけなくなったので、環境構築メモ。 あ、ちなみに私の環境はMac OSX 10.7.2です。今回のトピックは以下の5つ。 その他、Pivotal TrackerやTravis CIや色々あるんだけど、それらは後日。 MAMPでAppach…

ソースコード管理をする(管理者編 新規プロジェクト作成)

Githubネタばかりですが、諸事情にて似たようなネタで再度書きます^ ^; 今回はXCodeではなく、通常のUnix/Linux環境を想定しています。 全体の流れはこんな感じ。 ローカルでブランチ作成 Githubにリポジトリ作成 ローカル・リポジトリをGithubにpush 1. ロ…

XCode+Githubでソースコード管理 (ユーザー編)

先ほどに続き、XCodeとGithubでのソースコード管理です。 ただし今回は、既にGithubにあるプロジェクトを編集したいユーザー用手順^ ^ おおまかな流れは、こんな感じ。 Githubでfork forkしたリポジトリをローカルにclone cloneしたリポジトリでbranchを作成…

XCode+Githubでソースコード管理 (管理者編)

昨日に引き続きGithubネタ。ただし今回はXCode編です。 何気にかなり手間取った^ ^; 今回はまず、ローカルにあるプロジェクトをGithubに上げるとこまで。全体の流れとしては、こんな感じ。 Githubに新規リポジトリを作成 ローカルとGithubに秘密鍵と公開鍵を…