haskell思路学习
查看原帖
haskell思路学习
625398
_OTZ_楼主2024/10/5 13:48

这个 大佬 VoidSkeleton 的写法思路 好,学到了

我的写法笨重了许多,慢了四倍,空间也多了几倍,还请大佬们不吝赐教


module Main where

import Data.List

main :: IO ()
main = do
  foldl1' (>>) $ fmap (putStrLn . unwords . fmap show) . sort . filter checkCond $ trans <$> permutations [1 .. 9]

trans :: [Int] -> [Int]
trans [n1, n2, n3, n4, n5, n6, n7, n8, n9] =
  let num1 = (n1 * 100 + n2 * 10 + n3)
      num2 = (n4 * 100 + n5 * 10 + n6)
      num3 = (n7 * 100 + n8 * 10 + n9)
   in [num1, num2, num3]
trans _ = undefined

checkCond :: [Int] -> Bool
checkCond [num1, num2, num3] = num1 * 3 == num3 && num1 * 2 == num2
checkCond _ = False
2024/10/5 13:48
加载中...