‹›Knowledgebase ExpansionFind Powerful Pokémon
In addition to hundreds of entity types covering scientific, geographic, and other "serious" domains, Version 11 also includes built-in data on fun entities like Pokémon, with information on names, evolutionary paths, abilities, and attack and defense statistics.
Find the height of Pikachu.
Entity["Pokemon", "Pokedex0025:Pikachu"][
EntityProperty["Pokemon", "Height"]]
Get an association of data about Meowth.
Entity["Pokemon", "Pokedex0052:Meowth"]["PropertyAssociation"]
Find Pokémon that closely match a given height and weight.
show complete Wolfram Language input
Manipulate[
Grid@Partition[
Normal@EntityValue[
Entity["Pokemon", {"Weight" ->
Quantity[ Interval[{w - 5, w + 5}], "Kilograms"],
"Height" ->
Quantity[ Interval[{h - 5, h + 5}], "Centimeters"]}],
"Image", "EntityAssociation"] /.
r_Rule :> Tooltip[r[[2]], r[[1]]], UpTo[3]], {{w, 30,
"weight (kg)"}, 10, 200, 1,
Appearance -> "Open"}, {{h, 130, "height (cm)"}, 100, 200, 1,
Appearance -> "Open"}, ContinuousAction -> False,
SynchronousUpdating -> False, SynchronousInitialization -> False]
From there, you can calculate battle damage for specific Pokémon.
show complete Wolfram Language input
Style[Manipulate[DynamicModule[{damage},
damage = ((((2*level*(criticalHit /. {True -> 2, False -> 1})/5 +
2)*attack*power/defense)/50 +
2)*(MatchQ[
Intersection @@
EntityValue[{attPokemon, defPokemon},
"Type"], {}] /. {True -> 1, False -> 1.5})*typeModifier)*
Interval[{85, 100}]/100;
Column[{Row[{"base statistics:"}, BaseStyle -> Bold],
Grid[{{Null, "attacker", "defender"}, {"image",
attPokemon["Image"], defPokemon["Image"]}, {"name",
attPokemon["Name"], defPokemon["Name"]}, {"HP",
attPokemon["HitPoints"], defPokemon["HitPoints"]}, {"attack",
attPokemon["Attack"], defPokemon["Attack"]}, {"defense",
attPokemon["Attack"],
defPokemon["Defense"]}, {"special attack",
attPokemon["Attack"],
defPokemon["SpecialAttack"]}, {"special defense",
attPokemon["Attack"], defPokemon["SpecialDefense"]}},
Background -> {None, {Lighter[Yellow, .9], {White,
Lighter[Gray, .8]}}}, Frame -> All,
FrameStyle -> Directive[Gray, Thick], Spacings -> {1, 1}],
Row[{Null}], Row[{"damage:"}, BaseStyle -> Bold],
Grid[{{"min", "average",
"max"}, {N[Min[#]], N[Mean @@ #], N[Max[#]]} &@damage},
Frame -> All, FrameStyle -> Directive[Gray, Thick],
Spacings -> {1, 1},
Background -> {None, {Lighter[Yellow, .9], White}}]
}, BaseStyle -> {FontFamily -> "Helvetica"}]
], {{level, 50, "level"}, 1, 100,
ControlType -> InputField}, {{attPokemon,
Entity["Pokemon", "Pokedex0025:Pikachu"], "attacking Pokemon"},
pm, ControlType -> PopupMenu},
{{attack, 35, "attack"}, 1, 1000, ControlType -> InputField},
{{power, 90, "power"}, 1, 300,
ControlType -> InputField}, {{defPokemon,
Entity["Pokemon", "Pokedex0052:Meowth"], "defensing Pokemon"}, pm,
ControlType -> PopupMenu},
{{defense, 35, "defense"}, 1, 1000,
ControlType -> InputField}, {{typeModifier, 1,
"type modifier"}, {4, 2, 1, 0.5, 0.25, 0},
ControlType -> PopupMenu}, {{criticalHit, False,
"critical hit"}, {True, False}, ControlType -> Setter},
ContinuousAction -> False, SynchronousUpdating -> False,
ControlPlacement -> Bottom, SynchronousInitialization -> False,
Initialization :> {pm =
First /@
SortBy[Normal@
EntityValue[EntityClass["Pokemon", All], "Name",
"EntityAssociation"], Last]}],
DynamicEvaluationTimeout -> Infinity]
You can then find the most powerful Pokémon based on total stat points.
powerful = EntityList[
Entity["Pokemon", {
"Generation" -> Entity["PokemonGeneration", "GenerationI"],
"StatTotal" -> TakeLargest[10]}]]
Find fire-type Pokémon with attack point greater than 50 and defense point less than 40.
EntityValue[EntityList[
Entity["Pokemon", {
"Type" -> "Fire", "Attack" -> GreaterThan[50],
"Defense" -> LessThan[40]}]], "Image", "EntityAssociation"]
Find pink Pokémon with weight greater than 250 lb.
EntityValue[EntityList[
Entity["Pokemon", {
"PokedexColor" -> Entity["PokemonPokedexColor", "Pink"],
"Weight" -> GreaterThan[
Quantity[250, "Pounds"]]}]], "Image", "EntityAssociation"]