Home > Archives > 2012年04月09日

2012年04月09日

意地の悪い問題

プログラミング演習の初回のアンケートに,下記のプログラムが何を計算するか分かれば答えよ,とかいう設問を入れてみた.

int hoge(int x, int y) {
  int k = x % y;
  while(k!=0) { y^=k; k^=y; y^=k; k = k%y; }
  return y;
}

答えは「x と y の最大公約数」なのだけど,y と k のスワップを XOR 3 回でやっている点が意地悪い.まぁ,XOR 3回でスワップができると理解できた人もいたのでそれ程ひどくもないのかもしれないけど,よくわからん.

ほか,わからないものはとりあえず動かしてみようというの数人いて,「打ち込んだけどコンパイルエラーが出るぞどうなってるんだ」という質問をもらったりした.まあ,main 関数書いてないからねぇ…… 「次の関数が何を計算するのか」という質問にすべきだったか?

とりあえず,なかなかにレベルのばらつきが酷いのでなんともはや.

Home > Archives > 2012年04月09日

Search
Feeds

Page Top