split_list_at_element_n(0,Rest,[],Rest). split_list_at_element_n(Num,[Head|Tail],[Head|Tail2],Rest):- Num2 is Num -1, split_list_at_element_n(Num2, Tail, Tail2,Rest). merge([],List,List). merge([Head|Tail],List,[Head|List2]):- merge(Tail,List,List2). run_add_spaces(_,[],[]). run_add_spaces(Num,AsciiList,AsciiList2):- split_list_at_element_n(Num,AsciiList,FirstN,Rest), is_word(FirstN), run_add_spaces(1,Rest,RestWithSpaces), merge(FirstN,[32|RestWithSpaces],AsciiList2). %32 is a space in ascii run_add_spaces(Num,AsciiList,AsciiList2):- Num2 is Num + 1, length(AsciiList,Length), Num2 @=< Length, run_add_spaces(Num2,AsciiList,AsciiList2). add_spaces(AsciiList,AsciiList2):- run_add_spaces(1,AsciiList,AsciiList2), name(S2,AsciiList2), name(S,AsciiList), format("'~p'~nwith spaces added is~n'~p'~n",[S,S2]). is_word("the"). is_word("teach"). is_word("teacher"). is_word("like"). is_word("likes"). is_word("ant"). is_word("anteaters"). is_word("eat"). is_word("eater"). is_word("eaters").