我如何将一个符号重新排列回来。我有一个给定的字符串:abcdpqrs
,其中输出为:badcqpsr
.
我当前的代码:
f s = foldr (\a ~(x,y) -> (a:y,x)) ([],[]) s
main :: IO ()
main = do
str <- getLine
print(f str)
评估f "abcdpqrs"
结果是
("acpr",
"bdqs")
如何使用它来获得"badcqpsr"
?
更新的代码:
rev (a : b : xs) = b : a : rev xs
rev xs = xs
main = do
n <- getLine
l <- getContents
putStr (rev l)
当输入是2个字符串时,abcdpqrs
and az
结果是badcqpsra
and z
。预期输出是badcqpsr
and za
。我该如何修复它?
这是一个提示:
reverseFirst2 :: [a] -> [a]
reverseFirst2 (x1:x2:xs) = x2:x1:xs
reverseFirst2 xs = xs
这会颠倒列表前 2 个元素的顺序
> reverseFirst2 "abcdpqrs"
"bacdpqrs"
可以填写一下吗...
下面对列表的其余部分执行相同的操作?
reverseEvery2 :: [a] -> [a]
reverseEvery2 (x1:x2:xs) = x2:x1: ...
reverseEvery2 xs = xs
获取输入
要一次获取一行输入,请一次读取一行输入。
main = do
l <- getLine
print (reverseEvery2 l)
main
你出现这种行为的原因getContents
是从读取的输入getContents
包括行尾的换行符。它本质上是在运行
rev "abcdpqrs\naz\n" =
"badcqpsra\n\nz"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)