这个 大佬 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