Skip to content

Instantly share code, notes, and snippets.

@dekosuke
Created April 15, 2012 02:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dekosuke/2389591 to your computer and use it in GitHub Desktop.
Save dekosuke/2389591 to your computer and use it in GitHub Desktop.
Google Code Jam Qualification Round
savazusi ' ' = ' '
savazusi 'a' = 'y'
savazusi 'b' = 'h'
savazusi 'c' = 'e'
savazusi 'd' = 's'
savazusi 'e' = 'o'
savazusi 'f' = 'c'
savazusi 'g' = 'v'
savazusi 'h' = 'x'
savazusi 'i' = 'd'
savazusi 'j' = 'u'
savazusi 'k' = 'i'
savazusi 'l' = 'g'
savazusi 'm' = 'l'
savazusi 'n' = 'b'
savazusi 'o' = 'k'
savazusi 'p' = 'r'
savazusi 'q' = 'z'
savazusi 'r' = 't'
savazusi 's' = 'n'
savazusi 't' = 'w'
savazusi 'u' = 'j'
savazusi 'v' = 'p'
savazusi 'w' = 'f'
savazusi 'x' = 'm'
savazusi 'y' = 'a'
savazusi 'z' = 'q'
haco cs =
unlines $ map live $ zip [1..] ls
where
ls = tail $ lines cs
live (num, xs) = "Case #" ++ show num ++ ": " ++ translate xs
translate = map savazusi
main = interact haco
import Data.List
import Debug.Trace
import qualified Data.Map as M
unidon = uni . don
uni :: [String] -> String
uni ls = unlines $ map uni' $ zip [1..] ls
uni' :: (Int, String) -> String
uni' (k, cs) =
"Case #"++show k++": "++show ans
where
(ana,go) = let a:b:_ = words cs in (read a,read b)
rotations :: Int -> [Int]
rotations num = map read $ filter (\(x:xs)->x/='0') $ map unagi [1..length xs-1]
where
xs = show num
unagi i = let (a,b) = splitAt i xs in b ++ a
ans = length $ M.toList $ M.fromList [((a,b),1)|a<-[ana..go], b<-rotations a, b>a, b<=go]
don = tail . lines
main = interact unidon
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment