InfoMC 4. labor

Listák

Select

Feltétel

f[x_]:=If[EvenQ[x],x/2, 3x+1]

f[3]
f[6]

A Select függvény kiválaszt bizonyos elemeket egy listából

Select[{a,b,1,11.5,3}, OddQ]

A múlt órához :

VowelQ[x_]:=MemberQ[{"a", "á", "e","é", "i", "í", "o", "ó", "ö", "ő", "u", "ú", "ü", "ű"},x]

VowelQ["a"]
VowelQ["k"]

Select[Characters["kutya"], VowelQ]

Feladat

Válaszuk ki egy szöveg szavai közül a nagybetűvel kezdődőket!

Például: Nagy[“A Pápa Vatikánba utazik.”] → {“A”, “Pápa”, “Vatikánba”}

TextWords

(*Ez a függvény eldönti, hogy nagybetűs-e egy szó*)
NagyE[szó_]:=UpperCaseQ[Characters[szó][[1]]]

NagyE["A"]
NagyE["utazik"]

Nagy[szöveg_]:=Select[TextWords[szöveg], NagyE]

Nagy["A Pápa Vatikánba utazik."]

Plot

Plot[(x^2),{x,-2,2}]

Plot[(x^2),{x,-2,2}, PlotStyle->Thick]

Feladat

a)

Ábrázoljuk a Sin függvényt a [-2π, 2π] intervallumon. Legyen színes! A tengelyek az origóban messék egymást! Írjunk hozzá tengely feliratokat!

Plot[Sin[x], {x,-2Pi, 2Pi}, PlotStyle->Red, AxesOrigin->{0,0}, AxesLabel->{"x","szinusz"}]

b)

Ábrázoljuk az előzőt úgy, hogy az x-tengely feletti rész piros, alatta zöld legyen.

Plot[Sin[x], {x,-2Pi, 2Pi}, ColorFunction->Function[{x,y}, If[y>0, Red, Green]], ColorFunctionScaling->False]

c)

Ábrázoljuk az előzőt úgy, hogy az x-tengely feletti rész szaggatott, alatta vastag legyen.

(*Először csak a tetejék*)Plot[Sin[x], {x,-2Pi, 2Pi}, RegionFunction->Function[{x,y}, y>0], PlotStyle->Dashed]

(*most csak az alját*)
Plot[Sin[x], {x,-2Pi, 2Pi}, RegionFunction->Function[{x,y}, y<0], PlotStyle->Thick]

(*most együtt*)
Show[
Plot[Sin[x], {x,-2Pi, 2Pi}, RegionFunction->Function[{x,y}, y>0], PlotStyle->Dashed],
Plot[Sin[x], {x,-2Pi, 2Pi}, RegionFunction->Function[{x,y}, y<0], PlotStyle->Thick]
]

ListPlot

Ezzel diszkrét pontokat lehet megjeleníteni.

ListPlot[{{0,0},{1,1},{2,2}}]

Ha nem írunk x-értékeket, akkor az {1,2,...} lesz alapértelmezetten.

ListPlot[Table[(x^2),{x,-5,5}]]

Feladat

Ábrázoljuk az (x^2) függvényt a ListPlot-tal a [-5,5] intervallumon, úgy hogy a parabola legmélyebb pontja a (0,0)-ban legyen (ne a 6-ban, amint a fenti ábrán)! Színezzük ki az ábrát!

ListPlot[Table[{x,(x^2)},{x,-5,5}], PlotStyle->Green, AxesStyle->{Blue, Red}]

Nyelvi elemzés

Egy segéd függvény:

ReplaceTextElement[x_]:=x//.{TextElement[a_, b_]->{b,a}, TextElement[a_]->a, Association[Rule["GrammaticalUnit",Entity["GrammaticalUnit",b_]]]->b}

Nyelvtani fa és szófaj.

TextStructure["The cat sat on the mat."]
TreeForm[%]
ReplaceTextElement[%%]

TextStructure["The cat sat on the mat.","PartsOfSpeech"]
TreeForm[%]
ReplaceTextElement[%%]

ReplaceTextElement[TextStructure["You talk the talk, but do you walk the walk?","PartsOfSpeech"]]

Feladat

Írjunk olyan függvényt, ami ábrázolja, hogy a bemeneti mondatban hány szó volt adott szófajú!

(*A szavak elemzései kiderülnek a fenti függvényből*)
Postags[text_]:=Table[p[[1]],{p,ReplaceTextElement[TextStructure[text,"PartsOfSpeech"]][[1,2]]}]

(*Az előző pálda kimenete lecsupaszítva*)
Postags["You talk the talk, but do you walk the walk?"]

(*összeszámlálás*)
Counts[Postags["You talk the talk, but do you walk the walk?"]]

(*Együtt a megjelenítéssel*)
PlotPosTags[text_]:=
ListPlot[
Values[
Counts[
Table[p[[1]],{p,ReplaceTextElement[TextStructure[text,"PartsOfSpeech"]][[1,2]]}]
]
]
]

PlotPosTags["You talk the talk, but do you walk the walk?"]

(*Még szebb lesz, ha az x tengelyre a szófajokat is felírjuk*)
PlotPosTags2[text_]:=Module[
{PosCounts=Counts[
Table[p[[1]],{p,ReplaceTextElement[TextStructure[text,"PartsOfSpeech"]][[1,2]]}]
]},
ListPlot[
Values[PosCounts], Ticks->{Table[{i,Keys[PosCounts][[i]]},{i,1, Length[PosCounts]}], Automatic}]
]

PlotPosTags2["You talk the talk, but do you walk the walk?"]