如果给我一个字符串skhfbvqa
,我将如何生成下一个字符串?对于这个例子,它将是skhfbvqb
,并且下一个字符串将是skhfbvqc
,依此类推.给定的字符串(和答案)总是N个字符长(在这种情况下,N = 8).
我尝试了什么:
我试图生成可能组合的整个(无限)列表,并获得给定字符串的必需(下一个)字符串,但不出所料,它太慢了,我甚至得不到N = 6的答案.
我使用了列表理解:
allStrings = [ c : s | s <- "" : allStrings, c <- ['a'..'z'] ] main = do input <- readFile "k.in" putStrLn . head . tail . dropWhile (not . (==) input) . map reverse $ allStrings
(请原谅我非常糟糕的Haskell-ing :)还是一个菜鸟)
所以我的问题是,我该怎么做?如果有多种方法,我们非常感谢它们之间的比较.谢谢!