PokéBase - Pokémon Q&A
1 vote
1,191 views

The lowest amount of dual-types required and what they are to resist each possible combination of 2 different types.

Basically what I'm asking is for the lowest amount of dual-types needed to have one dual-type that resists/is immune to both types of another given dual-type, and have that for every dual-type.
I'm getting confused writing this, but I hope you understand.

Thanks in advance.

by
So you're asking for the least amount of Pokemon that can resist any set of two different typed moves?
Should answers account for abilities?
Sure, abilities can count if you want, and yes that's basically what I'm asking.
I feel like this question is confusing. Are you asking how many pokemon types in general are needed to be immune or resist any type of move? Then like it said before abilities are valid? Cause if your asking for that then you really only need levitate electric type. Which Eelektross already does. Its only weak to ground and levitate doesnt work. If you want it with only typings do you mean HOW MANY TYPINGS IT NEEDS TO BE? Cause it was a little confusing. Ex Using Trick o Treat makes the enemy have ghost typing if it doesnt already have it even if its a dual type
Eelektross doesn't resist all types there's just nothing super effective against it
This is asking about existing Pokemon, not type combinations, right? I can't say the answer includes a normal steel Pokemon?
monkey business is right, and you can say non existing types if you want. its type combinations.
Then how are we supposed to consider abilities? Pokemon have abilities, type combinations don't.
Well, you can choose to only use existing types and include abilities, use non-existing types too and don't include abilities, OR just assume that non existing types don't have any abilities. Do it how you want, whichever is easiest to calculate because I'm not picky.
Is anyone still looking at this question??
The question is still very vague. And what is the point of this question? Are you looking for a single format team that can potentially switch into a move that you know you have resistance for? Also why ask for a dual type that resist another dual type? Why not just ask for a team that have resistance to every type there is using the least amount of Pokemon or a team that have resistance to every type there is using the least amount of type combinations?
if you could be a bit clearer on what you mean, i can understand your question better
i wanna claim this question but i need a lot of time, currently trying to figure out a c++ algorithm that gets the solution that doesnt require just brute forcing every possible combination of defensive dual types
You could start with a greedy algorithm that iteratively picks dual types that resist the highest (or near-highest) number of remaining attacker dual types. I think the problem is logically simple enough that a brute force (or some smarter approach that is also 100% conclusive) may not necessarily find a smaller set of type combinations.

Edit: actually scratch that, tried it myself and don't really trust the outputs are the smallest possible. Important thing to get out of the way is whether you're allowed to reuse types? I don't think you can solve the problem at all without this.
yeah, but then what after that? you prolly need to store what dual types each dual type resists in some sort of vector array, and then prolly get like a large int array to store what dual types have already been resisted to make sure you dont count unneeded dual types, which itself requires a nested loop, and then it's rinse and repeat like 20 more times minimum

i'll try a very primitive approach but i doubt it's going to be very effective, after all i dont want my computer to blow up. imma say you're allowed to reuse types just for sanity sake
You sure? I just did a Python dict matrix of single types, e.g. {'Normal': {'Rock': 0.5, 'Ghost': 0, 'Steel': 0.5}, ...}, then you can calculate dual type effectiveness like: for def_type in [def_type_1, def_type_2]: defender_multiplier *= get_effectiveness(att_type, def_type)
No need to store the outcomes for every dual-type interaction, you only need to count the resistances scored by each defender in order to pick a best candidate to proceed with on each iteration. You still need to store which "attackers" have already been dealt with as the while-loop runs, but that isn't too heavy as there are only 153 of them.

I think the best way to maximise this approach would be to have the greedy algorithm on each iteration randomly pick a defender from a pool that's within a certain % of the top-scoring candidate, then run the whole thing thousands of times. Introducing randomness and running it many times should allow it uncover some veins of type combinations that are efficient. But obviously it cannot ever prove what it found was the lowest.

I'll go ask AI to write that for me, unless you're really keen to work on your own algorithm without seeing any other results?
my experience with AI doesnt give me much confidence on your results. i do already have a 2d array setup for the resistances (same purpose as the matrix honestly, also i code in c++) and i'll do a full greedy algorithm to make sure i get the best results (ik it's going to take quite a bit of time but that's what i have tmr lmao)

introducing randomness does increase effeciency, it's just that my competition minded self really wants to try all in case the random approach misses certain combinations

Please log in or register to answer this question.