Programming

プログラミングの問題を作る時に考えること

先日のオフラインリアルタイムどう書くで初めて問題を出したところ、解く側で参加する時には考えなかったことを色々と考えて面白かったので、せっかくなのでまとめておきます。 オフラインリアルタイムどう書くとは 皆で共通のお題を好きなプログラミング言…

8つのボール問題、さらに書き直し(JavaScript手習い)

あなたは8つの同じサイズのボールを持っています http://d.hatena.ne.jp/torazuka/20130626/balls 8つのボール問題、書き直し http://d.hatena.ne.jp/torazuka/20130626/balls2 上の続き。次の指摘をもらって、手直ししました。ありがとうございます。 プロ…

あなたは8つの同じサイズのボールを持っています(JavaScript手習い)

Twitterを見ていたら次の問題が流れてきました。元ページを探したら消えていたので、下記は又引きです。 16. You have eight balls all of the same size. 7 of them weigh the same, and one of them weighs slightly more. How can you find the ball that…

8つのボール問題、書き直し(JavaScript手習い)

先ほどの解答(http://d.hatena.ne.jp/torazuka/20130626/balls)を書き直します。 配列Xを配列a, b, cに分割するイディオムを知りたい 単なるArray.sliceでいいのでは、と気づいて書いてみましたが、エラーになってしまいました。 slice(start, end+1)すべ…

インデックス作成とランキング (c.f.『世界でもっとも強力な9のアルゴリズム』)

書籍『世界でもっとも強力な9のアルゴリズム』の1つ目のアルゴリズムの章をチラ見しました。解説に使われた例が、どう書くの問題みたいだなぁと思ったので、試しにJavaで書いてみました。世界でもっとも強力な9のアルゴリズム作者: ジョン・マコーミック,長…

Enumを使って処理を分ける(c.f.第3回オフラインリアルタイムどう書くの参考問題)

第9回のどう書くの問題のおかげで気づきましたが、EnumのstaticメソッドのvalueOfはベンリですね!文字を与えてEnumの値を取ってくるだけの基本的なメソッドです。なにをいまさらという感じですが……。このメソッドを使えば、入力文字(char)による処理の振…

ドラクエVIIのバロックタワーのパズルを解く

※この記事にはドラクエVIIのネタバレがあります。ご注意ください。最近はせっせとドラクエVIIをやっています。今夜も帰宅してから遊んでいたところ、バロックタワー内部のパズルでハマってしまいました。というわけで、( ゚∀゚)o彡°DDD! DDD! (ドラクエ駆動開…

続: MVC

疑問メモ: MVC(http://d.hatena.ne.jp/torazuka/20121213/mvc)の続き。身内から「ナーバスナイーブなコードでMVCを組み立てようとしたところで何の意味もねーぞ」と諭されて、考えることをほぼ諦めつつも、一応書き直しました。 https://gist.github.com/4…

疑問メモ: MVC

( ゚∀゚)o彡°MVC! MVC!MVC2じゃなくて、MVC。年末ということで家の本を整理していたら、2009年のWicket本が出てきました。見ると、MVCの解説が載っています。最も単純な形だとこれはどう書くんだろう、いまだによく分からないよ…と思い、書いてみました。 MV…

覚書き: nullチェックが不要なコードを書く

Javaを使っているくせにあちこちでnullチェックをしていたところ、ヲイコラといわれてしまったのでメモです。(ご指摘ありがとうございます)nullが入ってくるようなコードを書かない、が大原則だそうです。理由は、安全のため。 nullで初期化しない null以…

RubyのinjectみたいなメソッドをJavaでどう書く

こうかな。苦しいな。誰か教えてくださり。総称型を使えばもうちょいそれらしく(?)なるんかも。 import static org.junit.Assert.assertEquals; import org.junit.Test; public class Inject { interface Proc { int execute(final int n, final int m); …

四則演算をするスタックマシン(更新版)

先日書いたスタックマシンちゃんを少し修正しました。 (前回の日記)四則演算をするスタックマシン http://d.hatena.ne.jp/torazuka/20120829/stackmachine ちょっとした改良をするだけのつもりでしたが、恥ずかしいミスを見つけたので、メモを残すことにし…

四則演算をするスタックマシン

さくらばさんのマカロンスタックの写真を見ていて、ふと書きたくなったので。逆ポーランド記法を入力として四則演算を行い、結果を返します。(追記: 2012/9/6) この記事のコードには、誤りが2箇所あります(1:除算のオペランドが逆、2:テストデータは"14+3…

「第一回 オフラインリアルタイムどう書く」へなちょこ解答(Java)

金曜の夜に「第一回 オフラインリアルタイムどう書く」へ行ってきました。出題された問題を好きなプログラミング言語で好きなように書いて解く会です。問題は、鍋谷さんが作成してくれました。今回は三目並べです! 問題 http://nabetani.sakura.ne.jp/hena/…

鍋谷さんの参考問題: へなちょこ解答(Java)

鍋谷さんのオフラインリアルタイムどう書くに参加したいなーと思って、試しに参考問題をJavaで解いてみました。問題はこちら。http://qiita.com/items/cbc3af152ee3f50a822f package sample; import java.util.ArrayList; import java.util.List; class Card…

オブジェクトの種類

役割で分類したオブジェクトの種類とその性質に基づく考慮点について、もう少し考えていきたいなーと思ったので、備忘メモです。 多様なオブジェクト オブジェクト指向言語を学んだ時、「オブジェクトとはデータと振る舞いを持つものだ」というような解説を…

ひなた先生が教えるデバッグが256倍速くなるテクニック

読みました。ひなた先生が教えるデバッグが256倍速くなるテクニック (Software Design Books)作者: やねうらお出版社/メーカー: 技術評論社発売日: 2008/11/14メディア: 単行本(ソフトカバー)購入: 20人 クリック: 287回この商品を含むブログ (50件) を見…

ストラウストラップのプログラミング入門(26) 17章「ベクタとフリーストア」

『ストラウストラップのプログラミング入門』を読む。第17章「ベクタとフリーストア」です。この章から、第3部「データとアルゴリズム」に入りました。17〜19章では、ポインタを理解するために、vectorを再実装していきます。 読書メモ ポインタ 次の表は、…

メモ: リンクで構成されたリストへの要素追加 via 鈍器

『ストラウストラップのプログラミング入門』の17章を読んでいたら、ポインタで構成されたLinkのデータ構造が出てきました。双方向リンクドリストを作って、要素を追加しているようですが、ん・・? んんん?算数は苦手なので、絵で理解します。(17.9.3)ふ…

ストラウストラップのプログラミング入門(25) 16章「GUI」

『ストラウストラップのプログラミング入門』を読む。今日は第16章「GUI」。12章から始まったグラフィックス話の最後の章です。ウィンドウにボタンやテキストボックスなどのウィジェットを貼り付ける話や、コールバックの説明が登場します。それにしても、「…

ストラウストラップのプログラミング入門(24) 15章「関数とデータのグラフ化」

『ストラウストラップのプログラミング入門』を読む。今日は第15章「単純な関数のグラフ化」です。オーバーライドに関する理解は保留中ですが、先に進むことにしました。15章では、シンプルなグラフを色々描画します。 ここで示すグラフィックス機能よりも、…

ストラウストラップのプログラミング入門(22) 第14章「グラフィックスクラスの設計」

『ストラウストラップのプログラミング入門』を読む。今日は14章「グラフィックスクラスの設計」です。14章はとても面白かったです。特に、14.4「オブジェクト指向プログラミングの利点」は、章のハイライトです。余白のアイコンの量からも、この節の濃さが…

ストラウストラップのプログラミング入門(21) 第13章「グラフィックスクラス」

『ストラウストラップのプログラミング入門』を読む。今日は第13章「グラフィックスクラス」です。12〜16章では、著者が作成したインタフェースクラス(ライブラリのラッパー)を介して、FLTKライブラリを使います。13章は、インタフェースクラスの設計の解…

ストラウストラップのプログラミング入門(20) 第12章とドリル

『ストラウストラップのプログラミング入門』を読む。今日は、第12章「表示モデル」まで。この本では、12章から16章までの150ページ以上が、グラフィックスの話題に割かれています。何だか気合が入ってますね。(しかし、分母が1100ページ超であることを考え…

ストラウストラップのプログラミング入門(15) 第7章とドリル

『ストラウストラップのプログラミング入門』を読む。今日は7章の最後まで。ドリルもやった。 7章ドリル https://gist.github.com/1216579 7章の終わりまで一度読んだ後、再び6章の頭から(今度は写経しつつ)読むというヒマなことをやっていたら、時間がか…

ストラウストラップのプログラミング入門(14) 第6章ドリル

『ストラウストラップのプログラミング入門』を読む。今日は、第6章ドリルと第7章の7.2まで。今さらながら説明すると、この本(愛称:鈍器)の第6章と第7章では、電卓のプログラムを作っています。まず、計算式の文法を定義し、その後、文法に対応するコード…

ストラウストラップのプログラミング入門(13) 第6章つづき

『ストラウストラップのプログラミング入門』を読む。今日は6章の最後まで。ドリルはまだ。「(師匠)で、C++書けるようになったん?(ニヨニヨ)」鈍器本を最後まで読んでもC++を書けるようにはなりませんっ。いわば実装の話に特化した『Code Complete』ですよ…

ストラウストラップのプログラミング入門(12) 第6章

『ストラウストラップのプログラミング入門』を読む。今日は第6章の6.6まで。6.5.1で「?」となって、挫折するかと思った。次の文法をコードに落とす解説で、話についていけなくなった。 Expression: Term Expression "+" Term Expression "-" Term Term: Pr…

コーディングルールに関する余談

ところで、宗教上の理由によりswitch文を使うことができないのですが、他の人が書いたCのコードを読んでいると、gdgdいわずに使うべきかという気がしてきます。他にも、「ifブロックの中身がたとえ1行でも中括弧を省略してはならない」という戒律もあり、生…

「ふつ☆りな」第6章の練習問題(1)続々

飽きたので答え見ました。\(^o^)/解答例が本に見つからないと前に書きましたが、著者のWebサイトからサンプルコードをダウンロードできる形式でした。 問題 タブ文字('\t')を「\t」、改行を「'$'+改行」として出力するcatコマンドを書きなさい。 解答例…