#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»