Prolog dodawanie liczb

ZA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0

Witam mam program ktory dodaje 2 pierwsze liczby z tablicy i je wypisuje.Problem jednak w zeby mi wytlumaczyc dlaczego program

Kopiuj
dodawanieliczb([],[]).
dodawanieliczb([H1|[]],[H1]).
dodawanieliczb([H1,H2|T],[H3|T3]):-H3 is H1+H2,dodawanieliczb(T,T3).

dziala rowniez w tej postaci (zmienia sie tylko 2 linijka)

Kopiuj
dodawanieliczb([],[]).
dodawanieliczb(H1,H1).
dodawanieliczb([H1,H2|T],[H3|T3]):-H3 is H1+H2,dodawanieliczb(T,T3).

Jaka jest roznica w tym ?

msm
  • Rejestracja: dni
  • Ostatnio: dni
0

Zakładam że SWI-Prolog.

  1. To ma działać tak rekurencyjnie:?
Kopiuj
15 ?- dodawanieliczb([1, 2, 5, 6], X).
X = [3, 11].

16 ?- dodawanieliczb([1], X).
X = [1] .
Kopiuj
dodawanieliczb([H1|[]],[H1]).

To nie ma większego sensu, chyba że płacą Ci za ilość znaków w kodzie :]

Kopiuj
dodawanieliczb([H],[H]).

To samo, ale krócej.

Kopiuj
dodawanieliczb(H,H).

Nie to samo, niestety.

Kopiuj
23 ?- dodawanieliczb([1, 2, 5, 6], X).
X = [1, 2, 5, 6] .

24 ?- dodawanieliczb('kot i płot', X).
X = 'kot i płot'.
  1. dodawanieliczb to... Brzydka nazwa. Taka imperatywna. Spróbuj wyjść z czymś deklaratywnym, jak np. sumy_par jeśli ma być po polsku.
ZA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0

tak swi-prolog. Dokladnie tak ma dzialac tak jak opisales.

tak dzieki za odp=] ale przyjacielu powiedz mi czym sie roznia te linijki, ze to samo ale krocej. Potrzebuje tylko info czym sie roznia te 2 zapisy=] Musze taka odpowiedz jutro udzielic heh

msm
  • Rejestracja: dni
  • Ostatnio: dni
0

No zapis [H|T] oznacza że H jest pierwszym elementem listy a T resztą:

Kopiuj
34 ?- [H|T] = [1, 2, 3].
H = 1,
T = [2, 3].

Zapis [2|T] oznacza że 2 jest pierwszym elementem a T resztą

Zapis [H|[]] oznacza że H jest pierwszym elementem a reszta jest pusta, czyli to jednoelementowa lista równa [H].

ZA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0

wie ktos moze jak zrobic program ktory wypisze mi liczby z tablicy wieksze od 10?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.