2014年2月21日金曜日

【Dart でやってみた】これが解けたら IQ150 の問題

以前 Twitter で話題になったツイートで、次のようなものがあります。
解けたら IQ150 以上の問題

6 + 4 = 210
9 + 2 = 711
8 + 5 = 313
5 + 2 = 37

7 + 6 = ??


解けたら本当に IQ150 以上かどうかはさておき、これは「+」の実装を変えたら実現できるわけです。
つまり演算子オーバーロード(オペレータオーバーロード)です。


演算子オーバーロードとは上記問題のように、演算子の実装を変えることができる機能です。
Dart にもこの機能が用意されていますので、今回はこの IQ150 の問題を Dart で実現してみます。


まずは演算子オーバーロードのためのクラス。
class Iq150Problem {
  
  int x;
  Iq150Problem(this.x);
  
  operator + (Iq150Problem iq150) {
    
    int i1 = this.x - iq150.x;
    int i2 = this.x + iq150.x;
    
    return i1.toString() + i2.toString();
  }
}


演算子オーバーロードした「+」を実際に使用すると次のようになります。
import 'iq150problem.dart';

void main() {
  
  Iq150Problem iq1 = new Iq150Problem(7);
  Iq150Problem iq2 = new Iq150Problem(6);
  
  print(iq1 + iq2);
}


実行結果は 113 です。


この blog 初の技術的な内容でした。
今後は興味深い機能を見つけたら【Dart でやってみた】として書いていきたいと思います。

0 件のコメント:

コメントを投稿