Untitled
unknown
haskell
a year ago
797 B
7
Indexable
import Data.List (nub, permutations)
import Data.Char (toLower)
import Data.List (intersect)
-- Convert number to digits
toDigits :: Int -> [Int]
toDigits n = map (read . pure) (show n)
-- Square a number
square :: Int -> Int
square n = n * n
-- Count unique elements
uniqueCount :: [Int] -> Int
uniqueCount = length . nub
hasThreeDistinctDigits :: Int -> Bool
hasThreeDistinctDigits = (==3) . uniqueCount . toDigits . square
generator2 :: [(Int,Int,Int,Int,Int,Int,Int,Int)]
generator2 =
[ (a1,a2,a3,a4,a5,a6,a7,a8) |
let candidates = filter hasThreeDistinctDigits [10..31],
let validPerms = filter (\xs -> head (drop 3 xs) == minimum xs) (permutations candidates),
[a1,a2,a3,a4,a5,a6,a7,a8] <- take 8 <$> validPerms
]
Editor is loading...
Leave a Comment