Zmud pomoc
Re: Zmud pomoc
Super podejście, Herenvarno. Nie wpadłeś na to, że wklejając ten kawałek kodu na byle wklej.org i dając linka za tydzień kolejny niezorientowany będzie mógł skorzystać?
I aim to misbehave.
Systematycznie dążę do wyrugowania hejtu z arsenału swoich środków wyrazu.
Systematycznie dążę do wyrugowania hejtu z arsenału swoich środków wyrazu.
- Herenvarno
- Posty: 809
- Rejestracja: 09 mar 2010 11:22
Re: Zmud pomoc
Werbacie, nie wpadles na to, ze byc moze sa osoby, ktorym nic nie chce dac do rak osobiscie, w zwiazku z tym nie wkleje kodu?
Re Werbat
Podziekuj i pogratuluj kolegom z forum:
Re Werbat
Podziekuj i pogratuluj kolegom z forum:
W koncu to stek bzdur .Khristoff pisze:Wszystkie 805 postów które napisałeś to stek bzdur.
Ostatnio zmieniony 29 maja 2015 15:47 przez Herenvarno, łącznie zmieniany 1 raz.
Nie każdy jest mile widziany w moim domu. Gdybym wszystkich traktował jednakowo, nikogo nie wyróżniłbym!
Re: Zmud pomoc
Tym bardziej gratuluję podejścia.
I aim to misbehave.
Systematycznie dążę do wyrugowania hejtu z arsenału swoich środków wyrazu.
Systematycznie dążę do wyrugowania hejtu z arsenału swoich środków wyrazu.
- Herenvarno
- Posty: 809
- Rejestracja: 09 mar 2010 11:22
Re: Zmud pomoc
Posiadam skrypt, kontrolujacy wydatki mojej postaci. Liczac skrupulatnie wszelkie zyskane monety, jak tez wydawane.
Pieknie podlicza koszt denominacji i inne takie duperelki.
W skrocie, Zmud kontroluje jak wiele, oraz jakich monet ma przy sobie postac.
Jednak jedna rzecz wydaje mi sie strasznie nieefektywnie zaprojektowana w skrypcie.
Przypuscmy ze, postac ma przy sobie:
Nasza postac wlasnie placi za bilet wart przykladowe 200 miedziakow.
Triger wylapuje te informacje, porownuje wielkosc 200 miedziakow ktore wlasnie zaplacono, ze zmienna @CUprum.
Orientuje sie, ze zaplata nie mogla odbyc sie przy pomocy samych miedziakow.
Tu moj skrypt przelicza - jakie monety powinny zostac po tej operacji finansowej, do dyspozycji postaci.
Niestety, sam skrypt jest bardzo "niewydajny".
Ma wiec ktos pomysl na lekkie, wydajne oskryptowanie takiego obliczenia?
Pieknie podlicza koszt denominacji i inne takie duperelki.
W skrocie, Zmud kontroluje jak wiele, oraz jakich monet ma przy sobie postac.
Jednak jedna rzecz wydaje mi sie strasznie nieefektywnie zaprojektowana w skrypcie.
Przypuscmy ze, postac ma przy sobie:
Kod: Zaznacz cały
; +------------------------------------+
; | Zmienne dotyczace monet przy sobie |
; +------------------------------------+
; mithrylowe monety
#var Mithryl {2}
; zlote monety
#var AUrum {7}
; srebrne monety
#var ARgentum {0}
; miedziane monety
#var CUprum {42}
Triger wylapuje te informacje, porownuje wielkosc 200 miedziakow ktore wlasnie zaplacono, ze zmienna @CUprum.
Orientuje sie, ze zaplata nie mogla odbyc sie przy pomocy samych miedziakow.
Tu moj skrypt przelicza - jakie monety powinny zostac po tej operacji finansowej, do dyspozycji postaci.
Niestety, sam skrypt jest bardzo "niewydajny".
Ma wiec ktos pomysl na lekkie, wydajne oskryptowanie takiego obliczenia?
Nie każdy jest mile widziany w moim domu. Gdybym wszystkich traktował jednakowo, nikogo nie wyróżniłbym!
Re: Zmud pomoc
Ale jak dla mnie masz algorytmowo dwa podejścia (zależy co tak na prawdę chcesz mieć na wyjściu).
Jeśli chcesz mieć ilość monet, które postaci zostało, to niestety algorytm idzie po kolei:
Najpierw wydaje wszystkie miedziaki
Sprawdza czy zostało coś do zapłacenia
Wydaje srebrne monety przeliczone na miedziaki
Sprawdza czy zostało coś do zapłacenia
...
Jak nie zostało nic do zapłacenia, to sprawdza ile pozostało ostatnio wydanych monet i do posiadanego majątku dolicza resztę, którą postać powinna otrzymać po wydaniu monet.
Jednak, jeśli by liczyć jaki majątek ma postać (nie patrząc na to jakie nominały aktualnie znajdują się w sakiewce), to imho najlepszym sposobem byłoby przetrzymywanie wszystkiego w ilości miedziaków i w tym momencie przy wyrzucaniu na ekran po prostu przeliczyć na bardziej sensowne nominały.
Jeśli chcesz mieć ilość monet, które postaci zostało, to niestety algorytm idzie po kolei:
Najpierw wydaje wszystkie miedziaki
Sprawdza czy zostało coś do zapłacenia
Wydaje srebrne monety przeliczone na miedziaki
Sprawdza czy zostało coś do zapłacenia
...
Jak nie zostało nic do zapłacenia, to sprawdza ile pozostało ostatnio wydanych monet i do posiadanego majątku dolicza resztę, którą postać powinna otrzymać po wydaniu monet.
Jednak, jeśli by liczyć jaki majątek ma postać (nie patrząc na to jakie nominały aktualnie znajdują się w sakiewce), to imho najlepszym sposobem byłoby przetrzymywanie wszystkiego w ilości miedziaków i w tym momencie przy wyrzucaniu na ekran po prostu przeliczyć na bardziej sensowne nominały.
Re: Zmud pomoc
No nie zamiesciłeś skryptu, więc cięzko powiedzieć, dlaczego jest niewydajny.
Spróbowałbym tak: posiadany stan monet zamienić na miedź, odjąć wydane miedziaki, z powrotem zamienić na mt/zl/dr/md. Wg mnie ta zasada ma sens dla każdej transakcji, nawet jeśli do triggera lecą nie tylko miedziaki. Zeby nie przeliczac za kazdym razem w obie strony uzywalbym nie 4 zmiennych przechowujacych stan przy sobie, a 5. Piąta to kwota całkowita w miedzi. Jej używasz do obliczeń, pozostałe 4 do wyświetlania stanu posiadanych pieniędzy.
Wyliczenie calkowitej ilosci miedzi
TotalMd = md + sr * 12 + zl * 240 + mt * 24000
Wydatek
TotalMd = TotalMd - WydatekMd
Wyliczenie wartosci dla poszczegolnych jednostek
x = TotalMd
mt = x / 24000
x = x \ 24000
zl = x / 240
x = x \ 240
sr = x / 12
x = x \ 12
md = x
Wg https://www.zuggsoft.com/zmud/help6/Expressi.htm znak "/" to dzielenie z odrzuceniem części ułamkowej, natomiast '\" to dzielenie ze zwróceniem modulo (reszty z dzielenia). Nie jestem matematycznym "miszczem", ale mam nadzieję, że jest ok.
Może ktoś będzie miał lepszy pomysł.
Na podstawie tego zdania zakładam, że stosujesz instrukcje warunkowe, w wyniku czego skrypt jest bardziej rozbudowany, niż byś chciał. Dobrze zgaduję?Orientuje sie, ze zaplata nie mogla odbyc sie przy pomocy samych miedziakow.
Spróbowałbym tak: posiadany stan monet zamienić na miedź, odjąć wydane miedziaki, z powrotem zamienić na mt/zl/dr/md. Wg mnie ta zasada ma sens dla każdej transakcji, nawet jeśli do triggera lecą nie tylko miedziaki. Zeby nie przeliczac za kazdym razem w obie strony uzywalbym nie 4 zmiennych przechowujacych stan przy sobie, a 5. Piąta to kwota całkowita w miedzi. Jej używasz do obliczeń, pozostałe 4 do wyświetlania stanu posiadanych pieniędzy.
Wyliczenie calkowitej ilosci miedzi
TotalMd = md + sr * 12 + zl * 240 + mt * 24000
Wydatek
TotalMd = TotalMd - WydatekMd
Wyliczenie wartosci dla poszczegolnych jednostek
x = TotalMd
mt = x / 24000
x = x \ 24000
zl = x / 240
x = x \ 240
sr = x / 12
x = x \ 12
md = x
Wg https://www.zuggsoft.com/zmud/help6/Expressi.htm znak "/" to dzielenie z odrzuceniem części ułamkowej, natomiast '\" to dzielenie ze zwróceniem modulo (reszty z dzielenia). Nie jestem matematycznym "miszczem", ale mam nadzieję, że jest ok.
Może ktoś będzie miał lepszy pomysł.
Re: Zmud pomoc
Kjell problem tego rozwiązania jest przy danych wejściowych. Jeśli na wejściu masz monety, które nie do końca są najlepiej ułożone nominałami (czyli przykładowo 1mt, 120zł, 40sr, 5mdz) to przeliczanie całości na miedź da Ci błędny wynik (w momencie jeśli interesuje Cię dokładna ilość monet danego rodzaju, jak napisałem w poprzednim poście)
Re: Zmud pomoc
No jak to?
1mt, 120zl, 40sr, 5md to jest to samo co 2mt 22zl 0 sr 5 md, zgadza sie? Podstaw jedno i drugie do wzoru:
x = md + sr * 12 + zl * 240 + mt * 24000
5 + 40 * 12 + 120 * 240 + 1 * 24000 = 5+ 480 + 28800 + 24000 = 53285
5 + 0 * 12 + 22 * 240 + 2 * 24000 = 5 + 0 + 5280 + 48000 = 53285
Wynik ten sam. I teraz mozesz wykonac operacje dodawania/odejmowania (lub nie, jesli nie ma takiej potrzeby) i zamienic z powrotem na mt/zl/sr/md wg wzoru w moim poprzednim poscie.
1mt, 120zl, 40sr, 5md to jest to samo co 2mt 22zl 0 sr 5 md, zgadza sie? Podstaw jedno i drugie do wzoru:
x = md + sr * 12 + zl * 240 + mt * 24000
5 + 40 * 12 + 120 * 240 + 1 * 24000 = 5+ 480 + 28800 + 24000 = 53285
5 + 0 * 12 + 22 * 240 + 2 * 24000 = 5 + 0 + 5280 + 48000 = 53285
Wynik ten sam. I teraz mozesz wykonac operacje dodawania/odejmowania (lub nie, jesli nie ma takiej potrzeby) i zamienic z powrotem na mt/zl/sr/md wg wzoru w moim poprzednim poscie.
Re: Zmud pomoc
Kjell teoretycznie to samo, ale mając 2mt 22zl 0 sr 5 md masz 29 monet w sakiewce, a mając 1mt, 120zl, 40sr, 5md masz 166 monet w sakiewce. Mając małą sakiewkę i dostając jakieś nowe monety w pierwszym przypadku spokojnie je wrzucasz, w dugim przypadku nagle monety Ci się nie mieszczą I dlatego napisałem w swoim poście, że wszystko zależy od tego co pytający chce osiągnąć (czy chce wiedzieć jakie monety ma, czy chce wiedzieć jaki ma majątek )
- Herenvarno
- Posty: 809
- Rejestracja: 09 mar 2010 11:22
Re: Zmud pomoc
Chodzi wlasnie by znac dokladna ilosc kazdego nominalu.
Nie każdy jest mile widziany w moim domu. Gdybym wszystkich traktował jednakowo, nikogo nie wyróżniłbym!