如何更優雅編碼、更優演算法 | 階梯式電費演算法 | 非常感謝、請指教~

AlicFeng發表於2019-03-06

如何更優雅編碼、更優演算法 | 階梯式電費演算法 | 非常感謝、請指教~

電費的階梯式演算法

?笑:-D~ 倒序進行中,如何更加優雅、使用更少的程式碼,甚至更優的演算法呢?

常常會見到這種場景:

舉個例子,深圳為了推進市民節約用電推出了這樣一個用電收費政策,電量使用階梯式遞增的收費計算方式,簡單而言、用電越多平均的每度電越貴。(假設使用者的每電量為整數,小於1度電則應繳費為0元)

計算電費的剃度表如下所示:

  耗電範圍(°)  電費計算(1元/°)
  1<=x<=10            1       
  11<=x<=20         1.2       
  21<=x<=50         1.4       
51<=x<=100         1.8       
101<=x<=300        2.4       
   301<=x            5       
  • 一般的演算法如下。感謝更優的程式碼方案~
/**
 * 根據用電的度數計算電費
 * @param int $number 用電度數
 * @return float 電費
 */

function calculate(int $number): float
{
    if ($number <= 0) {
        return 0;
    }
    switch ($number) {
        case 1 <= $number && $number <= 10:
            return $number * 1;
            break;
        case 11 <= $number && $number <= 20:
            return ($number - 10) * 1.2 + calculate(10);
            break;
        case 21 <= $number && $number <= 50:
            return ($number - 20) * 1.4 + calculate(20);
            break;
        case 51 <= $number && $number <= 100:
            return ($number - 50) * 1.8 + calculate(50);
            break;
        case 101 <= $number && $number <= 300:
            return ($number - 100) * 2.2 + calculate(100);
            break;
        default:
            return ($number - 300) * 5 + calculate(300);
            break;
    }
}

不定維陣列的排序(鍵名)

如何優雅高效地將一個不定維陣列按照鍵名排序。

// 如下為不定維陣列變數
$data = [
    'amount'    => 100,
    'quota'     => 100000000,
    'applicant' => [
        'name'        => 'alicfeng',
        'sex'         => 'M',
        'age'         => 21,
        'certificate' => [
            'number'     => '441701995********',
            'start_date' => '20080808',
            'end_date'   => '20280808'
        ]
    ],
    'family'    => [
        'number' => 5,
        'feel'   => 'nice'
    ]
];
本作品採用《CC 協議》,轉載必須註明作者和本文連結

價值源於技術,貢獻源於分享 | 筆記分享歸檔
No matter where I am, I will reply you immediately when I see the email.
My Email: echo "YUBzYW1lZ28uY29tCg==" | base64 -d
個人比較喜歡分享,若有不對的地方非常感謝指出
相互學習、共同進步~

相關文章