Сбой функций Haskell при вводе «/», » DLE», » 22925″ и т. Д

#haskell

#haskell

Вопрос:

У меня есть несколько функций Haskell, таких как;

 encipher :: Int -> Char -> Char
encipher 0 ch = ch
encipher k ch = lookUp (ch) (makeKey k)




normalize :: String -> String
normalize "" = ""
normalize s =  [if (isDigit x) then x else toUpper x| x <- s, x `elem` charList]
              where charList = ['a'..'z']    ['A'..'Z']    ['0'..'9']


encipherStr :: Int -> String -> String
encipherStr k str = [encipher k char | char <- normalize str]
  

Все они не выдают требуемое на входах : (4,»22925″),» DLE», (4,»22925″) соответственно. Входные данные генерируются автоматическим тестером, который я должен удовлетворить.

Честно говоря, я даже не знаю, что означают входные данные. Кроме первого и последнего, возможно, это символы Юникода. Мой вопрос в том, как мне создать правильный вывод для этих входных данных.

Например, функция normalize with удаляет все знаки препинания, но оставляет целые числа и буквы в строке и выделяет их заглавными буквами, возвращает «» при вызове:

 normalize "DLE"
  

что неверно в соответствии с автомаркером.

Комментарии:

1. "DLE" является управляющим символом ASCII, называемым «Экранирование канала передачи данных», он имеет номер символа 16 (0x10). Является ли Unicode надмножеством ASCII, это также символ Unicode U 0010. Этот символ не является цифрой и не буквой. Если спецификация normalize заключается в удалении всех таких символов, возврат пустой строки является правильным результатом. Таким образом, либо автоматический маркер сломан, либо вы неправильно поняли спецификацию. Вы уверены, что все ваши функции не работают в этом примере, а не только одна из ваших трех функций не работает? (4, "22925") не является правильным для ввода типа encipher

2. … может быть, вы имеете в виду (4, '22925') ?

3. Конечно, это зависит от того, что должен делать ваш нормализатор. Можете ли вы дать некоторое представление о том, каковы правила нормализации?

4. Функция normalize должна принимать строку в качестве входных данных. Например, «Это ненормированное значение? Сообщение «. Затем он должен вернуть строку со всем удаленным, за исключением букв и цифр, и заполнить строку заглавными буквами. В этом случае он вернет: «THISISANUN11NORMALISEDMESSAGE»