저는 하스켈에 다소 익숙하며리스트의 모든 인접한 서브리스트를 생성하려고합니다. 리스트의 모든 인접한 하위리스트 생성하기
listSublists :: [a] -> [[a]]
listSublists [] = [[]]
listSublists xs = [xs] ++ listSublists (init xs)
내가 위의 기능이 제거 마지막 요소와 하위 목록을 생성 할 알고하지만 난 내 의사를 완료하는 방법을 모르고도 없어 :
I 전류는 다음이있다. 내 의사는 기본적으로
,
꼬리를 제거, 전체 목록을 가져 가라. [1,2,3] 는 [XS] ++ listSublists (INIT XS)를 생성 할 listSublists
예
, XS로의 = 1,2,3,4 (XS X)의 XS 합격 ], [1,2,3], [1,2], [1], [] 그리고 목록을 다 쓸 때까지 [2,3,4]를 xs로 전달하면서 계속하려고합니다.
누군가가 내게 몇 가지 포인터를 줄 수 있습니까? 아니면 완전히 잘못된 생각으로 생각하고 있습니까?
감사합니다.나는 꼬리를 사용하는 것을 알고있다라는 것을 알고있다? 하지만 나는 실제로 '연결'을 얻지 못합니다. 지도 접미사. 접두사 부분. 제대로 쓰는 법에 대해서는 잘 모르겠습니다. – rlhh
@ user1043625 무슨 뜻인지 모르겠다. 그것이 당신이 그것을 쓰는 방법입니다. 목록 기능을 작성하는 방법을 알고 싶지 않은 경우. 그렇지 않으면 함수의 조합 일뿐입니다. – sabauma
나는 당신의 대답의 일부를 잘못 이해했다고 생각하지만, 나는 그것을 알아 냈다고 믿는다. 나는 실제로 그것을 다른 방식으로하고있다. 'listSuffix (xs) ++ listPrefix (init xs)'입니다. 이제 빈 목록의 중복을 제거하는 방법을 찾아야합니다. – rlhh