Little Strange Software

スマホアプリの開発を行う LittleStrangeSoftware のブログです。

昔、考えた「今ではとてもオススメできない」アルゴリズム

 どうも!LSSです!!

 

 ちょっと昔を振り返る事が多くなってきた気が、自分でしています。
 今は前を向いていかなきゃ、と自覚してはいるんですが、どうもまだ自覚が足りないようでw

 

で、ポケコンでプログラムを組んでいた頃に考えた「お手軽なアルゴリズムを思い出してしまったので、ここに2つ、吐き出してみます。

 

 なお、記事タイトルに書いたように「とてもオススメできない」内容となっていますので、プログラマーを志される方は「悪い見本」として見ていただければと思いますwww

 

 

 

 

変数の内容が0ならば1に、1ならば0にするアルゴリズム

  今ならbooleanでする、フラグ用の変数。

 boolean型が無い言語を使っていた頃は、数値型の変数で0か1かで判断していました。

で、その変数を「0ならば1、1ならば0に」と、反転させるアルゴリズムです。

 

まともな書き方

if (a==0){
    a=1
}else{
    if(a==1){
        a=0
    }
}

 

お手軽アルゴリズム

a=1-a

 

…変数aが0か1のいずれかの値しかあり得ない場合は、この1行で反転します。

 論理演算子 xor が使えるなら、a=a xor 1 でも良さそうですね。

 

 

12個の□を不規則な感じにバラバラッと■に置き換えるアルゴリズム

 かなり使いどころが悩ましい内容ですが…w

 まとな書き方…は割愛します^^;

 

お手軽アルゴリズム

a=0
for(i in 1..12){
    a=(a+7)%12
    変数a+1番目の□を■に置き換える処理
}

 

 ループはKotlin風に書いてみた例。

 %余りを算出する演算子です。

 12回のループを回る中で、変数aの値は

7→2→9→4→11→6→1→8→3→10→5→0

と変化し、規則性を感じさせにくく、かつ 0~11 の数字が1回づつ出現します。

 

 

 

オススメできない理由

 これはひとえに可読性を下げるから、ですね。

 むかーしの、容量の限られたBASIC言語搭載機なんかでは有用だったかも知れないんですが、
現在の、とくに職業エンジニアがチームを組んで作業する場合には
「自分にも他人にも読みやすい、分かりやすいコード」を書く事の方が、多少文字数を削減するよりもはるかに重要視されているようなので「とてもオススメできない」としましたw

 

「LSSは読みやすい・分かりやすいコードを書けているか?」って言ったら…う~ん、なんですけどね!^^;

 

 

てなとこで、今回はこのへんで!

 次回もまた、よろしくお願いします^^