Done several tasks
[cses-programming-tasks.git] / app / cses2165.hs
diff --git a/app/cses2165.hs b/app/cses2165.hs
new file mode 100644 (file)
index 0000000..1b6c71b
--- /dev/null
@@ -0,0 +1,17 @@
+data Move = Move Int Int
+  -- deriving (Show)
+
+instance Show Move where
+  show (Move a b) = show a ++ " " ++ show b
+
+main :: IO ()
+main = do
+  line1 <- getLine
+  let nDisks = read line1 :: Int
+  let moves = solve nDisks 1 2 3
+  print $ length moves
+  putStrLn $ unlines $ map show moves
+
+solve :: Int -> Int -> Int -> Int -> [Move]
+solve 0 _ _ _ = []
+solve n a b c = solve (n-1) a c b ++ [Move a c] ++ solve (n-1) b a c