Last active
February 14, 2018 14:52
-
-
Save Jofairden/8d1f335a9b4977ea772b8cce213c8260 to your computer and use it in GitHub Desktop.
Calculate the magic number of length = 9 in Haskell
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- Calculate the magic number of length = 9 | |
-- with numbers ranging from 1 to 9, and each number can only occur once | |
-- and each section of k length is divisable by k | |
del :: Eq a => [a] -> [a] -> [a] | |
del xs ys = [y| y <- ys, not(elem y xs)] | |
magicNumber :: [Int] | |
magicNumber = [var8 | | |
x1 <- [1..9], | |
x2 <- (del [x1] [2,4..8]), | |
let var1 =, mod var1 2 == 0, | |
x3 <- (del [x1,x2] [1..9]), | |
let var2 = var1 * 10 + x3, mod var2 3 == 0, | |
x4 <- (del [x1,x2,x3] [2,4..8]), | |
let var3 = var2 * 10 + x4, mod var3 4 == 0, | |
x5 <- (del [x1,x2,x3,x4] [5]), | |
let var4 = var3 * 10 + x5, mod var4 5 == 0, | |
x6 <- (del [x1,x2,x3,x4,x5] [2,4..8]), | |
let var5 = var4 * 10 + x6, mod var5 6 == 0, | |
x7 <- (del [x1,x2,x3,x4,x5,x6] [1..9]), | |
let var6 = var5 * 10 + x7, mod var6 7 == 0, | |
x8 <- (del [x1,x2,x3,x4,x5,x6,x7] [2,4..8]), | |
let var7 = var6 * 10 + x8, mod var7 8 == 0, | |
x9 <- (del [x1,x2,x3,x4,x5,x6,x7,x8] [1..9]), | |
let var8 = var7 * 10 + x9, mod var8 9 == 0] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment