Haskell 程式檢查閏年
在 Haskell 中,我們可以使用簡單的布林表示式來檢查給定年份是否為閏年。閏年是相對於普通年份而言,在 2 月份額外增加一天(2 月 29 日)的年份。
例如,2004 年是閏年。
要確定某一年是否為閏年,必須遵循一些規則。
演算法
步驟 1 − 定義 isLeapYear 函式
步驟 2 − 程式執行將從 main 函式開始。main() 函式控制整個程式。它被寫成 main = do。在 main 函式中,定義了一個年份值並將其傳遞給 isLeapYear 函式。然後列印函式的結果。
步驟 3 − 初始化名為“year”的變數。它將儲存要檢查的年份,以確定它是否為閏年。
步驟 4 − 然後,使用 if else 語句在呼叫函式後使用 ‘putStrLn’ 語句將結果列印到控制檯。
示例 1
在這個例子中,isLeapYear 函式接收一個整數(表示年份)作為輸入,並返回一個布林值,指示該年份是否為閏年。它使用模式匹配根據以下規則確定年份是否為閏年:−
如果年份能被 400 整除,則為閏年。
如果年份能被 100 整除但不能被 400 整除,則不為閏年。
如果年份能被 4 整除但不能被 100 整除,則為閏年。
如果以上條件都不滿足,則不為閏年。
isLeapYear :: Int -> Bool
isLeapYear year
| year `mod` 400 == 0 = True
| year `mod` 100 == 0 = False
| year `mod` 4 == 0 = True
| otherwise = False
main :: IO ()
main = do
let year = 2004
if isLeapYear year
then putStrLn $ show year ++ " is a leap year."
else putStrLn $ show year ++ " is not a leap year."
輸出
2004 is a leap year.
示例 2
在這個例子中,使用單個布林表示式來確定年份是否為閏年。它檢查年份是否能被 4 整除,以及它是否不能被 100 整除,或者它是否能被 400 整除。這種實現更簡潔,程式碼行數更少。結果與原始實現相同,但邏輯表達更簡潔。
isLeapYear :: Int -> Bool
isLeapYear year = (year `mod` 4 == 0) && (year `mod` 100 /= 0 || year `mod` 400 == 0)
main :: IO ()
main = do
let year = 2004
if isLeapYear year
then putStrLn $ show year ++ " is a leap year."
else putStrLn $ show year ++ " is not a leap year."
輸出
2004 is a leap year.
結論
在 Haskell 中,我們可以定義一個函式來確定某一年是否為閏年,使用以下規則:−
如果年份能被 4 整除,則轉到步驟 2。否則,轉到步驟 5。
如果年份能被 100 整除,則轉到步驟 3。否則,轉到步驟 4。
如果年份能被 400 整除,則轉到步驟 4。否則,轉到步驟 5。
該年份為閏年(有 366 天)。
該年份不為閏年(有 365 天)。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP