Rövarspråket

Énoncé

Bonjour à tous,

Les jeunes enfants suédois apprennent un langage SUPER SECRET, le Rövarspråket !

Le Rövarspråket n'est pas très compliqué, vous prenez un mot et vous remplacez les consonnes par la consonne doublé avec un o au milieu. Le b devient bob, le r devient ror, etc. Les voyelles ne sont pas modifiées, c'est fait pour le suédois mais cela fonctionne pour le français.

ATTENTION, c'est un code secret Suèdois, si vous le partagez vous serez obligé de manger du Surströmming.

Entrée

Bonjour ca va

Sortie

boboujojouror coca vova

Bonus

Faire le décodage aussi !

Travaux réalisés

Mon code

Haskell

import System.IO

isConsonant :: Char -> Bool
isConsonant = (`elem` "bcdfghjklmnpqrstvwxzBCDFGHJKLMNPQRSTVWXZ")

rovarspraket :: String -> String -> String
rovarspraket [] out = out
rovarspraket (x:xs) out =
rovarspraket xs $ out ++ if isConsonant x then [ x, 'o', x ] else [ x ]

main :: IO ()
main = do
putStr "Saisissez une chaine : "
hFlush stdout
input <- getLine
let a = rovarspraket input ""
putStr a
putStr "\n"

Io

isConsonant := method(chr,
"bcdfghjklmnpqrstvwxzBCDFGHJKLMNPQRSTVWXZ" findSeq(chr) isNil not)

standardIO := File standardInput()

rovarspraket := method(string, output,
if(string isEmpty,
output,

firstChar := string at(0) asCharacter
tailString := string exSlice(1)

rovarspraket(tailString, output ..
if(isConsonant(firstChar),
firstChar .. "o" .. firstChar,
firstChar))))

main := method(
"Saisissez une chaine : " println
input := standardIO readLine
a := rovarspraket(input, "")
a println)

main