Mam w głowie ten pomysł, aby generować i oceniać losowe wyrażenia matematyczne. Postanowiłem więc spróbować i opracować algorytm, zanim zakoduję go w celu przetestowania.
Przykład:
Oto kilka przykładowych wyrażeń, które chcę generować losowo:
4 + 2 [easy]
3 * 6 - 7 + 2 [medium]
6 * 2 + (5 - 3) * 3 - 8 [hard]
(3 + 4) + 7 * 2 - 1 - 9 [hard]
5 - 2 + 4 * (8 - (5 + 1)) + 9 [harder]
(8 - 1 + 3) * 6 - ((3 + 7) * 2) [harder]
Te łatwe i średnie są dość proste. Losowe int
rozdzielone losowymi operatorami, nic szalonego tutaj. Ale mam pewne problemy podręczny z czegoś, co może stworzyć jeden z twardych i twardszych przykładów. Nie jestem nawet pewien, czy jeden algorytm mógłby dać mi dwa ostatnie.
Co rozważam:
Nie mogę powiedzieć, że wypróbowałem te pomysły, ponieważ tak naprawdę nie chciałem tracić dużo czasu, idąc w kierunku, który nie miał szans na pracę w pierwszej kolejności. Ale wciąż myślałem o kilku rozwiązaniach:
- Korzystanie z drzew
- Używanie wyrażeń regularnych
- Korzystanie z szalonej pętli typu „for-type” (na pewno najgorsza)
Czego szukam:
Chciałbym wiedzieć, którą drogę według ciebie najlepiej wybrać, między rozwiązaniami, które rozważałem, a własnymi pomysłami.
Jeśli widzisz dobry sposób na rozpoczęcie, doceniłbym trop we właściwym kierunku, np. Wraz z początkiem algorytmu lub jego ogólną strukturą.
Zauważ też, że będę musiał ocenić te wyrażenia. Można to zrobić po wygenerowaniu wyrażenia lub podczas jego tworzenia. Jeśli weźmiesz to pod uwagę w swojej odpowiedzi, to świetnie.
Nie szukam niczego związanego z językiem, ale dla przypomnienia, myślę o wdrożeniu go w Objective-C, ponieważ jest to język, z którym ostatnio najbardziej pracuję.
Te przykłady nie obejmowały :
operatora, ponieważ chcę jedynie manipulować int
s, a ten operator dodaje wiele weryfikacji. Jeśli Twoja odpowiedź zawiera rozwiązanie tego problemu, to świetnie.
Jeśli moje pytanie wymaga wyjaśnień, proszę pytać w komentarzach. Dzięki za pomoc.