|
> Yes, I use rotation...
Sounds like more than math for beginners so I really can’t engage with you in a debate about it.
Regarding your other post I think we are on the same page.
|
|
|
|
|
At the very least, one must allow 15+ seconds for any change in formation. I don't animate everything; I will show different icons on my blocks depending on the status of the block: marching; limbering / unlimbering. If you're in realtime and to scale, some movements are hard to see from a user point of view so you have to be more visible.
Nothing wrong with doing an "instant" turn; you just have to pace it properly (i.e. it still takes time; use an hour glass icon + another one on the block (which is simply text using font icons; e.g. Segoe UI Symbol / Emoji).
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
|
|
|
|
|
I think I got it figured. When a unit is killed the AI has to build another unit to make up for it. If you use the unit death event to start building a new unit you might not have the money to do it, so you have to queue the training for later. Implementing this behavior takes extra code. My guess is that in the case of the method presented in the opening post a capacity limit for units is created. As the processing moves down the priority list the capacity limit for various units increases.
The computer checks if the actual unit number the AI player has and capacity limit number match, if they don’t ( due to units dying) units are trained.
modified 30-Apr-23 12:10pm.
|
|
|
|
|
My "event" (if you call it that) happens when the loss inficted by the attacker is applied to the target. At that point, the target: maintains ground / continues to advance; is dispersed, temporarily or permanently; is shattered; is captured; is pursued; or is destroyed. The state of the various parties determines what can happpen in the next "round".
If was to spawn or seed something, it would be "triggered" here. (So, let's say I use triggers instead of events).
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
|
|
|
|
|
Say we have a set of positive integer numbers and the size of the set is always Q
For each position in the set we can define a minimum value and maximum value, both inclusive, for the value that could appear at that position in the set.
We can then deterministically sort a list of all of the distinct permutations of Q. To do so, We will sort first by the position 1 value, then (where the position 1 value is the same across multiple permutations) by the position 2 value and so on and so forth through to position Q being the least significant for the sort.
Given a single valid permutation of this type, is there a mathematically efficient way of determining its position in the sorted list, that is, without ever creating or iterating the list?
Conceptually reversing the above, given a position in the sorted list, is there a mathematically efficient way of determining the corresponding permutation, without ever creating or iterating the list?
|
|
|
|
|
Hmm, if I understand correctly, we have a list of Q positions where each one has a specific range say:
1 - [m_1, u_1]
2 - [m_2, u_2]
...
q - [m_q, u_q]
where m_1 to m_q are the minimum values and u_1 to u_q are the maximum (upper) values. A valid arrangement (I wouldn't call it a permutation) V = [v_1, v_2, ... v_q] can be "normalized" by subtracting the vector M = [m_1, m_2, ..., m_q] of minimum values. Let N = V-M be the normalized vector and R = U-M be the vector of ranges. Note that n_i < r_i.
I will change your problem to set the least significant position to be position 1 just for ease of notation. Then position of V in the list of arrangements is given by the sum:
S = n_1 + n_2*r_1+n3*r_1*r_2 + ...n_q * r_1*r_2*...*r_q-1
This is a bit like expressing a number in a "variable" base. The number of "digits" available at position i is r_i.
Mircea
|
|
|
|
|
Is the problem with dijkstra the fact that it computes not only the shortest path towards the destination but also the shortest path from the starting tile to any other tile in the search area ?
|
|
|
|
|
|
I don’t know. I was thinking if it’s good (potentially useful )it doesn’t come for free. Although I’m not sure this law of life applies to the world of programming as well. Also it’s a “good” thing you don’t need usually you only need the shortest path to the destination
modified 14-Dec-22 7:56am.
|
|
|
|
|
Nothing is free and everything is limited.
|
|
|
|
|
Yeah but sometimes what is expensive ( precious) in our terms is cheap in computer terms and vice versa what is cheap in our terms turns to be expensive in computer terms ( takes a lot of power to process) In this case you would think something good is produced that goes to waste
|
|
|
|
|
However all of that depends on how you are going to use it. And even should include questioning business requirements as to why they think they need something in the first place.
|
|
|
|
|
I see what you’re saying, just because I don’t need that potentially useful information doesn’t mean a scenario where that information is being used could not be imagined. Thanks
modified 31-Dec-22 3:10am.
|
|
|
|
|
This is basically what A* aims to avoid, trying to limit the searched area as much as possible while still guaranteeing an optimal result (as long as the requirements on the heuristic are met).
|
|
|
|
|
Write it yourself. Limitations will be, and Dijkstra solves some, not all.
..or just ask ChatGTP if it's homework.
Bastard Programmer from Hell
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
Eddy Vluggen wrote: ..or just ask ChatGTP if it's homework.
We have learned that it is currently far from a reliable source for this kind of work.
Graeme
"I fear not the man who has practiced ten thousand kicks one time, but I fear the man that has practiced one kick ten thousand times!" - Bruce Lee
|
|
|
|
|
"We"?
Bastard Programmer from Hell
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
Eddy Vluggen wrote: "We"?
Yes, we who support members in the Quick Answers[^] section of the website. We have been watching the solutions given using ChatGPT as plagiarised answers. Half the time it does not compile, and mostly when it does, it does not work.
Graeme
"I fear not the man who has practiced ten thousand kicks one time, but I fear the man that has practiced one kick ten thousand times!" - Bruce Lee
|
|
|
|
|
I cannot reply in any form or format and I cannot think; she just told me that there will be three of us.
Bastard Programmer from Hell
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
Eddy just curious, your way of addressing is always so sketchy, do you always expect the other person to guess the second half of the thing you’re trying to say?
|
|
|
|
|
I address developers. If it sketchy, you're not.
Half a word is all you can get, since money on the line.
Bastard Programmer from Hell
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
This is help wanted forum, when you provide feedback besides knowing stuff you also need the ability to explain it
You want me to wave my developer badge? I’m just a student. But that doesn’t mean I can’t make the difference between a good explanation and a bad one. This is our second encounter, I see you using the same style as previosely
modified 3-Jan-23 12:05pm.
|
|
|
|
|
Ok, that was unfriendly on my behalf.
However you have to admit your approach isn’t exactly teachers style.
|
|
|
|
|
Calin Negru wrote: Ok, that was unfriendly on my behalf. Did you consider the option that you were right?
If something is important to you, it's a passion, right? So, we speak with passion, and wars break out over the placement of a newline in code. I'm not apologizing, and you have nothing to apologize for either.
Calin Negru wrote: However you have to admit your approach isn’t exactly teachers style. I'd panic if someone told me I had to stand in front of a classroom again
..but seriously, write it yourself and start simpeler than Dijkstra. The easiest path-finding algo is to simply "try all nodes and measure them". That will cost a lot of memory and computing power, but it would work and the result is the optimal path. Go for it; every stop is a node, and we weigh distance.
Next step is to try to optimize that. I'm pretty sure you can eliminate all those paths that go the wrong way for a certain distance. Then write Dijkstra's algo.
Once you understand the optimization, you understand it's implications and limitations. So, asking that question means either you or the teacher is trying a shortcut. Maybe the teacher is right.
..but this approach works every time. Anything else is parroting a textbook IMO.
Bastard Programmer from Hell
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
edit: You start with two rhetorical statements (two questions) one after the other, usually that’s not how an argument is made.
I had to say it.
> we speak with passion
In my opinion passion is one thing it has a positive meaning, lashing out by breaking the boundaries of politeness (which is what I did) is something else.
modified 20-Jan-23 13:56pm.
|
|
|
|