トップ «前の日記(2007-05-28) 最新 次の日記(2007-06-04)» 編集

U-memo

2006|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|08|
2009|08|10|
2010|02|03|
2011|11|12|
2012|04|
2016|02|
All= / Today= / Yesterday=

2007-05-29 [長年日記]

_ [雑記] 境界表現に関する非プロのたわごと

nihaさん経由 ockeghem(徳丸浩)の日記

それと、ワンライナーたちは、「i <= 100」ではなくて「i<101」とする例がほとんどですが、こうする理由は1文字減るからでしょうね。ですが、書法としてはまずい書き方ですよね。

FizzBuzz の場合はまずいと思いますが一般論としてはどうか。

int foo[100];

for(i=0; i<100; i++){
  foo[i]=hoge;
  ...
}

のときに(マジックナンバーを使うのはさておいて) i<=101 なんて 書かないと思うわけです。

int foo[BUFSIZE];

for(i=0; i<BUFSIZE; i++){
  foo[i]=hoge;
  ...
}
  • FizzBuzz は (1から) 100 まで処理するから i<=100
  • (0から始まる)配列処理は100個処理するから i<100

と意味のある数字(もしくはそのマクロ置換など)を配置して不等号が あとから決まるんじゃないかしら。 境界値の意味を考えましょう、というベタな到達点かも。

OCaml さんではそもそも凝った書き方は出来ないので fizzbuzz なら

for i=1 to 100 do 〜 done

で決まり。

配列処理なら for loop で危険な末尾境界条件なんか書かずに、 Array.iter (map) すればおわりだからなぁ。 こういうとこでも安全性は出ているのかもね。

_ 徳丸浩の日記:99, 100, 101 ・・・ (2007-05-29 20:22)

FizzBuzzのプログラム書法(続き)

_ 縺$繝s diary:Re:FizzBuzz縺繝㏍げ繝❼Β譖御 (2007-05-30 08:51)

ockeghem(緇割幻羌律險>縺昴l縺繝Φ繝❼う繝翫縺溘■縺縲景 FizzB