エンジニアのソフトウェア的愛情

または私は如何にして心配するのを止めてプログラムを・愛する・ようになったか

2013-01-01から1年間の記事一覧

30年のソフトウェア的愛情〜または私は如何にして心配するのを止めてプログラマになったか

自分で初めて書いたプログラムは、ノートに書いた10行ほどのBASICのプログラム。 当時、たしかJR-100を持っている友だちがいて、その友だちの家にいってぽちりぽちりとそのプログラムを入力して。 たかだか10行程度のプログラムにもかかわらず、これが思いど…

8x8のビット行列を転置する

C++

@Nabetani さんが主催されてい「オフラインリアルタイムどう書く」のシリーズ。 3月まではオンラインで投稿させてもらっていたのですが、4月以降いろいろと余裕がなくなってしまい、すっかり遠のいてしまっていました。なのですが。なにやら参加のラブコール…

出力不足

ブログがすっかり放置状態の今日この頃。 この11月は少々きつかったのもあるのですが。心身ともにきつかった。身体的にきついのは目に見えてわかったていたのだけれども、ふりかえってみれば精神的にもずいぶんきつかった気がします。昨日は客先に訪問して仕…

テキストファイルをAppleScriptでEvernoteへ

最近になって osascript というコマンドの存在を知りました。 osascript(1) Mac OS X Manual Page と、いうわけで。テキストファイルをEvernoteに送るAppleScriptを書いてみた。ちなみに。shebangに対応しているようで、実行可能なファイルにしておいて1行め…

Filtering, then Mapping

Haskell evenTen = map (\n -> n * 10) . filter even Prelude> evenTen [1,2,3,4,5,6,7,8,9,10] [20,40,60,80,100] Ruby def evenTen(a) a.select{|n| n % 2 == 0}.map{|n| n * 10} end irb(main):004:0> evenTen [1,2,3,4,5,6,7,8,9,10] => [20, 40, 60, 8…

パーサ、なんどでも、なんどでも

昨日のエントリの続き。サブクラスを定義する。 calc.tt grammar Arithmetic rule additive multitive r:( op:[+-] multitive )* <Additive> end rule multitive primary r:( op:[*/%] primary )* <Multitive> end rule primary '(' additive ')' <Parenthesized> / number end rule number '-'? </parenthesized></multitive></additive>…

パーサ、なんどでも

http://treetop.rubyforge.org/index.html https://github.com/nathansobo/treetop calc.tt grammar Arithmetic rule additive multitive r:( op:[+-] multitive )* { def to_i r.elements.reduce(multitive.to_i) do |s, e| s.send(e.op.text_value, e.mult…

N個の要素に分割する・Haskell篇その2、あるいは8つのボール問題・Haskell篇

自主練の覚え書き的なエントリを先日書いたところ、コメントで有用な情報を頂くことができました。ありがとうございます。 畳み込み関数と展開関数 id:nobsun さんからは展開関数の存在を教えて頂きました。 展開関数とは 畳み込み関数と双対となる関数との…

8つのボール問題・CoffeeScript篇

自主練。とにかくまずは手を動かして、自分で書いてみるところから。 お題に使わせてもらいました。 8つのボール問題、さらに書き直し(JavaScript手習い) - 虎塚 CoffeeScriptはシンタックスハイライト効かねぇ…。 _ = require './lib/underscore-min.js' …

N個の要素に分割する・Ruby篇

昨日やったことをRubyでも。 実は(ry こんな感じで実装してみた。もうちょとすっきりするんぢゃないだろうか、というモヤモヤした感じが残る。 あと。これはString特化の実装。配列のばあいは別の方法が必要。 コードはGitHubにも置いてあります。 class Str…

N個の要素に分割する・Haskell篇

昨日やったことをHaskellでも。 実は。このやりかただとヨクナイ結果になることがあるのがわかっているのだけれども。そこは今はちょっと保留ということでご勘弁を。あとでおさらいする予定です。昨日のC++のコード自体にも不備があるし…。 ま。それはそれと…

N個の要素に分割する

C++

文字列とか配列とかを指定した個数に分割するもの。 あとで使う予定。まずは道具を研ぐのが主義。 最後の要素は端数になります。 まずはC++で。 イテレータのヴェクタを返します。分割したあとのm番目の要素の開始位置と終了位置がヴェクタの要素のm番目とm+…

プログラミング体力

なかば「最低ひと月に1エントリ」の義務感で書いているようなところがあります。4月に会社を移って新しい仕事についたわけですが。 このときに体調の変動にもっと気を配っていればよかったのですが、新しい仕事にかかわっているという興奮と、早く新しい会社…

自分ではどうにもならないときもある

故あって。いろいろ滞ってます。 4月以降(その前段階を考えると3月以降か)、プライベートでいろいろありました。今もいろいろ進行中。 別段伏せておくようなことではないのだけれども、モノゴトの整理がついていないので、いつかまた書きたくなったときに…

「Railsに挑む」から「Railsで挑む」へ

ゆえあって。Railsの勉強をしています。使っている教材はこれ。勉強の記録を、もうひとつのブログ「エンジニアのソフトウェア的愛情」に記録しています*1。「Railsに挑む」と題して記録してみた一週間。学習を続けていく過程でだんだんと湧いてきたのが「Rai…

エントロピー符号をステートマシンで解く

お題。 オフラインリアルタイムどう書く第8回の参考問題 - Qiita この問題は、名前が示す通り、エントロピー符号で符号化されています。 エントロピー符号 - Wikipedia と、いうことは。一定の手順を踏むことで復号が可能ということになります。 と、いうこ…

プログラミングの攻めと守り

周回遅れ。すでに第9回の参考問題が出題されているという状況で第8回の参考問題を解くという。 オフラインリアルタイムどう書く第8回の参考問題 - Qiita 以下、コード。コードの全体はGitHubに格納しています。 #include <iostream> #include <sstream> #include <string> static const </string></sstream></iostream>…

バロックタワーのパズルを解く(演算で)

ドラクエVIIのバロックタワーのパズルを解く - 虎塚 じーっと、内容を眺めて。「演算で解けそう」と感じたので、やってみた。 いつものように。あんまり厳密ではないです。と、最初に言い訳。 パズルの内容と数値との対応はこんな感じ。 像の番号: 上=0, 右=…

バックトラッキング、C++で、Prologも、Haskellでも

「第7回オフラインリアルタイムどう書くの問題」を解いていて気がついたこと、学んだことを明日のじぶんのために、記録。 のんびり座りたい 〜 横へな 2013.2.2 いろいろ問題をコネているうちに、この問題はパタンマッチングで解けることに気がつきました。…

問題を解く難しさ、問題を作る難しさ

難しさで言ったら圧倒的に、 問題を解く < 問題を作る なわけで。 ソフトウェア開発の難しさのうちのかなりの部分が、じつはこの問題を作る難しさに起因しているじゃないかと。 仕事でソフトウェア開発をしていても、「これ、解く問題を間違えてるんじゃな…

2点を対角の頂点とする矩形の内側の点を判別せよ

「オフラインリアルタイムどう書く第6回の参考問題 - Qiita」は前回一度解いていますが、別の方法――対象となる点をすべて数え上げるという方法で解く場合のお話。この問題では判定が必要な点の個数は10×10のたかだか100とわかっているので、こういう力技法で…