2014年5月23日金曜日

1行プログラミング6:TRUE/FALSEを計算に利用する。




たとえばですが、
ある薬を投与してから、とあるイベントが発生するまでの日数を求めたいとします。

ロジックは

日数 = イベント発生日 - 投与開始日 + 1

ただし投与前に起きたイベントは、「イベント発生日 - 投与開始日」 とする。
(投与前日のイベントだったら、+1すると日数=0となって変なので。。)



これをプログラムで書くと、通常は以下のような感じですが、、

DAY = EVENT - START +1;
if  EVENT < START  then  DAY = EVENT - START ;



真偽値(True/False)を使うと1行でスッキリ書けちゃいます。

DAY = EVENT-START + (EVENT >= START) ;



解説

式の中の(EVENT >= START)がポイントで、この条件が成り立つと「1:True」、成り立たないと「0:False」が返されるのを利用して、1を足すかどうかを判断させてます。



0 件のコメント:

コメントを投稿