:- use_module(library(lists),[append/3, prefix/2, member/2]). %%longNum([X,punkt,XX,punkt,XXX,punkt,XXXX,kolon,PORT],Svar) longNum([X,punkt,XX,punkt,XXX,punkt,XXXX,kolon,Port],Svar):- %format("inne och kollar nummer~n",[]), ( number_phrase([X],Dig) ; chk100(X,Dig) ; chk100plus(X,Dig) ), ( number_phrase([XX],Dig2) ; chk100(XX,Dig2) ; chk100plus(XX,Dig2)), ( number_phrase([XXX],Dig3) ; chk100(XXX,Dig3) ; chk100plus(XXX,Dig3)), ( number_phrase([XXXX],Dig4) ; chk100(XXXX,Dig4) ; chk100plus(XXXX,Dig4) ), ( number_phrase([Port],DigPort) ; chk100(Port,DigPort) ; chk100plus(Port,DigPort) ; chk1000(Port,DigPort) ), fixit([Dig,Dig2,Dig3,Dig4,DigPort],Svar). %% utan n�gra punkter >> l�gg till kolon och port longNum([X,XX,XXX,XXXX,Port],Svar):- %format("inne och kollar andras nummer~n",[]), ( number_phrase([X],Dig) ; chk100(X,Dig) ; chk100plus(X,Dig) ), ( number_phrase([XX],Dig2) ; chk100(XX,Dig2) ; chk100plus(XX,Dig2)), ( number_phrase([XXX],Dig3) ; chk100(XXX,Dig3) ; chk100plus(XXX,Dig3)), ( number_phrase([XXXX],Dig4) ; chk100(XXXX,Dig4) ; chk100plus(XXXX,Dig4) ), ( number_phrase([Port],DigPort) ; chk100(Port,DigPort) ; chk100plus(Port,DigPort) ; chk1000(Port,DigPort) ), fixit([Dig,Dig2,Dig3,Dig4,DigPort],Svar). fixit([D,D2,D3,D4,DigPort],Svar):- name(D,DL), name(D2,DL2), name(D3,DL3), name(D4,DL4), name(DigPort,DPL), pun(X), kolon(Kolon), append(DL,X,First), append(First,DL2,FirstD2), append(FirstD2,X,Second), append(Second,DL3,SecondD3), append(SecondD3,X,Third), append(Third,DL4,ThirdD3), append(ThirdD3,Kolon,Fourth), append(Fourth,DPL,Last), name(Svar,Last). pun(X):- name(.,X). kolon(X):- name(:,X). first9([ett,tv�,tre,fyra,fem,sex,sju,�tta,nio]). %% etthundratre %% etthundratjugonio chk100plus(BigAtom,DigAtom):- atomic(BigAtom), name(BigAtom,BigAtomList),%%etthundratre append(Small,Rest,BigAtomList), name(S,Small), ( first9(First9), member(S,First9) -> name(hundra,Hun), prefix(Hun,Rest), append(Hun,Some,Rest), %%hundra,n�t,hundran�t name(Tens,Some), ( member(Tens,First9) %% tre -> !, number_phrase([S],D), number_phrase([noll], D0), number_phrase([Tens],D1), name(D,DL), name(D0,D0L), name(D1,D1L), append(DL,D0L,Temp), append(Temp,D1L,Svar), name(DigAtom,Svar) ; ( Tens \= '' -> !, number_phrase([S],D), number_phrase([Tens],Dig), %%femton,15 name(D,DL), name(Dig,DigL), append(DL,DigL,Svar), name(DigAtom,Svar) ; !, number_phrase([S],D), number_phrase([noll],D0), name(D,DL), name(D0,D0L), append(DL,D0L,Temp), append(Temp,D0L,Svar), name(DigAtom,Svar) ) ) ). chk100(BigAtom,DigAtom):- %format("numer == ~w~n",[BigAtom]), atomic(BigAtom), name(BigAtom,BigAtomList), %%hundratre append(Hundra,Rest,BigAtomList), name(Hun,Hundra), Hun = hundra, first9(First9), name(Tens,Rest), ( member(Tens,First9) %% TTens = tre -> !, number_phrase([ett],D), number_phrase([noll], D0), number_phrase([Tens],D1), name(D,DL), name(D0,D0L), name(D1,D1L), append(DL,D0L,Temp), append(Temp,D1L,Svar), name(DigAtom,Svar) ; ( Tens \= '' -> !, %% Tens = femton number_phrase([ett],D), number_phrase([Tens],D1), name(D,DL), name(D1,D1L), append(DL,D1L,Svar), name(DigAtom,Svar) ; !, DigAtom = 100 ) ). chk1000(BigAtom,DigAtom):- %% BigAtom == fyratusentv�hundratjugotre atomic(BigAtom), first9(FL), name(BigAtom,BigAtomList), %%BAL charlista append(First,ThousRest,BigAtomList), name(First9,First), member(First9,FL), ( First9 = ett -> name(usen,Tusen) ; name(tusen,Tusen) ), append(Tusen,Hundreds,ThousRest), name(Hundra,Hundreds), ( Hundra = '', !, number_phrase([First9],F), number_phrase([noll], N), name(F,Fs), name(N,Ns), append(Fs,Ns,NNs),%40 append(NNs,Ns,NNNs),%400 append(NNNs,Ns,NNNNs), name(DigAtom,NNNNs) ; chk100plus(Hundra,AtomHundra), !, number_phrase([First9],F), name(F,Fs), name(AtomHundra,AH), append(Fs,AH,Res), name(DigAtom,Res) ; member(Hundra,FL), %== tre !, number_phrase([First9],F), % == 4 name(F,Fs), number_phrase([Hundra],HA), number_phrase([noll], N), name(HA,HAL), name(N,Ns), append(Fs,Ns,NNs),%40 append(NNs,Ns,NNNs),%400 append(NNNs,HAL,Res), name(DigAtom,Res) ; !, number_phrase([First9],F), % == 4 name(F,Fs), number_phrase([noll], N), name(N,Ns), number_phrase([Hundra],HA), name(HA,HAL), append(Fs,Ns,NNs),%40 append(NNs,HAL,Res), name(DigAtom,Res) ). number_phrase([noll], 0). number_phrase([ett], 1). number_phrase([tv�], 2). number_phrase([tre], 3). number_phrase([fyra], 4). number_phrase([fem], 5). number_phrase([sex], 6). number_phrase([sju], 7). number_phrase([�tta], 8). number_phrase([nio], 9). number_phrase([tio], 10). number_phrase([elva], 11). number_phrase([tolv], 12). number_phrase([tretton], 13). number_phrase([fjorton], 14). number_phrase([femton], 15). number_phrase([sexton], 16). number_phrase([sjutton], 17). number_phrase([arton], 18). number_phrase([nitton], 19). number_phrase([tjugo], 20). number_phrase([tjugoett], 21). number_phrase([tjugotv�], 22). number_phrase([tjugotre], 23). number_phrase([tjugofyra], 24). number_phrase([tjugofem], 25). number_phrase([tjugosex], 26). number_phrase([tjugosju], 27). number_phrase([tjugo�tta], 28). number_phrase([tjugonio], 29). number_phrase([trettio], 30). number_phrase([trettioett], 31). number_phrase([trettiotv�], 32). number_phrase([trettiotre], 33). number_phrase([trettiofyra], 34). number_phrase([trettiofem], 35). number_phrase([trettiosex], 36). number_phrase([trettiosju], 37). number_phrase([trettio�tta], 38). number_phrase([trettionio], 39). number_phrase([fyrtio], 40). number_phrase([fyrtioett], 41). number_phrase([fyrtiotv�], 42). number_phrase([fyrtiotre], 43). number_phrase([fyrtiofyra], 44). number_phrase([fyrtiofem], 45). number_phrase([fyrtiosex], 46). number_phrase([fyrtiosju], 47). number_phrase([fyrtio�tta], 48). number_phrase([fyrtionio], 49). number_phrase([femtio], 50). number_phrase([femtioett], 51). number_phrase([femtiotv�], 52). number_phrase([femtiotre], 53). number_phrase([femtiofyra], 54). number_phrase([femtiofem], 55). number_phrase([femtiosex], 56). number_phrase([femtiosju], 57). number_phrase([femtio�tta], 58). number_phrase([femtionio], 59). number_phrase([sextio], 60). number_phrase([sextioett], 61). number_phrase([sextiotv�], 62). number_phrase([sextiotre], 63). number_phrase([sextiofyra], 64). number_phrase([sextiofem], 65). number_phrase([sextiosex], 66). number_phrase([sextiosju], 67). number_phrase([sextio�tta], 68). number_phrase([sextionio], 69). number_phrase([sjuttio], 70). number_phrase([sjuttioett], 71). number_phrase([sjuttiotv�], 72). number_phrase([sjuttiotre], 73). number_phrase([sjuttiofyra], 74). number_phrase([sjuttiofem], 75). number_phrase([sjuttiosex], 76). number_phrase([sjuttiosju], 77). number_phrase([sjuttio�tta], 78). number_phrase([sjuttionio], 79). number_phrase([�ttio], 80). number_phrase([�ttioett], 81). number_phrase([�ttiotv�], 82). number_phrase([�ttiotre], 83). number_phrase([�ttiofyra], 84). number_phrase([�ttiofem], 85). number_phrase([�ttiosex], 86). number_phrase([�ttiosju], 87). number_phrase([�ttio�tta], 88). number_phrase([�ttionio], 89). number_phrase([nittio], 90). number_phrase([nittioett], 91). number_phrase([nittiotv�], 92). number_phrase([nittiotre], 93). number_phrase([nittiofyra], 94). number_phrase([nittiofem], 95). number_phrase([nittiosex], 96). number_phrase([nittiosju], 97). number_phrase([nittio�tta], 98). number_phrase([nittionio], 99). %number_phrase([etthundra], 100). %number_phrase([hundra], 100). %%% number_phrase([etthundraett], 101). %%% number_phrase([etthundratv�], 102). %%% number_phrase([etthundratre], 103). %%% number_phrase([etthundrafyra], 104). %%% number_phrase([etthundrafem], 105). %%% number_phrase([etthundrasex], 106). %%% number_phrase([etthundrasju], 107). %%% number_phrase([etthundra�tta], 108). %%% number_phrase([etthundranio], 109). %%% number_phrase([hundraett], 101). %%% number_phrase([hundratv�], 102). %%% number_phrase([hundratre], 103). %%% number_phrase([hundrafyra], 104). %%% number_phrase([hundrafem], 105). %%% number_phrase([hundrasex], 106). %%% number_phrase([hundrasju], 107). %%% number_phrase([hundra�tta], 108). %%% number_phrase([hundranio], 109).