聚會

聚會

中等

簡介

每個月,你的伴侶都會和他們最好的朋友見面。 他們兩個人的行程都非常忙,要找到適合的日期可說是一大挑戰! 由於你自己的行程也很忙,你的伴侶總是會先和你確認可能的見面日期:

  • 「我下個月第一個星期五可以見面嗎?」
  • 「那第三個星期三呢?」
  • 「還是最後一個星期日?」

在這個月的通話中,你的伴侶問了你這個問題:

  • 「我想在 teenth 星期四見面,可以嗎?」

你一頭霧水,問什麼是「teenth」日。 你的伴侶解釋說,他們自創了一個叫 teenth day 的概念,指的是每個月裡以「-teenth」結尾的那些日子:

  • 13th (thirteenth)
  • 14th (fourteenth)
  • 15th (fifteenth)
  • 16th (sixteenth)
  • 17th (seventeenth)
  • 18th (eighteenth)
  • 19th (nineteenth)

由於一週也有七天,因此可以保證每個星期幾在每個月都恰好會有一個 teenth day。

現在你懂了 teenth day 的概念,便去查看自己的行事曆。 你在那個 teenth 星期四沒有任何安排,於是開心地和伴侶確認了這個日期。

說明

你的任務是找出某次聚會的確切日期,題目會給定月份、年份、星期和週次。

有五種週次值需要考慮:first、second、third、fourth、last、teenth。

例如,你可能會被要求找出 2018 年 1 月第一個星期一的聚會日期(2018 年 1 月 1 日)。

同樣地,你也可能被要求找出:

  • 2019 年 8 月的第三個星期二(2019 年 8 月 20 日)
  • 2020 年 5 月的 teenth 星期三(2020 年 5 月 13 日)
  • 2021 年 7 月的第四個星期日(2021 年 7 月 25 日)
  • 2022 年 11 月的最後一個星期四(2022 年 11 月 24 日)
  • 1953 年 8 月的 teenth 星期六(1953 年 8 月 15 日)

Teenth

teenth 週指的是每個月裡以「-teenth」結尾的那七天(13 號、14 號、15 號、16 號、17 號、18 號和 19 號)。

如果要找出 1953 年 8 月的 teenth 星期六,我們就來看看它的日曆:

    August 1953
Su Mo Tu We Th Fr Sa
                   1
 2  3  4  5  6  7  8
 9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

從中可以看出,teenth 星期六是 1953 年 8 月 15 日。

提示

要完成這道練習,你需要實作 meetupDay 函式。

meetupDay 的型別簽章已經先幫你寫好了, 不過函式本身要由你來定義。


出處

Jeremy Hinegardner 提到每個月在「Wednesteenth」舉行的 Boulder 聚會
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Haskell Exercism

準備好開始 聚會 了嗎?

註冊 Exercism,透過 107 個練習 和真人引導來學習並精通 Haskell,全部免費。