Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

format Equation Exercise (EqEx) v0.1 #1

Open
1 of 4 tasks
Nircek opened this issue Jan 4, 2021 · 13 comments
Open
1 of 4 tasks

format Equation Exercise (EqEx) v0.1 #1

Nircek opened this issue Jan 4, 2021 · 13 comments
Assignees
Labels
documentation Improvements or additions to documentation

Comments

@Nircek
Copy link
Member

Nircek commented Jan 4, 2021

Generalnie wszystko sprowadza się do tego, że jest dużo rzeczy do omówienia, a chciałem już repo założyć, także wszystkie przemyślenia dotyczące pierwszego formalnego szkicu formatu proszę zamieszczać tutaj.

Lista rzeczy do przemyślenia, proszę pingować jak mam coś dodać:

  • ikony w osobnym folderze, czy może bez ikon?
  • jak zrealizować podtagi? (mechanika/tarcie)
  • co z jednostką 1/s? bo można zrobić po prostu /s, łatwo to możemy wykryć, bo zawsze będzie za cyfrą lub ]
  • separatorem między treścią a obliczeniami podwójny enter czy --- czy jeszcze coś innego?

resolves Pikne-Programy/pikne-zadania#3

@Nircek Nircek added the documentation Improvements or additions to documentation label Jan 4, 2021
@Nircek Nircek self-assigned this Jan 4, 2021
@Nircek
Copy link
Member Author

Nircek commented Jan 4, 2021

Na samym początku każdego pliku musi być jakiś nagłówek, no bo chcemy zrobić tagi, więc struktura folderowa typu exercises/mechanika/kinematyka/Pociągi dwa.txt nie przejdzie, bo jedno zadanie może mieć wiele tagów.

Co do samego nagłówka to mnie zainspirował ten z Jekylla, także wyglądałoby to jakoś tak:

---
title: "Cegła"
description: "Cegła na równi"
icon: "cegla.png" 
tags:
  - mechanika/tarcie
---

@Nircek
Copy link
Member Author

Nircek commented Jan 4, 2021

Oddzielamy treść zadania od obliczeń. W treści zadania podajemy wszystkie dane oraz szukane. W obliczeniach możemy stosować zmienne pomocnicze, ale ostatecznie musimy przypisać jakieś wartości do szukanych.

Dane w treści zadania podajemy w ten sposób:

Z miast A i B odległych o d=300km wyruszają jednocześnie dwa pociągi z prędkościami v_a=[40;80]m/s oraz v_b=[40;80]m/s.

Wszystkie dane są więc wplecione w treść zadania. Najważniejszym znakiem w podawaniu danych jest znak =.

Bezpośrednio przed tym znakiem znajduje się oznaczenie danej, np. t, T, t_1, v_1, T_MAX. Przed oznaczeniem musi znajdować się znak spacji lub początek linii.
Bezpośrednio po tym znaku musi znajdować się stała lub przedział losowania oraz jednostka.
W przypadku stałej podajemy po prostu liczbę, jeżeli chcemy podać część ułamkową to używamy znaku ., np 40m/s, 10.4m.
W przypadku przedziału podajemy przedział w postaci [start;stop(;step)]. Domyślnie brane są kolejne wartości z precyzją do trzech cyfr znaczących dokładniejszej wartości, np. [40;60] -> 40.0, 40.1, 40.2, ..., 60.0, [1;10] -> 1.00, 1.01, 1.02, ..., 10.00. W przypadku gdy chcemy to zmienić możemy użyć dodatkowego parametru step, który określa różnicę między kolejnymi wartościami. Wartością startową zawsze jest argument start. Przykłady: [1;10;1] -> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, [0;1;0.12] -> 0.00, 0.12, 0.24, ..., 0.96.
Jeżeli chodzi o jednostki to podajemy je normalnie, np. m, m/s, Hz, Pa. W przypadku stopni albo stopni Celsjusza zamiast znaku stopnia (°) używamy zarezerwowanego słowa deg, np. 30deg, 20degC. Można też używać kreski ułamkowej w jednostkach oraz potęg, np. J/kg*K -> \frac{\mathrm{J}}{\mathrm{kg}!\cdot!\mathrm{K}}, kg/m*s^2 -> \frac{\mathrm{kg}}{\mathrm{m}!\cdot!\mathrm{s}^{2}}.

Natomiast szukane będą także wpisywane w tekście tak samo jak dane, tylko zamiast stałej liczbowej lub przedziału używamy znaku ?, np v=?m/s.

@Nircek
Copy link
Member Author

Nircek commented Jan 4, 2021

Co do funkcji trygonometrycznych to nie ma co się bawić w wykrywanie jednostki... Wszystkie funkcje trygonometryczne (sin, cos, tg, ctg) jak i cyklometryczne (asin, acos, atg, actg) będą miały swoje radianowe odpowiedniki: sinr, cosr, tgr, ctgr, asinr, acosr, atgr, actgr.

@Nircek
Copy link
Member Author

Nircek commented Jan 4, 2021

Wszystkie obliczenia po separatorze są postaci zmienna=równanie. W równaniu można używać podstawowych operacji matematycznych +, -, *, /, potęgowania ^. Dodatkowo można używać nawiasów oraz funkcji trygonometrycznych i cyklometrycznych. Do pierwiastka kwadratowego można użyć funkcji sqrt, ale można też ^(1/2)

@Nircek Nircek changed the title Equation Exercise format (EqEx) v0.1 format Equation Exercise (EqEx) v0.1 Jan 6, 2021
@Nircek
Copy link
Member Author

Nircek commented Jan 6, 2021

teraz jest po polsku

@Nircek
Copy link
Member Author

Nircek commented Jan 6, 2021

co do ikon a bardziej zdjęć to będą w osobnym folderze /img na tym repo, a potem router na serwerze będzie je wrzucał w /exercises_img

@Marwyk2003
Copy link
Member

Marwyk2003 commented Jan 6, 2021

Myślę, że powinniśmy rozdzielać treść zadania od obliczeń znakami ---.
Przykład:

Z miast A i B odległych o d=300km wyruszają jednocześnie dwa pociągi z prędkościami v_a=[40;80]Nm/s^2 oraz v_a=[40;80]m/s^2 W jakiej odległości x=?km od miasta A spotkają się te pociągi? Po jakim czasie t=?s się to stanie?
---
t=300/(v_a+v_b)
x=t*v_a

@Nircek
Copy link
Member Author

Nircek commented Jan 6, 2021

będziemy potrzebowali do pierwszego prototypu też nazwy, więc w v0.1 będzie musiał się znaleźć nagłówek (#1 (comment)), także trzeba będzie go dopisać na początku przykładowego zadania

Z miast A i B odległych o d=300km wyruszają jednocześnie dwa pociągi z prędkościami v_a=[40;80]m/s oraz v_b=[40;80]m/s.
W jakiej odległości x=?km od miasta A spotkają się te pociągi? Po jakim czasie t=?s się to stanie?
t=300/(v_a+v_b)
x=t*v_a

ale to już chyba dopiero jak wydam v0.1 w końcu

@Marwyk2003
Copy link
Member

Marwyk2003 commented Jan 7, 2021

Wprowadźmy kilka konwencji:

  • Nazwa zmiennej: ([a-zA-Z_]+[a-zA-Z_0-9]*)=
  • Liczba+jednostka ([0-9.]+|\[[0-9.;]*\]|\?)(\S*)
  • przy deklaracji zmiennej i w związanych z nią obliczeniach NIE występują spacje

@Nircek
Copy link
Member Author

Nircek commented Jan 7, 2021

@Marwyk2003 jest mały problem z takimi regexami, dlatego unikałbym pisania regexów w dokumentacjach, bo łatwo dojść do sprzecznych wniosków... Jedną z rzeczy jest coś takiego, że takie "liczby" są dozwolone: [], [15], .,[3;], ale to dałoby się jeszcze jakoś obejść w implementacji. Zdecydowanie gorszym problemem jest to, że ktoś chciałby sobie zdefiniować a=-10m/s^2... no i ma problem, bo nie uwzględniliśmy minusa... A skoro tak to co jakby ktoś chciał zdefiniować T=+20degC? A co jeżeli jakaś cząstka ma ładunek q=+e? Nie wiem czy ktoś korzysta z takiego zapisu, ale wikipedia owszem:
obraz
src: https://pl.wikipedia.org/wiki/Proton

@Nircek
Copy link
Member Author

Nircek commented Jan 12, 2021

Obrazki w nagłówku muszą być.

@Nircek
Copy link
Member Author

Nircek commented Jan 12, 2021

Także jak już ustaliliśmy te --- oddzielające treść od obliczeń i wiemy, że tagi są w yamlu i wiemy, że robimy strukturą folderów zamiast tagów to poprawiam zadanie testowe pociągi-dwa.

Nircek added a commit that referenced this issue Jan 12, 2021
@Nircek
Copy link
Member Author

Nircek commented Mar 15, 2021

co do ikon a bardziej zdjęć to będą w osobnym folderze /img na tym repo, a potem router na serwerze będzie je wrzucał w /exercises_img

To już nie ma miejsca, patrz Pikne-Programy/pikne-zadania#3 (comment).

Także zróbmy tak, żeby w nagłówku każdego EqExa albo generalnie Exów (ale to na razie nie) było pole img, które może być stringiem lub tablicą stringów. Każdy string ma odnosić się do nazwy pliku w podfolderze static danego folderu z zadaniami z danego przedmiotu.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

2 participants