{"id":17576528,"url":"https://github.com/hese49/liike","last_synced_at":"2026-05-05T07:33:57.997Z","repository":{"id":258940719,"uuid":"875930878","full_name":"Hese49/Liike","owner":"Hese49","description":"This program solves problems of motion of the given Finnish verbal problems.","archived":false,"fork":false,"pushed_at":"2024-10-21T06:24:39.000Z","size":51,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-29T15:46:56.737Z","etag":null,"topics":["equation-solver","language-processing","motion","sympy","tkinter-gui"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Hese49.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-21T05:49:23.000Z","updated_at":"2024-10-21T06:48:30.000Z","dependencies_parsed_at":"2024-10-27T07:31:44.127Z","dependency_job_id":null,"html_url":"https://github.com/Hese49/Liike","commit_stats":null,"previous_names":["hese49/liike"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hese49%2FLiike","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hese49%2FLiike/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hese49%2FLiike/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hese49%2FLiike/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Hese49","download_url":"https://codeload.github.com/Hese49/Liike/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246207492,"owners_count":20740723,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["equation-solver","language-processing","motion","sympy","tkinter-gui"],"created_at":"2024-10-21T23:07:31.874Z","updated_at":"2026-05-05T07:33:57.965Z","avatar_url":"https://github.com/Hese49.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"**'Liike.py'  ReadMe**\n\nThis program is in Finnish. The program solves problems of motion of the given Finnish verbal problems.\n\nOhjelma laskee liikeopin laskuja syötetyistä sanallisista tehtävistä. \n(ei voimia) \n\nOHJELMAAN KUULUVAT  TIEDOSTOT\n- **Liike.py**  tai (Jupyter  Liike.ipynb) muodostaa ajo-ohjelmaksi Tkinter graafisen käyttöliittymän  (GUI),\n  jonka tekstikenttään laskutehtävä syötetään ja jonka tulostuskenttään laskettu tulos annetaan.\n  Lisäksi tarvitaan allamainitut kaksi modulia suorittamaan varsinaisen tehtävänratkaisun. Kumpaakin moduleista voidaan käyttää myös itsenäisinä ohjelmina if ( if __name__ == \"__main__\": ).\n- **Liike1b.py  (l1)**. Ratkaisumoduli yksidimensionaalisille liikkeille (esim. kulkuneuvojen  matka, aika, nopeus, kiihtyvyys sekä putoamisliikkeet ja  pystysuorat heitot).\n\n- **Liike2b.py  (l2**). Ratkaisumoduli kaksidimensionaalisille liikkeille. Esim. kuulantyöntö, pallon heitto, ammusten lento jne. Liikkeille voidaan laskea kantama, lakikorkeus, lentoaika, lähtönopeus, lähtökulma, maahantulokulma, nopeuksien komponentit, koordinaatit annetulla hetkellä jne., kunhan vain  on annettu riittävästi lähtötietoja.\n\n- **LiikeTehtäviä.rtf**, joka sisältää 144 esimerkkitehtävää  (mm. oppikirjoista ja internetistä), joita on käytetty ohjelman  kehittämisessä. (Esimerkkitehtävissä esiintyvät 'raketit' tulkitaan 'heitteiksi', joissa rakettimoottori ei työnnä liikkeen aikana)\n\nOHJELMAN TOIMINTA\nOhjelma analysoi syötetyn tehtävätekstin siivilöiden niistä esiin tunnetut suureet ja kysytyn suureen. Sitten etsitään tehtävään sopivat yhtälöt ja käytetään symbolisen laskennan SymPy- modulia ratkaisemaan kysytty suure.\nOhjelman luonnollista kieltä 'ymmärtävä tekoäly' on tässä siis vain rajattun aihepiiriin tekstiin kohdistuvaa algoritmista prosessointia.\n\nOhjelman toiminnan pääpiirteisiin voi tutustua seuraavan esimerkitehtävän kautta. \n\n\" Eräs EM-kisojen kilpailija työnsi harjoituksissa kuulaa 18,0 m. Kuulan lähtökulma oli 45 astetta ja lähtökorkeus maanpinnasta 2,0 m.  Kuinka suuri oli kuulan lähtönopeus?\"   \n \n- Aluksi GUI:n ratkaise-funktio lähettää tehtävätekstin modulille l1:lle, joka selvittää onko kyseessä yksi- vai kaksidimensionaalinen liike. Tämä tapahtuu vertaamalla annetun tekstin sanoja kummallekin eri liikemuodolle ominaisiin sanoihin/sanojen osiin. Esimerkissä sanat 'kuula' ja 'kulma' ovat sanoja, jotka ohjaavat 2-dim liikkeeseen. Saatuaan tämän tiedon GUI lähettää tehtävätekstin Liike2.py  (l2) modulille laskettavaksi.\n\n- l2-modulissa tehtävän teksti muokataan ensin allaolevan kaltaiseksi sanojen, lukujen ja yksiköiden listaksi (sanat), josta on sitten helpompi tunnistaa kysytty suure sekä tunnetut suureet. (funktiot muokkaa1(txt) ja muokkaa2(txt)):\n\nsanat = ['eräs', 'em-kisojen', 'kilpailija', 'työnsi', 'harjoituksissa', 'kuulaa', '18.0', 'm', 'kuulan', 'lähtökulma', 'oli', '45', 'astetta', 'ja', 'lähtökorkeus', 'maanpinnasta', '2.0', 'm', 'kuinka', 'suuri', 'oli', 'kuulan', 'lähtönopeus', '?']\n\n-  Poimitaan sanat-listasta luvut ja yksiköt ja päätellään suuresymboli (funktio tunnetut()). Suureiden tunnistamisessa käytetään hyväksi suureiden yksiköitä,  naapurisanoja (funktio ymp(),  esim. lähtökulma on luvun 45 naapurustossa) sekä tyypillisten sanojen listoja. Kysyttyä suuretta tunnistetaan etsimällä kysymyssanaa (tässä löytyy 'kuinka') tai 'laske' sanaa,  jonka  perästä kysytty suure löytyy (tässä: lähtönopeus).\n\nSuureet:\nbt0 = 45.0 astetta\ny0 = 2.0 m\nyt = 0 m\nxt = 18.0 m\nv0 = ? \n\n- Kirjataan tehtävän luvut sanakirjaan quvh:\nquvh = {'bt0':[bt0, 45,'astetta', 'Heittokulma'],\n'v0':[v0,'?','m/s','Alkunopeus'],'v0x':[v0x,'na','m/s','Alkunop.x-komp.'],\n'v0y':[v0y,'na','m/s','Alkunop. y-komp.'], 'y0':[y0, 2.0, 'm','Alkukorkeus'],\n'ym':[ym,'na','m','Lakikorkeus'],'vx':[vx,'na','m/s','Vaakanopeus'],\n't':[t,'na','s','Aika'],'tn':[tn,'na','s','Nousuaika'],\n'vy':[vy,'na','m/s','Pystynopeus'],'yt':[yt,0,'m','Korkeus'],\n'xt':[xt,18,'m','Kantama'], 'v':[v,'na','m/s','Loppunopeus'],\n'bt':[bt,'na','astetta','Maahantulokulma']}\n\n- Seuraavassa vaiheessa etsitään ( mikä_heitto() ), laskumenettelyjä ('heitto1', heitto2,...),  joihin tunnetut suureet riittävät. Kullekin laskumenettelylle on sanakirjassa h_ehd  oma listansa vaadittavista suureista. \nEsimerkin tilanteessa, kun käytettävissä ovat suureet   avail = ['bt0', 'y0', 'yt', 'xt'],\nh_ehd -sanakirjasta löytyy avain:arvo -pari  'heitto3':['bt0','y0','xt'],  johon tuntemamme suureet riittävät. \n\n- Funktio heitto3() laskee  sitten SymPy -yhtälöparia \n\n   eq6 = sym.Eq(xt - v0x*t, 0)         \u0026nbsp; \u0026nbsp;         # xt = 18 m\n  \n   eq7 = sym.Eq(yt - y0 - v0y*t + 4.905*t**2, 0)   \u0026nbsp; \u0026nbsp;       # yt = 0 m, y0 = 0 m\n\nkäyttäen lähtönopeuden v0:\n  - Sijoitetaan yhtälöön eq6 annettu kantama xt = 18 , jää v0x ja t.\n  - Sijoitetaan yhtälöön eq7:   v0y = tan(bt0)*v0x,  yt=0  ja  y0 = 0.\n  - Saadaan yhtälöpari, jonka tuntemattomat v0x ja t ratkaistaan.    \n  -  etsitty  v0 = v0x/cos(bt0) \n\n- Kun ratkaisu (v0) on löydetty, moduli l2 pyöristää sen ( pyöristys() ) ja muotoilee vastauksen ( tulotus() ) lähettäen sitten  vastauksen käyttöliittymälle GUI tulostettavaksi tulostuskenttään. (Lähtönopeus = 12.6 m/s)\n------------------------- \nHuom. Olen koodaajana vain harrastelija, joten koodissa olisi varmaan paljonkin parantamisen varaa, ja otan huomautuksia ja parannusehdotuksia mielelläni vastaan.  Koodi kuitenkin toimii kohtuullisen hyvin  laajalle valikoimalle sanallisia tehtäviä. :)\nH.M.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhese49%2Fliike","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhese49%2Fliike","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhese49%2Fliike/lists"}