Come rompere un List Apart in Prolog

July 20

Come rompere un List Apart in Prolog


Prolog è un linguaggio di programmazione che è stato inventato in Francia nel 1960 per l'uso in traduzione automatica delle lingue naturali. E 'stato ulteriormente sviluppato in Scozia nel 1970 per l'uso in provers automatiche teorema. E 'venuto a conoscenza della maggior parte delle persone, quando i giapponesi hanno scelto per la loro lingua ufficiale nel progetto di quinta generazione - il progetto nazionale per sviluppare l'intelligenza artificiale. All'inizio del 21 ° secolo, è - insieme con LISP - una delle due lingue principali utilizzati dalla comunità AI.

istruzione

1 Rompere le liste a parte in Prolog esaminando la "testa" - il primo elemento della lista - e la "coda" - il resto della lista. Come elementi successivi sono esaminati, è possibile decidere quale parte della lista broken-up ogni elemento appartiene.

2 Vedere se un elemento è un membro di una lista passando attraverso la lista in modo ricorsivo. Per fare questa domanda in Prolog, digitare "membro (X, L)?" - È X un membro di L? Ciò richiede due affermazioni Prolog: ". Gli (X, [X, T])" Questo dice che se X corrisponde la prima cosa nella lista, allora X è un membro della L.

3 Scrivi il passo ricorsivo per trovare l'adesione come "membro (X, [_, T]): - Iscritto (X, T)." Ciò saltare sopra la testa della lista se non è uguale a X. Se si lavora la strada attraverso la lista, X sarà [], la lista vuota.

4 Selezionare i primi n elementi di una lista con le due affermazioni Prolog "firstn (L, M, R, 0)." e "firstn ([X | T1], [X | T2], R, n): - firstn (T1, T2, R, n-1)." La prima affermazione ferma la ricorsione con i primi n elementi in F e il resto R. La seconda dichiarazione mantiene strippaggio testa fuori dalla lista e metterlo sulla lista F fino a n = 0.

5 Separare un elenco in due elenchi, in cui una nuova lista contiene gli elementi dispari e l'altro nuovo elenco contiene gli elementi di numero pari, con quattro dichiarazioni Prolog: "rottura (L, pari, dispari): - rottura (L, dispari, . anche, 1) rottura "," ([], pari, dispari, _) ", rottura ([X | T], [X | Dispari], anche, 1): - rottura (L, pari, dispari. , 0) "," rottura (. [X | T], dispari, [X | Anche].., 0) "la prima affermazione ottiene le cose hanno iniziato bene, la seconda istruzione arresta cose quando l'elenco è stato attraversato e l'ultimo due dichiarazioni ricorsivamente separano la lista.

Consigli e avvertenze

  • Prolog cerca di applicare le regole nell'ordine in cui sono scritti. Invertendo l'ordine delle regole di solito distrugge il programma.
  • Nuovi elenchi sono costruiti in ordine inverso. È possibile tornare indietro in giro con le tre dichiarazioni Prolog "reverse (L, R): - inversione (L, [], R).". "Reverse (H | T], S, R): - inversione (T, [X | S], R)." E "reverse ([], R, R).".