Created
October 24, 2024 03:58
-
-
Save Chase-san/f7424a758e5353302832e04c51adac96 to your computer and use it in GitHub Desktop.
Infinite Fusion script for determing the fusion with the best combined BST.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Arceus | 120 | 120 | 120 | 120 | 120 | 120 | |
|---|---|---|---|---|---|---|---|
| Kyurem | 120 | 90 | 95 | 170 | 100 | 125 | |
| Dialga | 120 | 120 | 90 | 150 | 100 | 100 | |
| Palkia | 120 | 100 | 100 | 150 | 120 | 90 | |
| Giratina | 120 | 100 | 90 | 120 | 100 | 150 | |
| Reshiram | 120 | 100 | 90 | 150 | 120 | 100 | |
| Ho-Oh | 130 | 90 | 90 | 110 | 154 | 106 | |
| Zekrom | 150 | 120 | 90 | 120 | 100 | 100 | |
| Mewtwo | 110 | 90 | 130 | 154 | 90 | 106 | |
| Rayquaza | 150 | 90 | 95 | 150 | 90 | 105 | |
| Lugia | 90 | 130 | 110 | 90 | 154 | 106 | |
| Regigigas | 160 | 110 | 100 | 80 | 110 | 110 | |
| Slaking | 160 | 100 | 100 | 95 | 65 | 150 | |
| Kyogre | 100 | 90 | 90 | 150 | 140 | 100 | |
| Groudon | 150 | 140 | 90 | 100 | 90 | 100 | |
| Genesect | 120 | 95 | 99 | 120 | 95 | 71 | |
| Metagross | 135 | 130 | 70 | 95 | 90 | 80 | |
| Jirachi | 100 | 100 | 100 | 100 | 100 | 100 | |
| Meloetta | 128 | 90 | 128 | 77 | 77 | 100 | |
| Darkrai | 90 | 90 | 125 | 135 | 90 | 70 | |
| Goodra | 100 | 70 | 80 | 110 | 150 | 90 | |
| Deoxys | 150 | 50 | 150 | 150 | 50 | 50 | |
| Mew | 100 | 100 | 100 | 100 | 100 | 100 | |
| Necrozma | 107 | 101 | 79 | 127 | 89 | 97 | |
| Cresselia | 70 | 120 | 85 | 75 | 130 | 120 | |
| Salamence | 135 | 80 | 100 | 110 | 80 | 95 | |
| Dragonite | 134 | 95 | 80 | 100 | 100 | 91 | |
| Garchomp | 130 | 95 | 102 | 80 | 85 | 108 | |
| Hydreigon | 105 | 90 | 98 | 125 | 90 | 92 | |
| Latias | 80 | 90 | 110 | 110 | 130 | 80 | |
| Latios | 90 | 80 | 110 | 130 | 110 | 80 | |
| Tyranitar | 134 | 110 | 61 | 95 | 100 | 100 | |
| Celebi | 100 | 100 | 100 | 100 | 100 | 100 | |
| Registeel | 75 | 150 | 50 | 75 | 150 | 80 | |
| Zapdos | 90 | 85 | 100 | 125 | 90 | 90 | |
| Raikou | 85 | 75 | 115 | 115 | 100 | 90 | |
| Entei | 115 | 85 | 100 | 90 | 75 | 115 | |
| Suicune | 75 | 115 | 85 | 90 | 115 | 100 | |
| Moltres | 100 | 90 | 90 | 125 | 85 | 90 | |
| Regirock | 100 | 200 | 50 | 50 | 100 | 80 | |
| Regice | 50 | 100 | 50 | 100 | 200 | 80 | |
| Articuno | 85 | 100 | 85 | 95 | 125 | 90 | |
| Arcanine | 110 | 80 | 95 | 100 | 80 | 90 | |
| Volcarona | 60 | 65 | 100 | 135 | 105 | 85 | |
| Togekiss | 50 | 95 | 80 | 120 | 115 | 85 | |
| Electivire | 123 | 67 | 95 | 95 | 85 | 75 | |
| Kingdra | 95 | 95 | 85 | 95 | 95 | 75 | |
| Magmortar | 95 | 67 | 83 | 125 | 95 | 75 | |
| Milotic | 60 | 79 | 81 | 100 | 125 | 95 | |
| Snorlax | 110 | 65 | 30 | 65 | 110 | 160 | |
| Blissey | 10 | 10 | 55 | 75 | 135 | 255 | |
| Gyarados | 125 | 79 | 81 | 60 | 100 | 95 | |
| Haxorus | 147 | 90 | 97 | 60 | 70 | 76 | |
| Magnezone | 70 | 115 | 60 | 130 | 90 | 70 | |
| Crobat | 90 | 80 | 130 | 70 | 80 | 85 | |
| Swampert | 110 | 90 | 60 | 85 | 90 | 100 | |
| Porygon-Z | 80 | 70 | 90 | 135 | 75 | 85 | |
| Noivern | 70 | 80 | 123 | 97 | 80 | 85 | |
| Lapras | 85 | 80 | 60 | 85 | 95 | 130 | |
| Tangrowth | 100 | 125 | 50 | 110 | 50 | 100 | |
| Rhyperior | 140 | 130 | 40 | 55 | 55 | 115 | |
| Typhlosion | 84 | 78 | 100 | 109 | 85 | 78 | |
| Charizard | 84 | 78 | 100 | 109 | 85 | 78 | |
| Infernape | 104 | 71 | 108 | 104 | 71 | 76 | |
| Empoleon | 86 | 88 | 60 | 111 | 101 | 84 | |
| Feraligatr | 105 | 100 | 78 | 79 | 83 | 85 | |
| Blastoise | 83 | 100 | 78 | 85 | 105 | 79 | |
| Blaziken | 120 | 70 | 80 | 110 | 70 | 80 | |
| Aggron | 110 | 180 | 50 | 60 | 60 | 70 | |
| Sceptile | 85 | 65 | 120 | 105 | 85 | 70 | |
| Mamoswine | 130 | 80 | 80 | 70 | 60 | 110 | |
| Exeggutor | 105 | 85 | 45 | 125 | 75 | 95 | |
| Lucario | 110 | 70 | 90 | 115 | 70 | 70 | |
| Dusknoir | 100 | 135 | 45 | 65 | 135 | 45 | |
| Jolteon | 65 | 60 | 130 | 110 | 95 | 65 | |
| Sylveon | 65 | 65 | 60 | 110 | 130 | 95 | |
| Flareon | 130 | 60 | 65 | 95 | 110 | 65 | |
| Vaporeon | 65 | 60 | 65 | 110 | 95 | 130 | |
| Umbreon | 65 | 110 | 65 | 60 | 130 | 95 | |
| Venusaur | 82 | 83 | 80 | 100 | 100 | 80 | |
| Probopass | 55 | 145 | 40 | 75 | 150 | 60 | |
| Espeon | 65 | 60 | 110 | 130 | 95 | 65 | |
| Cloyster | 95 | 180 | 70 | 85 | 45 | 50 | |
| Leafeon | 110 | 130 | 95 | 60 | 65 | 65 | |
| Meganium | 82 | 100 | 80 | 83 | 100 | 80 | |
| Glaceon | 60 | 110 | 65 | 130 | 95 | 65 | |
| Torterra | 109 | 105 | 56 | 75 | 85 | 95 | |
| Luxray | 120 | 79 | 70 | 95 | 79 | 80 | |
| Tyrantrum | 121 | 119 | 71 | 69 | 59 | 82 | |
| Aurorus | 77 | 72 | 58 | 99 | 92 | 123 | |
| Aegislash | 150 | 50 | 60 | 150 | 50 | 60 | |
| Klinklang | 100 | 115 | 90 | 70 | 85 | 60 | |
| Rotom | 65 | 107 | 86 | 105 | 107 | 50 | |
| Chandelure | 55 | 90 | 80 | 145 | 90 | 60 | |
| Starmie | 75 | 85 | 115 | 100 | 85 | 60 | |
| Flygon | 100 | 80 | 100 | 80 | 80 | 80 | |
| Krookodile | 117 | 80 | 92 | 65 | 70 | 95 | |
| Gardevoir | 65 | 65 | 80 | 125 | 115 | 68 | |
| Gallade | 125 | 65 | 80 | 65 | 115 | 68 | |
| Dhelmise | 131 | 100 | 40 | 86 | 90 | 70 | |
| Tentacruel | 70 | 65 | 100 | 80 | 120 | 80 | |
| Lickilicky | 85 | 95 | 50 | 80 | 95 | 110 | |
| Porygon2 | 80 | 90 | 60 | 105 | 95 | 85 | |
| Roserade | 70 | 65 | 90 | 125 | 105 | 60 | |
| Aerodactyl | 105 | 65 | 130 | 60 | 75 | 80 | |
| Yanmega | 76 | 86 | 95 | 116 | 56 | 86 | |
| Steelix | 85 | 200 | 30 | 55 | 65 | 75 | |
| Gliscor | 95 | 125 | 95 | 45 | 75 | 75 | |
| Zoroark | 105 | 60 | 105 | 120 | 60 | 60 | |
| Poliwrath | 95 | 95 | 70 | 70 | 90 | 90 | |
| Weavile | 120 | 65 | 125 | 45 | 85 | 70 | |
| Ninetales | 67 | 75 | 109 | 81 | 100 | 73 | |
| Nidoking | 102 | 77 | 85 | 85 | 75 | 81 | |
| Nidoqueen | 92 | 87 | 76 | 75 | 85 | 90 | |
| Honchkrow | 125 | 52 | 71 | 105 | 52 | 100 | |
| Machamp | 130 | 80 | 55 | 65 | 85 | 90 | |
| Shuckle | 10 | 230 | 5 | 10 | 230 | 20 | |
| Scizor | 130 | 100 | 65 | 55 | 80 | 70 | |
| Gengar | 65 | 60 | 110 | 130 | 75 | 60 | |
| Muk | 105 | 75 | 50 | 65 | 100 | 105 | |
| Ampharos | 75 | 75 | 55 | 115 | 90 | 90 | |
| Rapidash | 100 | 70 | 105 | 80 | 80 | 65 | |
| Ursaring | 130 | 75 | 55 | 75 | 75 | 90 | |
| Golduck | 82 | 78 | 85 | 95 | 80 | 80 | |
| Houndoom | 90 | 50 | 95 | 110 | 80 | 75 | |
| Politoed | 75 | 75 | 70 | 90 | 100 | 90 | |
| Wailord | 90 | 45 | 60 | 90 | 45 | 170 | |
| Donphan | 120 | 120 | 50 | 60 | 60 | 90 | |
| Pinsir | 125 | 100 | 85 | 55 | 70 | 65 | |
| Bewear | 125 | 80 | 60 | 55 | 60 | 120 | |
| Hawlucha | 92 | 75 | 118 | 74 | 63 | 78 | |
| Heracross | 125 | 75 | 85 | 40 | 95 | 80 | |
| Scyther | 110 | 80 | 105 | 55 | 80 | 70 | |
| Talonflame | 81 | 71 | 126 | 74 | 69 | 78 | |
| Drifblim | 80 | 44 | 80 | 90 | 54 | 150 | |
| Toxapex | 63 | 152 | 35 | 53 | 142 | 50 | |
| Mismagius | 60 | 60 | 105 | 105 | 105 | 60 | |
| Magmar | 95 | 57 | 93 | 100 | 85 | 65 | |
| Bastiodon | 52 | 168 | 30 | 47 | 138 | 60 | |
| Armaldo | 125 | 100 | 45 | 70 | 80 | 75 | |
| Rampardos | 165 | 60 | 58 | 65 | 50 | 97 | |
| Cradily | 81 | 97 | 43 | 81 | 107 | 86 | |
| Kabutops | 115 | 105 | 80 | 65 | 70 | 60 | |
| Omastar | 60 | 125 | 55 | 115 | 70 | 70 | |
| Golem | 120 | 130 | 45 | 55 | 65 | 80 | |
| Bisharp | 125 | 100 | 70 | 60 | 70 | 65 | |
| Weezing | 90 | 120 | 60 | 85 | 70 | 65 | |
| Electrode | 50 | 70 | 150 | 80 | 80 | 60 | |
| Electabuzz | 83 | 57 | 105 | 95 | 85 | 65 | |
| Tauros | 100 | 95 | 110 | 40 | 70 | 75 | |
| Miltank | 80 | 105 | 100 | 40 | 70 | 95 | |
| Kangaskhan | 95 | 80 | 90 | 40 | 80 | 105 | |
| Victreebel | 105 | 65 | 70 | 100 | 70 | 80 | |
| Vileplume | 80 | 85 | 50 | 110 | 90 | 75 | |
| Slowbro | 75 | 110 | 30 | 100 | 80 | 95 | |
| Alakazam | 50 | 45 | 120 | 135 | 85 | 55 | |
| Slowking | 75 | 80 | 30 | 100 | 110 | 95 | |
| Reuniclus | 65 | 75 | 30 | 125 | 85 | 110 | |
| Altaria | 70 | 90 | 80 | 70 | 105 | 75 | |
| Bellossom | 80 | 95 | 50 | 90 | 100 | 75 | |
| Ferrothorn | 94 | 131 | 20 | 54 | 116 | 74 | |
| Lycanroc | 115 | 75 | 82 | 55 | 75 | 85 | |
| Spiritomb | 92 | 108 | 35 | 92 | 108 | 50 | |
| Raichu | 85 | 50 | 110 | 95 | 85 | 60 | |
| Mantine | 40 | 70 | 70 | 80 | 140 | 85 | |
| Scolipede | 100 | 89 | 112 | 55 | 69 | 60 | |
| Rhydon | 130 | 120 | 40 | 45 | 45 | 105 | |
| Cofagrigus | 50 | 145 | 30 | 95 | 105 | 58 | |
| Clefable | 70 | 73 | 60 | 95 | 90 | 95 | |
| Golurk | 124 | 80 | 55 | 55 | 80 | 89 | |
| Hypno | 73 | 70 | 67 | 73 | 115 | 85 | |
| Ambipom | 100 | 66 | 115 | 60 | 66 | 75 | |
| Lopunny | 76 | 84 | 105 | 54 | 96 | 65 | |
| Octillery | 105 | 75 | 45 | 105 | 75 | 75 | |
| Palossand | 75 | 110 | 35 | 100 | 75 | 85 | |
| Froslass | 80 | 70 | 110 | 80 | 70 | 70 | |
| Whimsicott | 67 | 85 | 116 | 77 | 75 | 60 | |
| Glalie | 80 | 80 | 80 | 80 | 80 | 80 | |
| Mimikyu | 90 | 80 | 96 | 50 | 105 | 55 | |
| Oricorio | 70 | 70 | 93 | 98 | 70 | 75 | |
| Kingler | 130 | 115 | 75 | 50 | 50 | 55 | |
| Bruxish | 105 | 70 | 92 | 70 | 70 | 68 | |
| Dewgong | 70 | 80 | 70 | 70 | 95 | 90 | |
| Cacturne | 115 | 60 | 55 | 115 | 60 | 70 | |
| Garbodor | 95 | 82 | 75 | 60 | 82 | 80 | |
| Trevenant | 110 | 76 | 56 | 65 | 82 | 85 | |
| Galvantula | 77 | 60 | 108 | 97 | 60 | 70 | |
| Stunfisk | 66 | 84 | 32 | 81 | 99 | 109 | |
| Klefki | 80 | 91 | 75 | 80 | 87 | 57 | |
| Dodrio | 110 | 70 | 110 | 60 | 60 | 60 | |
| Xatu | 75 | 70 | 95 | 95 | 70 | 65 | |
| Pidgeot | 80 | 75 | 91 | 70 | 70 | 83 | |
| Skarmory | 80 | 140 | 70 | 40 | 70 | 65 | |
| Forretress | 90 | 140 | 40 | 60 | 60 | 75 | |
| Magneton | 60 | 95 | 70 | 120 | 70 | 50 | |
| Stantler | 95 | 62 | 85 | 85 | 65 | 73 | |
| Absol | 130 | 60 | 75 | 75 | 60 | 65 | |
| Lanturn | 58 | 58 | 67 | 76 | 76 | 125 | |
| Mr. Mime | 45 | 65 | 90 | 100 | 120 | 40 | |
| Sharpedo | 120 | 40 | 95 | 95 | 40 | 70 | |
| Jumpluff | 55 | 70 | 110 | 55 | 95 | 75 | |
| Breloom | 130 | 80 | 70 | 60 | 60 | 60 | |
| Ninjask | 90 | 45 | 160 | 50 | 50 | 61 | |
| Banette | 115 | 65 | 65 | 83 | 63 | 64 | |
| Dusclops | 70 | 130 | 25 | 60 | 130 | 40 | |
| Golbat | 80 | 70 | 90 | 65 | 75 | 75 | |
| Girafarig | 80 | 65 | 85 | 90 | 65 | 70 | |
| Hitmontop | 95 | 95 | 70 | 35 | 110 | 50 | |
| Primeape | 105 | 60 | 95 | 60 | 70 | 65 | |
| Hitmonlee | 120 | 53 | 87 | 35 | 110 | 50 | |
| Hitmonchan | 105 | 79 | 76 | 35 | 110 | 50 | |
| Jynx | 50 | 35 | 95 | 115 | 95 | 65 | |
| Noctowl | 50 | 50 | 70 | 86 | 96 | 100 | |
| Sliggoo | 75 | 53 | 60 | 83 | 113 | 68 | |
| Granbull | 120 | 75 | 45 | 60 | 60 | 90 | |
| Seaking | 92 | 65 | 68 | 65 | 80 | 80 | |
| Chansey | 5 | 5 | 50 | 35 | 105 | 250 | |
| Sandslash | 100 | 120 | 65 | 25 | 65 | 75 | |
| Venomoth | 65 | 60 | 90 | 90 | 75 | 70 | |
| Piloswine | 100 | 80 | 50 | 60 | 60 | 100 | |
| Doublade | 110 | 150 | 35 | 45 | 49 | 59 | |
| Arbok | 95 | 69 | 80 | 65 | 79 | 60 | |
| Fearow | 90 | 65 | 100 | 61 | 61 | 65 | |
| Klang | 80 | 95 | 50 | 70 | 85 | 60 | |
| Qwilfish | 95 | 85 | 85 | 55 | 55 | 65 | |
| Vigoroth | 80 | 80 | 90 | 55 | 55 | 80 | |
| Seadra | 65 | 95 | 85 | 95 | 45 | 55 | |
| Persian | 60 | 60 | 115 | 75 | 65 | 65 | |
| Kecleon | 90 | 70 | 40 | 60 | 120 | 60 | |
| Misdreavus | 60 | 60 | 85 | 85 | 85 | 60 | |
| Wigglytuff | 70 | 45 | 45 | 85 | 50 | 140 | |
| Tangela | 55 | 115 | 60 | 100 | 40 | 65 | |
| Quagsire | 85 | 85 | 35 | 65 | 65 | 95 | |
| Gligar | 75 | 105 | 85 | 35 | 65 | 65 | |
| Lairon | 90 | 140 | 40 | 50 | 50 | 60 | |
| Magcargo | 50 | 120 | 30 | 90 | 80 | 60 | |
| Sneasel | 95 | 55 | 115 | 35 | 75 | 55 | |
| Dugtrio | 100 | 60 | 110 | 50 | 70 | 35 | |
| Marowak | 80 | 110 | 45 | 50 | 80 | 60 | |
| Sunflora | 75 | 55 | 30 | 105 | 85 | 75 | |
| Metang | 75 | 100 | 50 | 55 | 80 | 60 | |
| Azumarill | 50 | 80 | 50 | 60 | 80 | 100 | |
| Shelgon | 95 | 100 | 50 | 60 | 50 | 65 | |
| Dragonair | 84 | 65 | 70 | 70 | 70 | 61 | |
| Zweilous | 85 | 70 | 58 | 65 | 70 | 72 | |
| Furret | 76 | 64 | 90 | 45 | 55 | 85 | |
| Dunsparce | 70 | 70 | 45 | 65 | 65 | 100 | |
| Raticate | 71 | 70 | 77 | 40 | 80 | 75 | |
| Ponyta | 85 | 55 | 90 | 65 | 65 | 50 | |
| Bibarel | 85 | 60 | 71 | 55 | 60 | 79 | |
| Pyukumuku | 60 | 130 | 5 | 30 | 130 | 55 | |
| Fraxure | 117 | 70 | 67 | 40 | 50 | 66 | |
| Gabite | 90 | 65 | 82 | 50 | 55 | 68 | |
| Sudowoodo | 100 | 115 | 30 | 30 | 65 | 70 | |
| Corsola | 55 | 95 | 35 | 65 | 95 | 65 | |
| Pupitar | 84 | 70 | 51 | 65 | 70 | 70 | |
| Haunter | 50 | 45 | 95 | 115 | 55 | 45 | |
| Croconaw | 80 | 80 | 58 | 59 | 63 | 65 | |
| Marshtomp | 85 | 70 | 50 | 60 | 70 | 70 | |
| Quilava | 64 | 58 | 80 | 80 | 65 | 58 | |
| Charmeleon | 64 | 58 | 80 | 80 | 65 | 58 | |
| Wartortle | 63 | 80 | 58 | 65 | 80 | 59 | |
| Prinplup | 66 | 68 | 50 | 81 | 76 | 64 | |
| Murkrow | 85 | 42 | 91 | 85 | 42 | 60 | |
| Togetic | 40 | 85 | 40 | 80 | 105 | 55 | |
| Monferno | 78 | 52 | 81 | 78 | 52 | 64 | |
| Combusken | 85 | 60 | 55 | 85 | 60 | 60 | |
| Ivysaur | 62 | 63 | 60 | 80 | 80 | 60 | |
| Machoke | 100 | 70 | 45 | 50 | 60 | 80 | |
| Wobbuffet | 33 | 58 | 33 | 33 | 58 | 190 | |
| Grotle | 89 | 85 | 36 | 55 | 65 | 75 | |
| Grovyle | 65 | 45 | 95 | 85 | 65 | 50 | |
| Bayleef | 62 | 80 | 60 | 63 | 80 | 60 | |
| Parasect | 95 | 80 | 30 | 60 | 80 | 60 | |
| Wailmer | 70 | 35 | 60 | 70 | 35 | 130 | |
| Ariados | 90 | 70 | 40 | 60 | 70 | 70 | |
| Roselia | 60 | 45 | 65 | 100 | 80 | 50 | |
| Kadabra | 35 | 30 | 105 | 120 | 70 | 40 | |
| Porygon | 60 | 70 | 40 | 85 | 75 | 65 | |
| Gloom | 65 | 70 | 40 | 85 | 75 | 60 | |
| Butterfree | 45 | 50 | 70 | 90 | 80 | 60 | |
| Munchlax | 85 | 40 | 5 | 40 | 85 | 135 | |
| Weepinbell | 90 | 50 | 55 | 85 | 45 | 65 | |
| Yanma | 65 | 45 | 95 | 75 | 45 | 65 | |
| Ledian | 35 | 50 | 85 | 55 | 110 | 55 | |
| Graveler | 95 | 115 | 35 | 45 | 45 | 55 | |
| Poliwhirl | 65 | 65 | 90 | 50 | 50 | 65 | |
| Lickitung | 55 | 75 | 30 | 60 | 75 | 90 | |
| Beedrill | 80 | 40 | 75 | 45 | 80 | 65 | |
| Onix | 45 | 160 | 70 | 30 | 45 | 35 | |
| Fletchinder | 73 | 55 | 84 | 56 | 52 | 62 | |
| Mawile | 85 | 85 | 50 | 55 | 55 | 50 | |
| Sableye | 75 | 75 | 50 | 65 | 65 | 50 | |
| Farfetch'd | 90 | 55 | 60 | 58 | 62 | 52 | |
| Nosepass | 45 | 135 | 30 | 45 | 90 | 30 | |
| Lampent | 40 | 60 | 55 | 95 | 60 | 60 | |
| Duosion | 40 | 50 | 30 | 125 | 60 | 65 | |
| Nidorino | 72 | 57 | 65 | 55 | 55 | 61 | |
| Nidorina | 62 | 67 | 56 | 55 | 55 | 70 | |
| Flaaffy | 55 | 55 | 45 | 80 | 60 | 70 | |
| Magby | 75 | 37 | 83 | 70 | 55 | 45 | |
| Luxio | 85 | 49 | 60 | 60 | 49 | 60 | |
| Tyrunt | 89 | 77 | 48 | 45 | 45 | 58 | |
| Amaura | 59 | 50 | 46 | 67 | 63 | 77 | |
| Elekid | 63 | 37 | 95 | 65 | 55 | 45 | |
| Aipom | 70 | 55 | 85 | 40 | 55 | 55 | |
| Whirlipede | 55 | 99 | 47 | 40 | 79 | 40 | |
| Larvesta | 85 | 55 | 60 | 50 | 55 | 55 | |
| Anorith | 95 | 50 | 75 | 40 | 50 | 45 | |
| Lileep | 41 | 77 | 23 | 61 | 87 | 66 | |
| Kabuto | 80 | 90 | 55 | 55 | 45 | 30 | |
| Omanyte | 40 | 100 | 35 | 90 | 55 | 35 | |
| Krokorok | 82 | 45 | 74 | 45 | 45 | 60 | |
| Buneary | 66 | 44 | 85 | 44 | 56 | 55 | |
| Growlithe | 70 | 45 | 60 | 70 | 50 | 55 | |
| Shieldon | 42 | 118 | 30 | 42 | 88 | 30 | |
| Cranidos | 125 | 40 | 58 | 30 | 30 | 67 | |
| Pidgeotto | 60 | 55 | 71 | 50 | 50 | 63 | |
| Drifloon | 50 | 34 | 70 | 60 | 44 | 90 | |
| Mantyke | 20 | 50 | 50 | 60 | 120 | 45 | |
| Rhyhorn | 85 | 95 | 25 | 30 | 30 | 80 | |
| Pawniard | 85 | 70 | 60 | 40 | 40 | 45 | |
| Koffing | 65 | 95 | 35 | 60 | 45 | 40 | |
| Staryu | 45 | 55 | 85 | 70 | 55 | 30 | |
| Stufful | 75 | 50 | 50 | 45 | 50 | 70 | |
| Vibrava | 70 | 50 | 70 | 50 | 50 | 50 | |
| Skiploom | 45 | 50 | 80 | 45 | 65 | 55 | |
| Unown | 72 | 48 | 48 | 72 | 48 | 48 | |
| Tentacool | 40 | 35 | 70 | 50 | 100 | 40 | |
| Cacnea | 85 | 40 | 35 | 85 | 40 | 50 | |
| Chinchou | 38 | 38 | 67 | 56 | 56 | 75 | |
| Voltorb | 30 | 50 | 100 | 55 | 55 | 40 | |
| Teddiursa | 80 | 50 | 40 | 50 | 50 | 60 | |
| Houndour | 60 | 30 | 65 | 80 | 50 | 45 | |
| Zorua | 65 | 40 | 65 | 80 | 40 | 40 | |
| Phanpy | 60 | 60 | 40 | 40 | 40 | 90 | |
| Aron | 70 | 100 | 30 | 40 | 40 | 50 | |
| Delibird | 55 | 45 | 75 | 65 | 45 | 45 | |
| Trubbish | 50 | 62 | 65 | 40 | 62 | 50 | |
| Drowzee | 48 | 45 | 42 | 43 | 90 | 60 | |
| Honedge | 80 | 100 | 28 | 35 | 37 | 45 | |
| Magnemite | 35 | 70 | 45 | 95 | 55 | 25 | |
| Grimer | 80 | 50 | 25 | 40 | 50 | 80 | |
| Krabby | 105 | 90 | 50 | 25 | 25 | 30 | |
| Eevee | 55 | 50 | 55 | 45 | 65 | 55 | |
| Seel | 45 | 55 | 45 | 45 | 70 | 65 | |
| Exeggcute | 40 | 80 | 40 | 60 | 45 | 60 | |
| Clefairy | 45 | 48 | 35 | 60 | 65 | 70 | |
| Pikachu | 55 | 40 | 90 | 50 | 50 | 35 | |
| Goldeen | 67 | 60 | 63 | 35 | 50 | 45 | |
| Psyduck | 52 | 48 | 55 | 65 | 50 | 50 | |
| Sandygast | 55 | 80 | 15 | 70 | 45 | 55 | |
| Axew | 87 | 60 | 57 | 30 | 40 | 46 | |
| Cubone | 50 | 95 | 35 | 40 | 50 | 50 | |
| Oddish | 50 | 55 | 30 | 75 | 65 | 45 | |
| Natu | 50 | 45 | 70 | 70 | 45 | 40 | |
| Joltik | 47 | 50 | 65 | 57 | 50 | 50 | |
| Bulbasaur | 49 | 49 | 45 | 65 | 65 | 45 | |
| Turtwig | 68 | 64 | 31 | 45 | 55 | 55 | |
| Chikorita | 49 | 65 | 45 | 49 | 65 | 45 | |
| Slowpoke | 65 | 65 | 15 | 40 | 40 | 90 | |
| Totodile | 65 | 64 | 43 | 44 | 48 | 50 | |
| Squirtle | 48 | 65 | 43 | 50 | 64 | 44 | |
| Piplup | 51 | 53 | 40 | 61 | 56 | 53 | |
| Gastly | 35 | 30 | 80 | 100 | 35 | 30 | |
| Doduo | 85 | 45 | 75 | 35 | 35 | 35 | |
| Mudkip | 70 | 50 | 40 | 50 | 50 | 50 | |
| Swablu | 40 | 60 | 50 | 40 | 75 | 45 | |
| Torchic | 60 | 40 | 45 | 70 | 50 | 45 | |
| Mime Jr. | 25 | 45 | 60 | 70 | 90 | 20 | |
| Abra | 20 | 15 | 90 | 105 | 55 | 25 | |
| Treecko | 45 | 35 | 70 | 65 | 55 | 40 | |
| Chimchar | 58 | 44 | 61 | 58 | 44 | 44 | |
| Cyndaquil | 52 | 43 | 65 | 60 | 50 | 39 | |
| Charmander | 52 | 43 | 65 | 60 | 50 | 39 | |
| Phantump | 70 | 48 | 38 | 50 | 60 | 43 | |
| Ferroseed | 50 | 91 | 10 | 24 | 86 | 44 | |
| Mareanie | 53 | 62 | 45 | 43 | 52 | 50 | |
| Shellder | 65 | 100 | 40 | 45 | 25 | 30 | |
| Carvanha | 90 | 20 | 65 | 65 | 20 | 45 | |
| Venonat | 55 | 50 | 45 | 40 | 55 | 60 | |
| Mankey | 80 | 35 | 70 | 35 | 45 | 40 | |
| Machop | 80 | 50 | 35 | 35 | 35 | 70 | |
| Smoochum | 30 | 15 | 65 | 85 | 65 | 45 | |
| Yamask | 30 | 85 | 30 | 55 | 65 | 38 | |
| Golett | 74 | 50 | 35 | 35 | 50 | 59 | |
| Klink | 55 | 70 | 30 | 45 | 60 | 40 | |
| Beldum | 55 | 80 | 30 | 35 | 60 | 40 | |
| Snubbull | 80 | 50 | 30 | 40 | 40 | 60 | |
| Poliwag | 50 | 40 | 90 | 40 | 40 | 40 | |
| Remoraid | 65 | 35 | 65 | 65 | 35 | 35 | |
| Sandshrew | 75 | 90 | 40 | 10 | 35 | 50 | |
| Bagon | 75 | 60 | 50 | 40 | 30 | 45 | |
| Goomy | 50 | 35 | 40 | 55 | 75 | 45 | |
| Dratini | 64 | 45 | 50 | 50 | 50 | 41 | |
| Bellsprout | 75 | 35 | 40 | 70 | 30 | 50 | |
| Gible | 70 | 45 | 42 | 40 | 45 | 58 | |
| Deino | 65 | 50 | 38 | 45 | 50 | 52 | |
| Snorunt | 50 | 50 | 50 | 50 | 50 | 50 | |
| Geodude | 80 | 100 | 20 | 30 | 30 | 40 | |
| Larvitar | 64 | 50 | 41 | 45 | 50 | 50 | |
| Vulpix | 41 | 40 | 65 | 50 | 65 | 38 | |
| Shuppet | 75 | 35 | 45 | 63 | 33 | 44 | |
| Duskull | 40 | 90 | 25 | 30 | 90 | 20 | |
| Horsea | 40 | 70 | 60 | 70 | 25 | 30 | |
| Shroomish | 40 | 60 | 35 | 40 | 60 | 60 | |
| Sandile | 72 | 35 | 65 | 35 | 35 | 50 | |
| Meowth | 35 | 35 | 90 | 50 | 40 | 40 | |
| Trapinch | 100 | 45 | 10 | 45 | 45 | 45 | |
| Pineco | 65 | 90 | 15 | 35 | 35 | 50 | |
| Solosis | 30 | 40 | 20 | 105 | 50 | 45 | |
| Bonsly | 80 | 95 | 10 | 10 | 45 | 50 | |
| Ekans | 60 | 44 | 55 | 40 | 54 | 35 | |
| Ditto | 48 | 48 | 48 | 48 | 48 | 48 | |
| Riolu | 70 | 40 | 60 | 35 | 40 | 40 | |
| Paras | 70 | 55 | 25 | 45 | 55 | 35 | |
| Mareep | 40 | 40 | 35 | 65 | 45 | 55 | |
| Slakoth | 60 | 60 | 30 | 35 | 35 | 60 | |
| Budew | 30 | 35 | 55 | 50 | 70 | 40 | |
| Cottonee | 27 | 60 | 66 | 37 | 50 | 40 | |
| Rockruff | 65 | 40 | 60 | 30 | 40 | 45 | |
| Fletchling | 50 | 43 | 62 | 40 | 38 | 45 | |
| Kirlia | 35 | 35 | 50 | 65 | 55 | 38 | |
| Litwick | 30 | 55 | 20 | 65 | 55 | 50 | |
| Nidoran♀ | 47 | 52 | 41 | 40 | 40 | 55 | |
| Nidoran♂ | 57 | 40 | 50 | 40 | 40 | 46 | |
| Jigglypuff | 45 | 20 | 20 | 45 | 25 | 115 | |
| Nincada | 45 | 90 | 40 | 30 | 30 | 31 | |
| Diglett | 55 | 30 | 90 | 35 | 45 | 10 | |
| Ledyba | 20 | 30 | 55 | 40 | 80 | 40 | |
| Shinx | 65 | 34 | 45 | 40 | 34 | 45 | |
| Spearow | 60 | 30 | 70 | 31 | 31 | 40 | |
| Hoothoot | 30 | 30 | 50 | 36 | 56 | 60 | |
| Venipede | 45 | 59 | 57 | 30 | 39 | 30 | |
| Wynaut | 23 | 48 | 23 | 23 | 48 | 95 | |
| Rattata | 56 | 35 | 72 | 25 | 35 | 30 | |
| Pidgey | 45 | 40 | 56 | 35 | 35 | 40 | |
| Marill | 20 | 50 | 40 | 20 | 50 | 70 | |
| Smeargle | 20 | 35 | 75 | 20 | 45 | 55 | |
| Bidoof | 45 | 40 | 31 | 35 | 40 | 59 | |
| Slugma | 40 | 40 | 20 | 70 | 40 | 40 | |
| Spinarak | 60 | 40 | 30 | 40 | 40 | 40 | |
| Swinub | 50 | 40 | 50 | 30 | 30 | 50 | |
| Hoppip | 35 | 40 | 50 | 35 | 55 | 35 | |
| Togepi | 20 | 65 | 20 | 40 | 65 | 35 | |
| Zubat | 45 | 35 | 55 | 30 | 40 | 40 | |
| Noibat | 30 | 35 | 55 | 45 | 40 | 40 | |
| Shedinja | 90 | 45 | 40 | 30 | 30 | 1 | |
| Happiny | 5 | 5 | 30 | 15 | 65 | 100 | |
| Cleffa | 25 | 28 | 15 | 45 | 55 | 50 | |
| Sentret | 46 | 34 | 20 | 35 | 45 | 35 | |
| Igglybuff | 30 | 15 | 15 | 40 | 20 | 90 | |
| Wooper | 45 | 45 | 15 | 25 | 25 | 55 | |
| Tyrogue | 35 | 35 | 35 | 35 | 35 | 35 | |
| Pichu | 40 | 15 | 60 | 35 | 35 | 20 | |
| Kakuna | 25 | 50 | 35 | 25 | 25 | 45 | |
| Metapod | 20 | 55 | 30 | 25 | 25 | 50 | |
| Magikarp | 10 | 55 | 80 | 15 | 20 | 20 | |
| Feebas | 15 | 20 | 80 | 10 | 55 | 20 | |
| Ralts | 25 | 25 | 40 | 45 | 35 | 28 | |
| Weedle | 35 | 30 | 50 | 20 | 20 | 40 | |
| Caterpie | 30 | 35 | 45 | 20 | 20 | 45 | |
| Azurill | 20 | 40 | 20 | 20 | 40 | 50 | |
| Sunkern | 30 | 30 | 30 | 30 | 30 | 30 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/python3 | |
| # Copyright (c) 2024, Robert Maupin. Free for personal use. No warranty or liability is provided. | |
| import csv | |
| import heapq | |
| import sys | |
| STAT_ATK=0 | |
| STAT_DEF=1 | |
| STAT_SPEED=2 | |
| STAT_SATK=3 | |
| STAT_SDEF=4 | |
| STAT_HP=5 | |
| # damerau levenshtein | |
| def string_distance(str1: str, str2: str) -> int: | |
| len1, len2 = len(str1), len(str2) | |
| dp = [[0] * (len2 + 1) for _ in range(len1 + 1)] | |
| for i in range(len1 + 1): | |
| dp[i][0] = i | |
| for j in range(len2 + 1): | |
| dp[0][j] = j | |
| for i in range(1, len1 + 1): | |
| for j in range(1, len2 + 1): | |
| cost = 0 if str1[i - 1] == str2[j - 1] else 1 | |
| dp[i][j] = min( | |
| dp[i - 1][j] + 1, # Deletion | |
| dp[i][j - 1] + 1, # Insertion | |
| dp[i - 1][j - 1] + cost # Substitution | |
| ) | |
| if i > 1 and j > 1 and str1[i - 1] == str2[j - 2] and str1[i - 2] == str2[j - 1]: | |
| dp[i][j] = min(dp[i][j], dp[i - 2][j - 2] + 1) | |
| return dp[len1][len2] | |
| def load_base_stats(filename: str) -> dict: | |
| data_map = {} | |
| with open(filename, mode='r', newline='') as csvfile: | |
| reader = csv.reader(csvfile) | |
| for row in reader: | |
| #name,atk,def,spd,satk,sdef,hp | |
| key = row[0].lower() | |
| values = list(map(int, row[1:])) | |
| data_map[key] = values | |
| return data_map | |
| def fusion(head: list, body: list) -> list: | |
| values = [0,0,0,0,0,0] | |
| values[STAT_ATK] = int(2 * body[STAT_ATK] / 3 + head[STAT_ATK] / 3) | |
| values[STAT_DEF] = int(2 * body[STAT_DEF] / 3 + head[STAT_DEF] / 3) | |
| values[STAT_SPEED] = int(2 * body[STAT_SPEED] / 3 + head[STAT_SPEED] / 3) | |
| values[STAT_SDEF] = int(2 * head[STAT_SDEF] / 3 + body[STAT_SDEF] / 3) | |
| values[STAT_SATK] = int(2 * head[STAT_SATK] / 3 + body[STAT_SATK] / 3) | |
| values[STAT_HP] = int(2 * head[STAT_HP] / 3 + body[STAT_HP] / 3) | |
| return values | |
| def stat_total(entry: list) -> int: | |
| return entry[STAT_ATK]+entry[STAT_DEF]+entry[STAT_SPEED]+entry[STAT_SDEF]+entry[STAT_SATK]+entry[STAT_HP] | |
| argc = len(sys.argv) | |
| if argc != 2: | |
| print("Syntax: fusion_check.py <pokemon name>") | |
| quit() | |
| db = load_base_stats("base_stats.csv") | |
| #find matching pokemon | |
| target = sys.argv[1] | |
| target = target.lower() | |
| if not target in db: | |
| best_score = 999 | |
| best_name = "" | |
| for name in db: | |
| score = string_distance(target, name) | |
| if score < best_score: | |
| best_score = score | |
| best_name = name | |
| target = best_name | |
| print("Calculating ideal fusions for:", target) | |
| t_data = db[target] | |
| t_bst = stat_total(t_data) | |
| best_fusions = [] | |
| for entry in db: | |
| e_data = db[entry] | |
| e_bst = stat_total(e_data) | |
| fused_as_head = fusion(t_data, e_data) | |
| head_bst = stat_total(fused_as_head) | |
| diff = min(head_bst - t_bst, head_bst - e_bst) | |
| heapq.heappush(best_fusions, (-diff, target, entry, head_bst)) | |
| #print(target, t_bst, entry, e_bst, "fusion", head_bst, diff) | |
| fused_as_body = fusion(e_data, t_data) | |
| body_bst = stat_total(fused_as_body) | |
| diff = min(body_bst - t_bst, body_bst - e_bst) | |
| #print(entry, e_bst, target, t_bst, "fusion", body_bst, diff) | |
| heapq.heappush(best_fusions, (-diff, entry, target, body_bst)) | |
| print("Best Fusions:") | |
| for index in range(30): | |
| entry = heapq.heappop(best_fusions) | |
| head = entry[1] | |
| body = entry[2] | |
| diff = -entry[0] | |
| bst = entry[3] | |
| if diff > 0: | |
| diff = "+" + str(diff) | |
| print(f"{head:>15} / {body:<15}: {diff:<4} @ {bst:<4} BST") | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment