--将信件通过转子传递::字符-〉转子-〉内部-〉字符通过转子偏移=第一个转子!!(α位置a +偏移)--将反射的字母通过转子反向传递::字符-〉转子-〉内部-〉字符反向通过B偏移=['A'..'Z']!!(磁头((元素索引b(第一个ro)))+偏移)
yyhrrdl81#
问题似乎在于,在pass和reversePass中,没有任何内容将索引限制在0到25的范围内。例如,在:
pass
reversePass
pass a rotor offset = fst rotor !! (alphaPos a + offset)
如果a是字符'Z',那么alphaPos a是25,如果偏移量是任意正数,索引将〉= fst rotor的长度,并且将得到一个错误。要修复此问题,您可以尝试:
a
'Z'
alphaPos a
fst rotor
pass a rotor offset = fst rotor !! ((alphaPos a + offset) `mod` 26)
对于reversePass具有类似修复。
1条答案
按热度按时间yyhrrdl81#
问题似乎在于,在
pass
和reversePass
中,没有任何内容将索引限制在0到25的范围内。例如,在:如果
a
是字符'Z'
,那么alphaPos a
是25,如果偏移量是任意正数,索引将〉=fst rotor
的长度,并且将得到一个错误。要修复此问题,您可以尝试:
对于
reversePass
具有类似修复。