2+8+4-5+1

int strcmp(const char *s1, const char *s2)
  register const unsigned char *ss1, *ss2;
  for (ss1 = (const unsigned char*)s1, ss2 = (const unsigned char*)s2;
       *ss1 == *ss2 && *ss1 != '\0';
       ss1++, ss2++)
    ;
  return *ss1 - *ss2;

学生A「それは何?」
学生B「ふたつの文字列の比較をする関数だな」
学生A「関数名を見ればわかるね。僕はどっぷりハマってるわけじゃないから意味まではわからないけど、授業で習った覚えはある。どういう仕組みなの?」
学生B「俺にもわからない」
学生A「そうなんだ。でも、朝から晩までそういうのやってんでしょ、それでもわからないの?」
学生B「なかなかな。そもそもこういう作品っていうのは、先人が時間をかけて試行錯誤を繰り返して作りあげてきたものなんだ。そうすぐに底が見えちゃ浮かばれないよ」
学生A「ふうん」
学生B「たとえばさ、10という数値があったとして、それが間違いなく確かな10であることは誰の目にも明らかだよな」
学生A「2に足せば12になるような紛れもない10だね」
学生B「そうだな。けれどそれがどういう10なのかはすぐにはわからない。先人たちがゼロから作りあげるとき、はじめに3を足してみて、そのあと8を足して、それから2を引いてみたりしたのかもしれないし、単純に0 + 10だったのかもしれない」
学生A「悩んだ挙句小数も使ってみたりしてね」
学生B「誤差なんか出てきてドツボにハマるんだよな」
学生A「ねえ、どうしてみんな最初に10を足さないの?それが一番スムーズじゃない」
学生B「まあ今回のことだったらそうだな。でも世の中のたいていのことって、求められているものが10なのか15.32なのか、それともπなのかさえわからないんだ。ことによっては何らかの関数かもしれない」
学生A「そっか。だからあくせく加減しては、本当にそれで納得がいくのか試しているんだね」
学生B「でも一番厄介なのはそこじゃないんだな」
学生A「そうなの?どういうことが厄介?」
学生B「俺たちが今満足している10よりもっとピッタリくるものがどこかにあるかもしれないんだ。最初に探しはじめたのが偶然10の近くだっただけで、もしかすると2,000,000とか、-4,027.5134とか、不幸なときなら虚数を含んでいるかもしれない」
学生A「せめて数直線上にはあってくれないとなかなか見つからないよね」
学生B「そうだな。だからどこを探すか、大まかなアタリをつけるためにはまず先人の見識を詰め込む必要がある。どういう場所に密集していて、ある場合にはこんなところにあって、ここには絶対にない、という知識が多ければ多いほど新しいものを見つけられる見込みは大きくなるからな」
学生A「なるほどね。そういうアタリをつけるためには何をすればいいの?」
学生B「それだってわからん。ただ"アタリをつけるために何をすればいいか"のアタリをつける方法ならひとつだけ知ってる」
学生A「ほおう」
学生B「さっきから人の課題を眺めては写してる手を止めて自分でコードを書いてみるんだよ」