dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

Matemātiska problēma
Goto page 1, 2  Next
 
dev.gamez.lv Forum Index -> Matemātika un fizika
View previous topic :: View next topic  
Author Message
Inf3rnal



Joined: 15 Jun 2006
Posts: 118
Location: Neverland

PostPosted: Thu Aug 09, 2007 4:35 pm    Post subject: Matemātiska problēma

Lauzīju galvu pie kāda nevisai sareģīta jautājuma, bet tā kā laukā ir diezgan silti - galvā dažādas citas domas Smile nekas prātīgs nesanāca.

Vajag izskaitļot Items izturību ( cīņu skaitu uz kurām pietiks itema izturības pirms tas salūzīs pilnībā ) ir noteikums, ka itema pašreizējā izturība (xxx/100) katrā ciņā samazinās par 1. Kad pašreizējā izturība nonāk lidz 0, tad maksimālā izturība samazinas par 1, tb kad Items ir (0/100) pēc remonta viņš kļūst par (99/99) utt.

Mani interesē funkcija kas izskāitļo cik galu galā cinjām pietiks šī vai kāda cita Itema izturības, piemēram es zinu ka (100/100) pilnīgi salūzīs pēc 5050 cīņām.

Cik garš apraksts tik mazai funkcijai :)

Pavisam aizmirsu, es to visu taisu C++ ( beidzot metu malā VB, jo rudenī beidzot eju augstskolā to visu studēt nopietni... )
Back to top
View user's profile Send e-mail
DeRatizators



Joined: 27 Apr 2006
Posts: 492

PostPosted: Thu Aug 09, 2007 5:29 pm    Post subject:

No sērijas "Kāda ir skaitļu summa, skaitļiem no 1 līdz 1000".


P.S. formula ir ļoti vienkārša, iesaku padomāt vēl 10 min. Būs lielāks gandarījums Smile
_________________
Any PANCAKE has to be long and thin and short and fat. Not to mention being an excellent insulator and a superb conductor.
Back to top
View user's profile
Inf3rnal



Joined: 15 Jun 2006
Posts: 118
Location: Neverland

PostPosted: Thu Aug 09, 2007 5:53 pm    Post subject:

Aizgāju uz veikalu pēc vēsa minerālīša, un man radās ideja:

Code:
    for (i=0; i<maxDurability; i++)
    {
        totalDurability += maxDurability - i;
    };
    totalDurability -= maxDurability - curDurability;


Tā ir pareizi? tb itkā jau darbojas, bet varbūt ir racionālāks risinājums? Smile
_________________
while(!asleep()) sheep++;
Back to top
View user's profile Send e-mail
DeRatizators



Joined: 27 Apr 2006
Posts: 492

PostPosted: Thu Aug 09, 2007 5:59 pm    Post subject:

Nu tev ir brute-force variants :)

Iedomāsimies ka tev tā maksimālā izturība ir 10.
Sanāk ka patiesība mēs tavu shēmu varam prezentēt kā skaitļu summu no 1-10:
1;2;3;4;5;6;7;8;9;10

Var pamanīt, ka saskaitot 1 ar 10 un 2 ar 9 mēs iegūstim vienu un to pašu rezultātu. Tas pats arī saskaitot 5 ar 6 un sādu saskaitīsanu jāveic aptuveni divreiz mazāk reižu nakā tev ir skaitļu šajā virknē.

[Ja tev būtu nepāra skaits saskaitāmo, tad mēs ņemtu palīgā 0 un būtība nemainītos]

Ja remontu skaits ir tāds pats kā sākotnējā maksimālā izturība:
skaits = (x*x + x) / 2
_________________
Any PANCAKE has to be long and thin and short and fat. Not to mention being an excellent insulator and a superb conductor.
Back to top
View user's profile
Inf3rnal



Joined: 15 Jun 2006
Posts: 118
Location: Neverland

PostPosted: Thu Aug 09, 2007 6:04 pm    Post subject:

Cik es saprotu tad tavā variantā izturība tiek skaitļota tikko salabotam priekšmetam, bet manā jebkurā stavoklī esošam priekšmetam. Vai arī es kļūdos? Jāņem vērā arī tas ka priekšmeta izturība nevienmēr ir 10/10, piemēram priekšmets ir 7/10...
_________________
while(!asleep()) sheep++;
Back to top
View user's profile Send e-mail
DeRatizators



Joined: 27 Apr 2006
Posts: 492

PostPosted: Thu Aug 09, 2007 6:09 pm    Post subject:

heh, sliņķis :)

ja tev x ir izturība šajā iterācijā un y ir pašreizējā iterācija (x/y) ,
tad ņemam sākot no nākamās pilnās iterācijas. Vaitad nav loģiski ?

Ja y > 1

z = y - 1;
skaits = (z*z + z)/2 + x
_________________
Any PANCAKE has to be long and thin and short and fat. Not to mention being an excellent insulator and a superb conductor.
Back to top
View user's profile
Inf3rnal



Joined: 15 Jun 2006
Posts: 118
Location: Neverland

PostPosted: Thu Aug 09, 2007 6:17 pm    Post subject:

Un kas tad ir labāk?

Code:
for (i=0; i<maxDurability; i++)
    {
        totalDurability += maxDurability - i;
    };
    totalDurability -= maxDurability - curDurability;


vai

Code:
    if (maxDurability > 1)
    {
       z = maxDurability - 1;
       totalDurability = (z * z + z) / 2 + curDurability;
    };


Mans laikam ir mazliet lēnāks...?
_________________
while(!asleep()) sheep++;
Back to top
View user's profile Send e-mail
DeRatizators



Joined: 27 Apr 2006
Posts: 492

PostPosted: Thu Aug 09, 2007 6:27 pm    Post subject:

Inf3rnal wrote:
Un kas tad ir labāk?

Code:
for (i=0; i<maxDurability; i++)
    {
        totalDurability += maxDurability - i;
    };
    totalDurability -= maxDurability - curDurability;


vai

Code:
    if (maxDurability > 1)
    {
       z = maxDurability - 1;
       totalDurability = (z * z + z) / 2 + curDurability;
    };


Mans laikam ir mazliet lēnāks...?


Mjā, ja nopietni ,tad tas stipri atkarīgs no processora un datu tipa (long vai float). Ja izturība ir vesels skaitlis un tas ir domāts mūsdienu agregātam, tad var droši taisīt likmes uz manis piedāvāto variantu.
Bet citādi diezgan dīvains jautājums Smile
_________________
Any PANCAKE has to be long and thin and short and fat. Not to mention being an excellent insulator and a superb conductor.
Back to top
View user's profile
DeRatizators



Joined: 27 Apr 2006
Posts: 492

PostPosted: Thu Aug 09, 2007 6:28 pm    Post subject:

Var jau būt, ka tev patīk vairāk sevis paša variants, un protams tad "labāk" būs izmantot tavu variantu :)

Shocked
_________________
Any PANCAKE has to be long and thin and short and fat. Not to mention being an excellent insulator and a superb conductor.
Back to top
View user's profile
Inf3rnal



Joined: 15 Jun 2006
Posts: 118
Location: Neverland

PostPosted: Thu Aug 09, 2007 6:32 pm    Post subject:

Es pajautāju jo biju dzirdējis, ka cikli ir samērā lēni. Pie tam ja useris - lameris ieraksta tur lielu skaitli, tas var būt nepatīkami...

Nē man vienalga kurš variants tiek izmantos.
Tā kā es ar šo darbību nodarbojos tikai sevis treniņam ( varbūt kādreiz arī kkur pielietošu ) es atstāju abus variantus Smile tb var izvelēties metodi ar kuru skaitļot...
_________________
while(!asleep()) sheep++;
Back to top
View user's profile Send e-mail
DeRatizators



Joined: 27 Apr 2006
Posts: 492

PostPosted: Thu Aug 09, 2007 6:43 pm    Post subject:

Precīzi varbūt bubu pateiks Smile Pietam vēl piekaus mani par to, ka vispār atbildēju uz tavu jautājumu :D

Es neesmu mērījis, bet domāju ka tavs variants kļūs arvien lēnāks salīdzinot ar reizināšanu jau sākot no kādiem 5/5. Ar 2/2 un 1/1 cikls būs noteikti ātrāks Smile
_________________
Any PANCAKE has to be long and thin and short and fat. Not to mention being an excellent insulator and a superb conductor.
Back to top
View user's profile
Inf3rnal



Joined: 15 Jun 2006
Posts: 118
Location: Neverland

PostPosted: Thu Aug 09, 2007 6:45 pm    Post subject:

Skaidrs, paldies par atbildēm. Domāju ka šī tēma ir skaidra Wink
_________________
while(!asleep()) sheep++;
Back to top
View user's profile Send e-mail
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Thu Aug 09, 2007 6:58 pm    Post subject:

Kas tie par dīvainiem jautājumiem - kā labāk...

Vai labāk (t.i. laika ziņā ātrāk) N reizes iet uz veikalu katru reizi nopērkot 1 olu, vai arī labāk ir iet tikai vienu reizi uz veikalu nopērkot N olas (pieņemot, ka visas var aiznest mājās vienā piegājienā)? Kā tev liekas?

Pēdējais laiks iemācīties lielo O: http://en.wikipedia.org/wiki/Big_O_notation

Un kas precīzi man ir jāpasaka?
Back to top
View user's profile Send e-mail
Inf3rnal



Joined: 15 Jun 2006
Posts: 118
Location: Neverland

PostPosted: Thu Aug 09, 2007 7:04 pm    Post subject:

Jā izklausās loģisiki Smile Vajadzēs iegaumēt uz priekšdienām...

Es nez kāpēc esmu pieradis visu ko varu darīt ar cikliem, varbūt tas ir slinkums? :lol:

Lielo O pastudēšu...
_________________
while(!asleep()) sheep++;
Back to top
View user's profile Send e-mail
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Fri Aug 10, 2007 12:18 am    Post subject:

interesanti.. nu tas gan tikai taadaa gadiijumaa, ja tu nemelo par to, ka 100/100 buus 5050 reizes :lol:

(N - 1)*(N / 2) + C // formaats C/N
Back to top
View user's profile
Display posts from previous:   
dev.gamez.lv Forum Index -> Matemātika un fizika All times are GMT + 2 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group