突然ですが、次のような簡単なプログラムを作るとします。
面積Sの浴槽があります。これを面積Aの蓋を2枚使用してカバーした場合に、カバーされていない浴槽の面積を求めましょう。(単位略)
<?php
$S = 12;
$A = 8;
$cover = $A * 2;
$notCover = $S - $cover;
?>
もちろん面積にマイナスはありえないので条件式を使用して
<?php
$S = 12;
$A = 8;
$cover = $A * 2;
$notCover = $S - $cover;
if($notCover < 0){
$notCover = 0;
}
?>
という風に書くことでカバーされていないエリアがマイナスになるのを防げます。
しかしif文を使わずともこれを実現する方法もあります。
<?php
$S = 12;
$A = 8;
$cover = $A * 2;
$notCover = max(($S - $cover),0);
?>
このようにmax()関数を使用することでマイナスになる場合には0を、プラスの場合はそのままの値を$notCoverに格納することができます。
競プロの問題を解いていて解説でこのやり方を見たときにスマートだな~と思ったのでメモ
コメント