Rešitev: Produkt jezikov (Mathematica)

Iz MaFiRaWiki

Naloga: Produkt jezikov

 Clear[jevL, jevK, jevProduktu, jevPreseku];
 jevL[w_] := MemberQ[L,w];
 jevL::usage = "Funkcija, ki vrne True, če je beseda w v jeziku L, sicer vrne False.";
 jevK[w_] := MemberQ[K, w];
 jevL::usage = "Funkcija, ki vrne True, če je beseda w v jeziku L, sicer vrne False.";
 
 f[b_,K_] := Map[(StringJoin[b, #]) &, K];
 jevProduktu[L_,K_,w_] := MemberQ[Union[Flatten[Map[(f[#,K])&, L]]], w];
 jevProduktu::usage = "Funkcija, ki vrne True, če je beseda w v produktu jezikov L in K (LK), sicer vrne False.";
 
 jevPreseku[L_,K_,w_] := MemberQ[Intersection[L,K], w];
 jevPreseku::usage = "Funkcija, ki vrne True, če je beseda w v preseku jezikov L in K, sicer vrne False.";

Preizkusimo na primeru:

 L = {"a", "ab"};
 K = {"b", "aa", "ab"};
 In[13]:= jevL["a"]
 Out[13]:= True
 
 In[14]:= jevK["bb"]
 Out[14]:= False
 
 In[15]:= jevProduktu[L,K,"abab"]
 Out[15]:= True
 
 In[16]:= jevPreseku[L,K,"ab"]
 Out[16]:= True

Glej tudi

Osebna orodja