Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

/***CODE THIS ONLY IN PRO-LOG PROGRAMMING LANGUAGE***// //*** IT\'S VERY LESS CO

ID: 3856106 • Letter: #

Question

/***CODE THIS ONLY IN PRO-LOG PROGRAMMING LANGUAGE***//

//*** IT'S VERY LESS CODE BUT YOU SHOULD USE ONLY PRO-LOG PROGRAMMING PLEASE DON'T GIVE ANSWERS IN OTHER PROGRAMMING LANGUAGES***//

We squash a list L by first removing all lists within L and replacing them with their members then we remove all duplicate values in the list. Write a Prolog rule squash/2 which squashes a list. The items in the output list do not have to be in any specific order. For example:

squash([a,b,c,[d,e],f,[c, a, b]], [d,e,f,c,a,b]).

squash([1,2,3,4,[5,6,[7,8]]], [1,2,3,4,5,6,7,8]).

squash([1,2,[3,4,[5,6],7],8,[2,4,5,8]], [1,3,6,7,2,4,5,8]).

Explanation / Answer

def my4_remove_duplicates(lst): lst.sort() i = len(lst) - 1 while i > 0: if lst[i] == lst[i - 1]: lst.pop(i) i -= 1 return lst Here is my answer, I ended up using "not in" def remove_duplicates(numbers): newlist = [] for number in numbers: if number not in newlist: newlist.append(number) return newlist remove_duplicates([1,2,3,4,5,5,5,6,3,2]) def refined_remove_duplicates(yourList): y = len(yourList) - 1 while y > 0: num_of_duplicates = yourList.count(yourList[y]) if num_of_duplicates > 1: yourList.remove(yourList[y]) """ this line would be correct if there was a removeall() function in the Python library, or if a programmer realized it :-) """ y -= num_of_duplicates else: y -= 1 return yourList def refined2_remove_duplicates(yourList): y = len(yourList) - 1 while y > 0: num_of_duplicates = yourList.count(yourList[y]) while num_of_duplicates > 1: yourList.remove(yourList[y]) num_of_duplicates -= 1 y -= 1 y -= 1 return yourList