子陣列

子陣列

中等

說明

給定任意兩個陣列A和B,判斷下列何者成立:

  • 陣列A等於陣列B;或
  • 陣列A包含陣列B(A是B的超陣列);或
  • 陣列A被陣列B包含(A是B的子陣列);或
  • 以上皆非,因此陣列A和B不相等

具體來說,如果兩個陣列含有相同的值且順序相同,則陣列A等於陣列B。如果A包含一段與B相等的連續值子序列,則A是B的超陣列。如果B包含一段與A相等的連續值子序列,則A是B的子陣列。

範例:

  • 如果A = []且B = [](兩個陣列都是空的),則A和B相等
  • 如果A = [1, 2, 3]且B = [],則A是B的超陣列
  • 如果A = []且B = [1, 2, 3],則A是B的子陣列
  • 如果A = [1, 2, 3]且B = [1, 2, 3, 4, 5],則A是B的子陣列
  • 如果A = [3, 4, 5]且B = [1, 2, 3, 4, 5],則A是B的子陣列
  • 如果A = [3, 4]且B = [1, 2, 3, 4, 5],則A是B的子陣列
  • 如果A = [1, 2, 3]且B = [1, 2, 3],則A和B相等
  • 如果A = [1, 2, 3, 4, 5]且B = [2, 3, 4],則A是B的超陣列
  • 如果A = [1, 2, 4]且B = [1, 2, 3, 4, 5],則A和B不相等
  • 如果A = [1, 2, 3]且B = [1, 3, 2],則A和B不相等

提示

型別Ordering有 3 個建構子:LT(「小於」)、EQ(「等於」)與GT(「大於」)。這些建構子可以表示子陣列的順序關係,其中Just LT代表「子陣列」,依此類推,而Nothing則表示它不是子陣列、不是超陣列,也不相等。

透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Haskell Exercism

準備好開始 子陣列 了嗎?

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