Strona 67 z 73

Re: Zmud pomoc

: 18 maja 2015 21:33
autor: Tercoral
OMG!

A myslalem, ze ja glupie skrypty wymyslam...

wez monety z sakiewki
wez monety z plecaka
liczbamonet = 0
policz miedziane monety
miedziakiON
doliczyles sie XX miedzianych monet
miedziaki off
policz srebrne monety
srebrneON
doliczyles sie XX srebrnych monet
srebrne x 12(?) <- nie wiem
srebrne + miedziaki = liczbamonet
srebrne off

itp
...
zapakuj monety do pojemnika

liczbamonet - wydatek = liczbamonet
echo liczbamonet
TA DA !!

Re: Zmud pomoc

: 18 maja 2015 21:43
autor: Herenvarno
Przy trzech tysiącach+ monet, mój skrypt jest szybszy o niebo od twego pomysłu.
Gdyby zależało mi na czasochłonnym liczeniu, stojąc jednocześnie w miejscu, pewnie stosowałbym to rozwiązanie.
Jedyna potrzeba zliczania na ten sposób monet, jest dla mnie przeliczenie kasy po treningach.

Re: Zmud pomoc

: 18 maja 2015 21:56
autor: Kargrim
Jedyne optymalne co mi przychodzi do głowy to:

1 etap:

- wydajesz wszystkie miedziaki aż spłacisz należność
jeśli nie wystarczyło
- wydajesz wszystkie srebrne aż spłacisz należność
jeśli nie wystarczyło
- wydajesz wszystkie złote aż spłacisz należność
jeśli nie wystarczyło
- wydajesz wszystkie mithrylowe aż spłacisz należność

2 etap:

obliczasz różnicę pomiędzy tym co zapłaciłeś a ceną (np ujednoliconą w miedziakach) i robisz modulo na nominały

edit:

no i potem dodajesz to do swoich ilości monet, które wcześniej pomniejszyłeś o to ile jakich wydałeś przed otrzymaniem reszty

Re: Zmud pomoc

: 18 maja 2015 22:07
autor: Herenvarno
W ten sposob dziala moj skrypt, w petlach %while.
Jak wspomnialem, jest to baaaardzo "zasobozerny" sposob, moze dlatego, ze liczac od srebrnych w "gore", odejmuje po jednej monecie - na poczatku srebrnej, az do wyczerpania itp.
Spowodowane jest to tym, ze kazdy rodzaj monet posiada inna wartosc w miedziakach, i nie jest to system dziesietny. Dlatego zapytalem, czy ktos ma pomysl na "zgrabne rozwiazanie".



Chyba wpadlem na pomysl jak to rozwiazac. Na chwile obecna zawieszam temat. Jesli bedzie dzialalo zgodnie z przewidywaniami, poinformuje jak to zrobilem.
Dziekuje wszystkim za chec pomocy.

Re: Zmud pomoc

: 18 maja 2015 22:18
autor: Kargrim
W porządku. Ale znając cenę, możesz przedstawić ją w miedziakach. Odejmujesz tyle ile masz. Resztę dzielisz przez 12 i zaokrąglasz w górę (tyle brakuje srebra). Odejmujesz ile masz i resztę dzielisz przez 20 znów zaokrąglając w górę (tyle brakuje złota). To samo z mithrylem. W drugą stronę robisz to samo tylko rozdzielasz po nominałach to co zapłaciłeś z nadwyżką.

Masz 8 warunków z 8 sumami. Bez żadnej pętli.

edit up: powodzenia ;)

Re: Zmud pomoc

: 18 maja 2015 23:08
autor: Herenvarno

Kod: Zaznacz cały

#Math Miedz_Mith {@VMith*24000} 
#Math Miedz_Gold {@VGold*240}
#Math Miedz_Silv {@VSilver*12}
#if (@VMiedz<@Naleznosc) {
                          #math VMiedz {@VMiedz+@Miedz_Silv}
                          #var Miedz_Silv {0}
                          #if (@VMiedz<@Naleznosc) {
                                                    #math VMiedz {@VMiedz+@Miedz_Gold}
                                                    #var Miedz_Gold {0}
                                                   }
                          #if (@VMiedz<@Naleznosc) {
                                                    #math VMiedz {@VMiedz+@Miedz_Mith}
                                                    #var Miedz_Mith {0}
                                                   }
                          #if (@VMiedz<@Naleznosc) {
                                                    #ec "Blad w obliczeniach, przelicz w tradycyjny sposob"
                                                   } {
                                                      #Math VMith {%eval(@Miedz_Mith*24000)} 
                                                      #Math VGold {%eval(@Miedz_Gold*240)}
                                                      #Math VSilv {%eval(@Miedz_Silver*12)}
                                                      #VMiedz {@VMiedz-@Naleznosc}
; ponizej alias przeliczajacy miedziaki na najwyzsze nominaly.
; zwracajacy  wynik Math_NOMINAL= ilosc sztuk
                                                      Przelicz_Na_Najwyzszy_Nominal @VMiedz
                                                      #Math VMith {@Math_Mith+@VMith}
                                                      #Math VGold {@Math_Gold+@VGold}
                                                      #Math VSilv {@Math_Silv+@VSilv}
                                                      #Var VMiedz {@Math_Miedz}
                                                  }
                     } {#Math VMiedz {@Math_Miedz-@Naleznosc}}

Re: Zmud pomoc

: 18 maja 2015 23:23
autor: Talisa

Kod: Zaznacz cały

#if @bilet - @cu < 0 
{
@cu = @cu - @bilet
}{
 @bilet = @bilet - @cu
 #if @bilet - @ar*12 < 0
 {
 @cu = %mod((@ar*12-@bilet),12)
 @ar = (@ar*12-@bilet)/12
 }{
  #if
itd...

Re: Zmud pomoc

: 19 maja 2015 00:14
autor: Herenvarno
Tez dobre.

Re: Zmud pomoc

: 19 maja 2015 08:27
autor: Artak
A odnośnie samego liczenia monet, to też jest szybszy sposób niż przez "policz", który można robić w trakcie wykonywania innych czynności :P (bo jednak "policz" niestety blokuje wszystko).
Wystarczy brać z sakiewki po n+1 monet, gdzie n+1 to minimalna ilość monet w których dostajesz komunikat "wziales wiele monet". Później po prostu przemnożyć ilość iteracji wyciągnięcia przez n+1, dodać ostatnią iterację i jest policzone (przez skrypt w ułamku sekundy).

Re: Zmud pomoc

: 20 maja 2015 11:53
autor: Kargrim
Tylko jak ktoś wejdzie wtedy na lokację to mu monitor eksploduje :P