Home > プログラミング > 意地の悪い問題

意地の悪い問題

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

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 関数書いてないからねぇ…… 「次の関数が何を計算するのか」という質問にすべきだったか?

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

★下記に2つの英単語をスペースで区切って入力してください

Home > プログラミング > 意地の悪い問題

Search
Feeds

Page Top