Programowanie funkcyjne - łączenie list

Odpowiedz Nowy wątek
2011-10-03 12:38

Rejestracja: 9 lat temu

Ostatnio: 5 lat temu

0

Witam. Ma za zadanie napisać funkcję łączącą dwie listy w jedną. Listy w tym zadaniu są rekurencyjne. Do tej pory nie miałem problemu z tego typu zadaniami ale z tym nie mogę sobie poradzić. Czy możecie mi dać jakieś wskazówki, jak to można zrobić?
Z góry dziękuję za pomoc. (Konkretnych języków nie podałem bo nie chcę gotowego kodu)

Pozostało 580 znaków

2011-10-03 13:03
Moderator

Rejestracja: 12 lat temu

Ostatnio: 1 godzina temu

0

Co rozumiesz przez połączenie? Coś a la zip czy bardziej ich konkatenację?


Pozostało 580 znaków

2011-10-03 13:13

Rejestracja: 9 lat temu

Ostatnio: 5 lat temu

0

Mam na myśli konkatenację.

Pozostało 580 znaków

2011-10-03 13:45
Moderator

Rejestracja: 12 lat temu

Ostatnio: 1 godzina temu

0

Co to "Listy w tym zadaniu są rekurencyjne." oznacza? Czy listy są skończone?


Pozostało 580 znaków

2011-10-03 15:05

Rejestracja: 9 lat temu

Ostatnio: 5 lat temu

0

Tak, listy są skończone. Chodzi o to, że mogę się jedynie odwoływać do głowy listy i ogona. Następnie do głowy ogona itd.

Pozostało 580 znaków

2011-10-03 15:17

Rejestracja: 14 lat temu

Ostatnio: 3 godziny temu

0

Funkcja może działać tak (zakładając, że wejściowe listy to list1 i list2):

  1. Jeżeli list1 jest pusta to zwróć list2.
  2. Jeżeli list1 nie jest pusta zwróć specjalnie stworzoną klasę ConcatenatedList

Klasa ConcatenatedList pobiera jako argumenty (dla konstruktora) dwie listy. Operator wyłuskania głowy zwraca głowę list1. Operator wyłuskania ogona zwraca wynik poprzednio opisanej funkcji dla argumentów (ogon list1, list2).


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.

Pozostało 580 znaków

2011-10-03 22:08

Rejestracja: 9 lat temu

Ostatnio: 5 lat temu

0

Dzięki :) jednak sam wcześniej rozwiązałem problem. Łączę kolejne elementy listy pierwszej do natrafienia jej końca. Gdy trafiam na koniec zwracam listę drugą. Dziękuję wszystkim za pomoc :)

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0