2014-09-11 4 views
0

저는 프로그래밍에있어 매우 새로운 것이 특징이며 많은 경우 어려움을 겪고 있습니다. 여기에 주어진 과제는 숫자 목록을 가지고 다른 숫자 목록과 비교하고 다른 숫자에 대한 해석을 필터링 할 수있는 기준으로 3 개의 숫자를 피드백으로 반환한다는 것입니다. 예.함수를 선언하십시오.

[4,9], [7,9], [10,18], [2,9]는 내 목록입니다. 이제 두 개의 별도 목록 [4,9]과 [7,9]가 있어야합니다. 피드백을주고 (1,1,0)

제 기능들은 그때 그때 1없는 값을 반환해야 하나 개의 값이 있다면 그 때, 값이 반환되어야 있다면 두 개의리스트가 동일한 값을 가지고 있는지 확인해야 그것은 0을 반환합니다 나는 elem 방법으로 이것을 시도했지만 성공하지 못했습니다. 따라서 두 목록에 9가 있기 때문에 이에 대한 대답은 1이어야합니다.

두 번째 기능은 가장 낮은 값을 검사합니다. 두 번째 요소에서 첫 번째 요소까지만 비교해야합니다. 위의 예제 [4,9]와 [7,9]의 동일한 예제에서 [7,9]의 가장 낮은 값인 7을 찾은 다음 [4,9]에서 7보다 낮은 값을 확인합니다. 그럼 피드백 1 리턴이 최대치 예를 확인 제외한 그 밖의 0

번째 함수는 초와 동일하다. [3,13]과 [10,9]의 처음 두 요소를 취해서 이제 [10, 9] 10과에서 그 값을 확인하는 [3,13] 여기에 대답해야 하나 이상의 다른 (10)가 0

이러한 기능 선언에 도움을 주시기 바랍니다 것은 많은 의무 것입니다 (13) 이후

+0

정말 당신이 달성하고자하는 명확하지 않습니다. 네가 말한대로, 너는 최소한 뭔가를 시도한 것 같다. 그것을 게시 할 수 있고 가능한 한 구체적으로 귀하의 질문에 다시 말하려고 할 수 있습니까? 나는 당신이 시도한 것이 효과가 없다고 말한 것을 알고 있지만, 스택 오버 플로우의 요점이 아닙니까? – bheklilr

답변

1

샘플 코드를 보지 않고 조금 혼란 스럽네요.

당신이 [[지능]하지만 모든 목록이 두 항목이, 목록의 목록을 사용하는 것 같습니다 : 나는 첫 번째 기능이 작동해야하는 방법을 이해 생각한다. 페어 [(INT, int)를]를 사용하는 것이 더 쉬울 수

그런 다음 첫 번째 함수가 중첩 된 if 문에 기록 할 수있는 것입니다 : 그것은 한 쌍의 할 수없는 경우

firstTest (a1,b2) (a2,b2) = if a1 == a2 && b1 == b2 then 2 else if a1 == a2 || b1 == b2 then 1 else 0

과 목록의 목록이어야합니다. 그러면 문제를 수정하고 Data.Set을 사용하여 두 목록을 Sets로 변환하는 것이 더 쉬울 수도 있습니다. 두 세트를 비교하는 것이 두리스트를 비교하는 것보다 훨씬 효율적입니다. Data.Set은 유용한 isSubsetOf 함수를 제공합니다. fromList 기능을 사용하여 목록을 세트로 변환 할 수 있습니다.

import qualified Data.Set as S 
firstTest' :: S.Set Int -> S.Set Int -> Int 
firstTest' sas sbs = if sas == sbs then 2 else if S.isSubsetOf sas sbs then 1 else 0 

목록의 인접 항목을 비교하는 것은 약간 어려운 일입니다. 이 질문에 대한 내 대답을보십시오 : https://stackoverflow.com/a/25777940/3792504

관련 문제