language: Haskell (ghc-6.8.2)
date: 112 days 14 hours ago
link:
visibility: public
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import Data.List
 
main = do
  name1 <- getLine
  name2 <- getLine      
  putStr $ show $ flames name1 name2
 
flames :: [Char] -> [Char] -> Char
flames name1 name2 = flames' count where
  count = length $ removeCommon name1 name2
 
flames' count = flamesFrom "FLAMES" count
 
flamesFrom :: [Char] -> Int -> Char
flamesFrom [x] _ = x
flamesFrom s n = flamesFrom ((drop modn s) ++ (take (modn - 1) s)) n where
  modn =  if roundedn == 0 then length s else roundedn where
    roundedn = n `mod` (length s)
 
removeCommon :: Eq a => [a] -> [a] -> [a]
removeCommon name1 name2 = (name1 `removeMatching` name2) ++ (name2 `removeMatching` name1)
 
removeMatching :: Eq a => [a] -> [a] -> [a]
removeMatching [] _ = []
removeMatching (x : xs) ys = 
  if not (x `elem` ys) then x : removeMatching xs ys 
  else  removeMatching xs (delete x ys)