Monthly Archives: styczeń 2019
Ogólna koncepcja i cel projektu – Lazy Swarm
Ogólny cel projektu:
Opracowanie metod, technik oraz algorytmów dla jednego lub wielu urządzeń pracujących samodzielnie lub w roju. Prototypem będzie robot jednak może być to dowolne inne urządzenie.Koncepcja projektu:
Budowa prototypu robota oraz docelowo stworzenie roju współpracujących ze sobą robotów w celu osiągnięcia wspólnego celu.Możliwe zastosowania:
-eksploracja kosmosuPierwszy demontaż łodzi – Lazy Submarine
Pierwszy demontaż łodzi:
Montaż pierwszego prototypu – Lazy Swarm
Efekt końcowy montażu:
Funkcja na liście – Standard ML
Treść zadania:
Zadeklarować funkcję nest: (int → int) * int list → int określoną następująco:
nest(f, []) = 0
nest(f,[a]) = f(a,0)
nest(f,[a1,a2, … ,an]) = f(a1,f(a2(…(an,0)…)
Przykład:
nest(f,[])=0
nest(f,[a])=f(a,0)
nest(f,[a,b])=f(a,f(b,0)
nest(f,[a,b,c])=f(a,f(b,(f(c,0)))
Kod źródłowy:
Dla potrzeb testów deklaruję funkcję f która przyjmuje dwa argumenty i zwraca ich sumę
Przypadki testowe:
Zadeklarować funkcję nest: (int → int) * int list → int określoną następująco:
nest(f, []) = 0
nest(f,[a]) = f(a,0)
nest(f,[a1,a2, … ,an]) = f(a1,f(a2(…(an,0)…)
Przykład:
nest(f,[])=0
nest(f,[a])=f(a,0)
nest(f,[a,b])=f(a,f(b,0)
nest(f,[a,b,c])=f(a,f(b,(f(c,0)))
Kod źródłowy:
fun nest(f:int*int -> int ,x) = if null(x) then 0 else f(hd(x),nest(f,tl(x)));
Dla potrzeb testów deklaruję funkcję f która przyjmuje dwa argumenty i zwraca ich sumę
fun f(x,y) = x+y;
Przypadki testowe:
nest(f,[]); nest(f,[1]); nest(f,[1,2]); nest(f,[1,2,3]); nest(f,[1,2,3,4]); nest(f,[1,2,3,4,5]);
Funkcja listy – Standard ML
Treść zadania:
Napisać deklarację funkcji f : int list → int list określonej następująco:
f(x) = lista otrzymana z listy x przez podzielenie wszystkich liczb parzystych w x przez 2 i powiększenie wszystkich liczb nieparzystych na liście x o 2.
Przykład:
f([1,2,3,4,5,6]) = [3,1,5,2,7,3]
Kod źródłowy:
Przypadek testowy:
Napisać deklarację funkcji f : int list → int list określonej następująco:
f(x) = lista otrzymana z listy x przez podzielenie wszystkich liczb parzystych w x przez 2 i powiększenie wszystkich liczb nieparzystych na liście x o 2.
Przykład:
f([1,2,3,4,5,6]) = [3,1,5,2,7,3]
Kod źródłowy:
fun append(x, y) = if null(x) then y else hd(x) :: append(tl(x), y) fun pn(x:int) = if x mod 2 = 0 then x div 2 else x+2 fun f(x) = if null(x) then x else append([pn(hd(x))],f(tl(x)));
Przypadek testowy:
f([1, 2, 3, 4, 5, 6]);
Odwracanie listy – Standard ML
Funkcja przyjmuje za argument listę i odwraca ją (zmienia kolejność elementów)
Kod programu:
Wywołanie funkcji dla listy: 1, 2, 3, 4, 5
Wynikiem jest:
Kod programu:
fun append(x, y) = if null(x) then y else hd(x) :: append(tl(x), y) fun reverse(x) = if null(x) then x else append(reverse(tl(x)), hd(x) :: [ ]);
Wywołanie funkcji dla listy: 1, 2, 3, 4, 5
reverse ([[1],[2],[3],[4],[5]]);
Wynikiem jest:
val it = [[5],[4],[3],[2],[1]] : int list list
Prosta funkcja – Standard ML
Napisz program który zrobi prostą funkcję w SML
f(1) = 2 = 21
f(2) = 4 = 22
f(3) = 16 = 24
f(4) = 256 = 28
f(5) = 65536 = 216
Kod źródłowy:
Wywołania funkcji:
f(1) = 2 = 21
f(2) = 4 = 22
f(3) = 16 = 24
f(4) = 256 = 28
f(5) = 65536 = 216
Kod źródłowy:
fun f(x:int) = if x=1 then 2 else f(x-1)*f(x-1);
Wywołania funkcji:
f(1); f(2); f(3); f(4); f(5);
Funkcja McCarthy’ego – Standard ML
Implementacja funkcji McCarthy’ego w języku Standard ML
Dla danych wejściowych:
Wynikiem będzie:
fun f(x) = if x>100 then x-10 else f(f(x+11));
Dla danych wejściowych:
f(100+11);
Wynikiem będzie:
val it = 101 : int
Standard Metal Language – jak zacząć?
Do pisania programów w Standard Meta Langauge (SML) potrzebujesz:
• komputera z systemem Windows / Unix / MacOS
• edytora tekstu
• kompilatora języka
• przeglądarki internetowej
Kompilator jest oprogramowaniem darmowym na licencji open-source.
Wersja z której osobiście korzystałem to Standard ML of New Jersey.
Strona domowa języka: https://www.smlnj.org
Strona z gotowymi paczkami: https://www.smlnj.org/dist/working/110.82/index.html
Wystarczy pobrać plik .msi oraz go zainstalować.
Wersja z której korzystałem: http://smlnj.cs.uchicago.edu/dist/working/110.82/smlnj-110.82.msi
Do edytowania programów używałem NotePad++ a pliki zapisywałem z rozszerzeniem .sml
https://notepad-plus-plus.org
Przydatne linki:
• Instalacja na windows: https://www.smlnj.org/dist/working/110.82/WININSTALL
• Instalacja na innych systemach: https://www.smlnj.org/dist/working/110.82/WININSTALL
• Lista książek do języka Standard ML: https://www.smlnj.org/doc/literature.html#books
• Lista kilku tutoriali: https://www.smlnj.org/doc/literature.html#tutorials
• Najczęściej zadawane pytania: https://www.smlnj.org/doc/FAQ/index.html
• Dokumentacja języka Standard ML: https://www.smlnj.org/doc/index.html
Po instalacji i uruchomieniu otrzymujemy konsolę do której możemy wklejać nasze programy:
• komputera z systemem Windows / Unix / MacOS
• edytora tekstu
• kompilatora języka
• przeglądarki internetowej
Kompilator jest oprogramowaniem darmowym na licencji open-source.
Wersja z której osobiście korzystałem to Standard ML of New Jersey.
Strona domowa języka: https://www.smlnj.org
Strona z gotowymi paczkami: https://www.smlnj.org/dist/working/110.82/index.html
Wystarczy pobrać plik .msi oraz go zainstalować.
Wersja z której korzystałem: http://smlnj.cs.uchicago.edu/dist/working/110.82/smlnj-110.82.msi
Do edytowania programów używałem NotePad++ a pliki zapisywałem z rozszerzeniem .sml
https://notepad-plus-plus.org
Przydatne linki:
• Instalacja na windows: https://www.smlnj.org/dist/working/110.82/WININSTALL
• Instalacja na innych systemach: https://www.smlnj.org/dist/working/110.82/WININSTALL
• Lista książek do języka Standard ML: https://www.smlnj.org/doc/literature.html#books
• Lista kilku tutoriali: https://www.smlnj.org/doc/literature.html#tutorials
• Najczęściej zadawane pytania: https://www.smlnj.org/doc/FAQ/index.html
• Dokumentacja języka Standard ML: https://www.smlnj.org/doc/index.html
Po instalacji i uruchomieniu otrzymujemy konsolę do której możemy wklejać nasze programy: