programming

ダイスで組分け・解答例

d:id:Nabetani:20070820#p1 を解くスクリプトを書いてみました。 #!/usr/bin/ruby require 'mathn' # for gcd class Groups < Hash def initialize super(0) self[[0, 0, 0, 0, 0, 0]] = 1 @members=0 end def iterate tmp = self.dup self.clear tmp.each{|…

H-indexを二分探索で求める

ただいまはてブ指数として評判のH指数を求めるプログラムを書く話に便乗してみる。 H指数を求めることは、配列とその添字(1はじまり)を比較して、はじめて要素の値が添字より小さくなるところの境界を求めることに等しい。これは各要素とその添字の大小関係…

日付は年も書け

どんなつまらないメモであっても、日付を記すときには年も記すように心がけるべきだ。そのときは月と日の情報だけで十分でも、何年も経つと、それが「何年の」何月何日かが分からなくなって困るという事態は往々にしてある。読者の皆さんもそれで困ったこと…

一両日FizzBuzzにはまった感想

メモリの一バイトが血の一滴ではなくなった現在、コードゴルフの能力は、残念ながら実務ではあまり必要とされない。時代は可読性。

6nimmt.pl

FizzBuzzの応用を思いついたので記す。 #!/bin/perl use strict; use warnings; sub score($) { my $n = shift; my $score = 0; $score+=2 if $n% 5==0; $score++ if $n%10==0; $score+=5 if $n%11==0; return $score || 1; } for (1..104) { printf "%3d %s…

多段カッコ閉じる

複数個のカッコを略記できるLispの記法があったらいいのに。つまり、 (defun f (n) (cond ((= n 0) 1) (t (* n (f (- n 1))))))を {defun f (n) (cond {= n 0) 1} (t (* n (f (- n 1}と書けるような「{」と「}」があったらいいのに。

むつかしいです

どうにかうまいこと先読みせずに、つまり「失敗→やり直し」という過程を経ることなく、id:Nabetani:20061217#p1を解くプログラムが書けないものかとあれこれやってみたが、理論的に無理っぽい気がしてきた。つまり、 [[a1, a2], [b1, b2], c1]というグループ…

言葉狩りの可能性

「Deaf(聾)に通じちゃうから、defineをdefと略すべきではない」という主張をしている人は実在するか?

ひどいアフォリズムを思いついてしまったので記す

WindowsはOSの進化を10年停滞させたが、UnixはOSの進化を30年停滞させた。

はまちちゃんって性同一性障害?

以下に続く本文は、上記のとても失礼な見出しへの言い訳です。 コンピュータ関連で一定以上深いことをやる人は男性に違いないという先入観は、大抵の人が共有していると思う。しかしこの偏見は、残念ながらかなりの部分まで経験的事実に裏打ちされており、こ…

夢日記

ソースコードのコメント中で「DISる」という言葉をうっかり使ってしまい、同僚に「意味不明」とつっこまれ、コメントを上書きされる。

技術者としての適性がないかも

例えばこのサイトの(一定以上の分量のある)記事を書くにあたって、僕はいつも、 エディタにテキストを書く ブラウザで自分のサイトを呼び出す 「編集」あるいは「日記を書く」ボタンを押して編集画面にする コピー&ペーストによって、エディタから編集画面の…

アルファギークとは言わないまでも、少なくともアルファギークとお近づきになれる存在になりたいならば、自分の持てるリソースのかなりの部分を、自然に技術的な方面に振り向けなければ追いつかないようなのだ。しかし、そうした興味や関心は、どうやら今の…

「名前の衝突」って、計算機科学独特の言い回しだよね。

Railsという名前なのに

Ruby on Railsを鉄道ネタに絡めている人がいそうでいない。Rubyistに鉄ヲタはいないのか??

範囲条件

「xが0から100までの範囲内にある」という条件を書くにあたって、 if (0 のような書き方を許しているプログラミング言語は、僕の知る限りひとつも存在しない。なぜだろう? 必ず if (0 ||&& x のように書かされるのは面倒じゃない?(翌日追記: Pythonでは可能…

Web 2.0時代によく見かけるベタな強調表現

このように、赤字で太字で地の色が黄色で、さらに枠も太目の赤で囲ってあるやつ。

first-class

「JavaScriptでは関数がfirst-classのオブジェクトである」のような文章に登場する「first-class」という言葉は、未だに日本語の定訳が定まっていない言葉であるが、僕はこれの訳語として「一人前」を提案するものである。つまり、冒頭に掲げた文は、「JavaS…

嬉しい悲鳴

きょうびJavaScriptで何を作っても、1ヶ月以内にもっと出来のいいライブラリが出てきやがる。

Yコンビネータとメモ化の分離

よく読み返したら、k.inabaさんは僕が昨日やったのと同等のことをとっくになさっておられた。ので、まだinabaさんもなさっていないと思しきネタで捲土重来を期してみる。あ、言語は、見ての通り、昨日と同じくJavaScriptです。 // いわゆる普通のYコンビネー…

Javascriptによるメモ化機能つきY-combinator

唐突に不動点とか高階関数とかそのへんで遊んでみました。引数の個数に制限がないのが嬉しい感じです。 thx to: http://www.kmonos.net/wlog/52.php http://www.google.co.jp/search?q=y-combinator function Y_memo(f) { var memo = {}; function z(x) { re…

アイデアの発展

ここ数年のWeb技術の発展は、つくづくアイデアの発展なのだな、と思う。だって、既に2000年には、HTTPもPerlも(お望みならばRubyも)JavaScriptもあった。いま世上を賑わせているWebアプリケーション関連のソフトウェアは、きっと5年前に持って行っても動作す…

ダイコン中毒

これは前にもよそで言ったことだが(別に探してこなくともよい)、「依存性の注入」という術語を見聞きするたびに、どうしても覚醒剤か何かを無理やり注射されている人の図像が浮かんでしまってしかたがない。

開発の非効率を「勉強」という名のもとにごまかして良いものか?

本日の妄想

ruby→二次元ヲタ、perl→三次元ヲタ、という消去法からpythonをマイ言語に選択する人。 # 俺は何が楽しくて同業者を敵に回し続けているのだろう……。

ここ数年で急速に頭が悪くなったのか、それとも最初っから自分はクラス設計とかできない人だったのか。たぶん両方なのだろう。

10進数による色表現

上のエントリとちょっとだけ関連するが、スタイルシート中で、色を「rgb(128, 128, 128)」のように表現できることを知った。(常識?) これは使いようによっては、16進数への面倒な変換が不要なので便利そうだ。

いまさらJavaScript勉強中の感想

ひさしぶりに技術者っぽい記事を書く。いま業務でやってるのだ。 関数がfirst classだったり、関数の評価タイミングがあとからだったりするなど、ちょっとだけlispを思わせるところがある。Emacs Lispの関数を書いている気分というか。 nullやundefinedが連…

Javascriptで作りたいものを作るのにこんなに時間がかかるとは。まだまだ修行が足りぬ。

ゴロという単位があるらしい

2ゴロ=256なので、1ゴロ=128なのだそうだ。僕は今日初めて知ったが、IT業界全般ではどれだけ一般的なネタなのだろう。