/ / Sieć ograniczeń w Objective-C - Objective-C, Macos, Lisp, SICP, Programowanie ograniczeń

Sieć ograniczeń w Objective-C - cel-c, macos, seplp, sicp, programowanie więzów

Piszę aplikację Objective C w systemie Mac OSX 10.7 i muszę rozwiązać problem z ograniczeniami arytmetycznymi. Na przykład mam dwa równania prostokąta, aib są długościami boków:

P=2(a+b) (perimeter)
A=ab     (area)

Zidentyfikowałem ten problem jako problem związany z satysfakcją z ograniczeń. Użytkownik powinien mieć możliwość określenia a i A oraz wykonania obliczeń b i P przez solver Znalazłem implementację tego w http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-22.html#%_idx_3516 , ale nie jestem pewien, czy istnieje czysty sposóbnazywam programy LISP z Objective C. Szukam czegoś, co mogłoby zapewnić mi interfejs Objective C do solvera, a może skompilować program LISP do biblioteki Objective C. W przeciwnym razie minimalistyczny solver z ograniczeniami open source pasowałby do moich potrzeb.

Odpowiedzi:

1 dla odpowiedzi № 1

Są ludzie budujący systemy Lisp dla iOS. (Zastrzeżenie - Nigdy w życiu nie używałem seplenienia)

To pytanie SO common-lisp-on-iphone-ios punkty dla blog funcall, którego autor ma ecl-iphone-builder na github

To SO pytanie: has-anyone-got-any-code-Examples-of-ecl-lisp-for-iphone-development kończy się w tym samym miejscu docelowym.

Mam nadzieję, że to dobry początek.

EDYTOWAĆ

Całkowicie za tym tęskniłem nie pytanie na iOS.

Ale są ludzie uruchamiający seplenienie w OSX. To SO pytanie ma kilka rozwiązań: what-is-the-best-schemat-lub-lisp-implementacja-dla-os-x

Ten blog: common-lisp-on-mac-os-x jest więcej orzechów (i było dla mnie top Google)


1 dla odpowiedzi nr 2

Przykłady tej książki są zapisane w Schemat, dialekt Lisp (jest ich wiele). Książka jest nieco stara, ale większość dzisiejszych implementacji Schematu byłaby w stanie wykonać przykłady kodu z tej książki. Istnieje kilka implementacji schematu, które działają na OSX, ale przykłady z książki można łatwo przenieść na Common Lisp - naprawdę jest tylko niewielka różnica. Co więcej, nie sądzę, że zajęłoby to tyle czasu, aby napisz je w C / Obj-C. Przykłady w książce mają być programowaniem ogólnego zastosowania, niczym szczególnym od dialektu Lisp, którego używają.

(Artykuł na Wiki zawiera również linki do implementacji, nie chcę reklamować żadnego konkretnego, aby nie wydawać się stronniczy - poza tym nie mam dużego doświadczenia w korzystaniu z niego poza środowiskiem akademickim).

Prawdopodobnie, jeśli szukasz narzędzia ogólnego zastosowania do dowodzenia twierdzeń matematycznych, możesz to sprawdzić Coq - jest to język, który specjalizuje się właśnie w zadaniu. Działa również na dowolnym systemie operacyjnym Unix lub Uniksopodobnym.


0 dla odpowiedzi № 3

Jeśli jest to jedyny problem, który musisz rozwiązać, jest to łatwiejsze. Możesz rozwiązać b pod względem A i a:

b = A / a

Wtedy możesz znaleźć P używając pierwszego opublikowanego równania.


0 dla odpowiedzi nr 4

Język programowania nu to dialekt Lisp, który można zintegrować z Objective-C, w tym być osadzony w aplikacji Objective-C. http://programming.nu/index

Słyszałem o tym bardzo dobre rzeczy, ale nigdy jej nie używałem.

Możesz także spróbować przetłumaczyć tę aplikację do rozwiązywania ograniczeń na Objective-C.