using System.Collections.Generic;
public static int padding = 75;
public int handling_ground;
public int handling_water;
public int handling_grav;
public override string ToString() {
return name + new String(' ', Program.padding - name.Length) + "| " +
weight + (weight > 9 ? " " : " ") + accel + (accel > 9 ? " " : " ") + traction_on + (traction_on > 9 ? " " : " ") + traction_off + (traction_off > 9 ? " " : " ") + miniturbo + (miniturbo > 9 ? " " : " ") + speed_ground + (speed_ground > 9 ? " " : " ") + speed_water + (speed_water > 9 ? " " : " ") + speed_grav + (speed_grav > 9 ? " " : " ") + speed_air + (speed_air > 9 ? " " : " ") + handling_ground + (handling_ground > 9 ? " " : " ") + handling_water + (handling_water > 9 ? " " : " ") + handling_grav + (handling_grav > 9 ? " " : " ") + handling_air
public string Hash() => weight + ", " + accel + ", " + traction_on + ", " + traction_off + ", "
+ miniturbo + ", " + speed_ground + ", " + speed_water + ", " + speed_grav + ", " + speed_air + ", "
+ handling_ground + ", " + handling_water + ", " + handling_grav + ", " + handling_air;
public Equip Add(Equip e) {
s.name = this.name + " + " + e.name;
s.weight = this.weight + e.weight;
s.accel = this.accel + e.accel;
s.traction_on = this.traction_on + e.traction_on;
s.traction_off = this.traction_off + e.traction_off;
s.miniturbo = this.miniturbo + e.miniturbo;
s.speed_ground = this.speed_ground + e.speed_ground;
s.speed_water = this.speed_water + e.speed_water;
s.speed_grav = this.speed_grav + e.speed_grav;
s.speed_air = this.speed_air + e.speed_air;
s.handling_ground = this.handling_ground + e.handling_ground;
s.handling_water = this.handling_water + e.handling_water;
s.handling_grav = this.handling_grav + e.handling_grav;
s.handling_air = this.handling_air + e.handling_air;
public Equip(string name, int weight, int accel, int traction_on, int traction_off, int miniturbo, int speed_ground, int speed_water, int speed_grav, int speed_air, int handling_ground, int handling_water, int handling_grav, int handling_air) {
this.traction_on = traction_on;
this.traction_off = traction_off;
this.miniturbo = miniturbo;
this.speed_ground = speed_ground;
this.speed_water = speed_water;
this.speed_grav = speed_grav;
this.speed_air = speed_air;
this.handling_ground = handling_ground;
this.handling_water = handling_water;
this.handling_grav = handling_grav;
this.handling_air = handling_air;
public static void Main()
Equip[] chars = new Equip[]
new Equip( "Mario", 6, 2, 4, 2, 3, 7, 7, 7, 7, 4, 4, 4, 4 ),
new Equip( "Luigi", 6, 2, 5, 1, 3, 7, 7, 7, 7, 5, 5, 5, 5 ),
new Equip( "Peach", 4, 3, 3, 3, 4, 6, 6, 6, 6, 5, 5, 5, 5 ),
new Equip( "Daisy", 4, 3, 3, 3, 4, 6, 6, 6, 6, 5, 5, 5, 5 ),
new Equip( "Yoshi 1", 4, 3, 3, 3, 4, 6, 6, 6, 6, 5, 5, 5, 5 ),
new Equip( "Toad", 3, 4, 3, 4, 4, 4, 4, 4, 4, 7, 7, 7, 7 ),
new Equip( "Toadette", 2, 5, 4, 2, 4, 3, 3, 3, 3, 7, 7, 7, 7 ),
new Equip( "Koopa", 2, 4, 1, 5, 4, 3, 3, 3, 3, 8, 8, 8, 8 ),
new Equip( "P. Gold Peach", 10, 1, 8, 1, 1, 8, 8, 8, 8, 3, 3, 3, 3 ),
new Equip( "Metal Mario", 10, 1, 8, 1, 1, 8, 8, 8, 8, 3, 3, 3, 3 ),
new Equip( "Gold Mario", 10, 1, 8, 1, 1, 8, 8, 8, 8, 3, 3, 3, 3 ),
new Equip( "Bowser", 10, 0, 6, 0, 0, 10, 10, 10, 10, 0, 0, 0, 0 ),
new Equip( "D Bowsr", 9, 0, 5, 1, 0, 10, 10, 10, 10, 1, 1, 1, 1 ),
new Equip( "Wario", 9, 0, 5, 1, 0, 10, 10, 10, 10, 1, 1, 1, 1 ),
new Equip( "DK", 8, 1, 10, 0, 1, 9, 9, 9, 9, 2, 2, 2, 2 ),
new Equip( "Waluigi", 8, 1, 10, 0, 1, 9, 9, 9, 9, 2, 2, 2, 2 ),
new Equip( "Roy", 8, 1, 10, 0, 1, 9, 9, 9, 9, 2, 2, 2, 2 ),
new Equip( "Morton", 10, 0, 6, 0, 0, 10, 10, 10, 10, 0, 0, 0, 0 ),
new Equip( "Rosalina", 7, 1, 9, 3, 2, 8, 8, 8, 8, 3, 3, 3, 3 ),
new Equip( "Lakitu", 2, 4, 1, 5, 4, 3, 3, 3, 3, 8, 8, 8, 8 ),
new Equip( "Shy Guy", 3, 4, 3, 4, 4, 4, 4, 4, 4, 7, 7, 7, 7 ),
new Equip( "Baby Mario", 1, 5, 2, 4, 5, 2, 2, 2, 2, 8, 8, 8, 8 ),
new Equip( "Baby Luigi", 1, 5, 2, 4, 5, 2, 2, 2, 2, 8, 8, 8, 8 ),
new Equip( "Baby Peach", 0, 4, 3, 5, 5, 1, 1, 1, 1, 10, 10, 10, 10 ),
new Equip( "Baby Daisy", 0, 4, 3, 5, 5, 1, 1, 1, 1, 10, 10, 10, 10 ),
new Equip( "Baby Rosalina", 0, 5, 4, 3, 5, 1, 1, 1, 1, 9, 9, 9, 9 ),
new Equip( "Larry", 3, 4, 3, 4, 4, 4, 4, 4, 4, 7, 7, 7, 7 ),
new Equip( "Lemmy", 0, 5, 4, 3, 5, 1, 1, 1, 1, 9, 9, 9, 9 ),
new Equip( "Wendy", 2, 5, 4, 2, 4, 3, 3, 3, 3, 7, 7, 7, 7 ),
new Equip( "Ludwig", 6, 2, 4, 2, 3, 7, 7, 7, 7, 4, 4, 4, 4 ),
new Equip( "Iggy", 6, 2, 5, 1, 3, 7, 7, 7, 7, 5, 5, 5, 5 ),
new Equip( "Mii Medium", 6, 2, 4, 2, 3, 7, 7, 7, 7, 4, 4, 4, 4 ),
new Equip( "Tanooki Mario", 5, 3, 7, 1, 3, 6, 6, 6, 6, 5, 5, 5, 5 ),
new Equip( "Villager Male", 5, 3, 7, 1, 3, 6, 6, 6, 6, 5, 5, 5, 5 ),
new Equip( "Inkling Boy", 5, 3, 7, 1, 3, 6, 6, 6, 6, 5, 5, 5, 5 ),
new Equip( "Link", 7, 1, 9, 3, 2, 8, 8, 8, 8, 3, 3, 3, 3 ),
new Equip( "Isabelle", 2, 5, 4, 2, 4, 3, 3, 3, 3, 7, 7, 7, 7 ),
new Equip( "Cat Peach", 3, 4, 2, 3, 3, 5, 5, 5, 5, 6, 6, 6, 6 ),
new Equip( "Villager F", 3, 4, 2, 3, 3, 5, 5, 5, 5, 6, 6, 6, 6 ),
new Equip( "Dry Bones", 1, 5, 2, 4, 5, 2, 2, 2, 2, 8, 8, 8, 8 ),
new Equip( "Bowser Jr", 2, 4, 1, 5, 4, 3, 3, 3, 3, 8, 8, 8, 8 ),
new Equip( "King Boo", 7, 1, 9, 3, 2, 8, 8, 8, 8, 3, 3, 3, 3 ),
new Equip( "Inkling Girl", 3, 4, 2, 3, 3, 5, 5, 5, 5, 6, 6, 6, 6 ),
new Equip( "Link", 7, 1, 9, 3, 2, 8, 8, 8, 8, 3, 3, 3, 3 ),
new Equip( "Birdo", 4, 3, 3, 3, 4, 6, 6, 6, 6, 5, 5, 5, 5 )
Equip[] karts = new Equip[]
new Equip( "Pipe Frame", 1, 6, 3, 4, 6, 1, 3, 1, 1, 5, 4, 4, 2 ),
new Equip( "Wild Wiggler", 1, 5, 3, 5, 5, 2, 2, 4, 3, 4, 3, 4, 3 ),
new Equip( "Buggybud", 0, 7, 1, 4, 7, 0, 1, 2, 1, 5, 4, 5, 4 ),
new Equip( "Tanooki Kart", 3, 2, 4, 7, 4, 2, 4, 3, 3, 4, 4, 3, 3 ),
new Equip( "Koopa Clown", 3, 2, 4, 7, 4, 2, 4, 3, 3, 4, 4, 3, 3 ),
new Equip( "M.Cycle Zero", 3, 2, 4, 7, 4, 2, 4, 3, 3, 4, 4, 3, 3 ),
new Equip( "Landship", 0, 6, 0, 6, 6, 1, 5, 0, 2, 4, 5, 2, 3 ),
new Equip( "Streetle", 0, 6, 0, 6, 6, 1, 5, 0, 2, 4, 5, 2, 3 ),
new Equip( "Badwagon", 4, 0, 2, 5, 1, 5, 2, 3, 1, 0, 1, 1, 0 ),
new Equip( "Standard Quad", 4, 0, 2, 5, 1, 5, 2, 3, 1, 0, 1, 1, 0 ),
new Equip( "GLA", 4, 0, 2, 5, 1, 5, 2, 3, 1, 0, 1, 1, 0 ),
new Equip( "Standard Bike", 1, 5, 3, 5, 5, 2, 2, 4, 3, 4, 3, 4, 3 ),
new Equip( "Flame Rider", 1, 5, 3, 5, 5, 2, 2, 4, 3, 4, 3, 4, 3 ),
new Equip( "W 25 S. Arrow", 1, 5, 3, 5, 5, 2, 2, 4, 3, 4, 3, 4, 3 ),
new Equip( "Mach 8", 3, 3, 2, 4, 5, 3, 3, 5, 4, 2, 2, 4, 2 ),
new Equip( "Sports Coupé", 3, 3, 2, 4, 5, 3, 3, 5, 4, 2, 2, 4, 2 ),
new Equip( "Inkstriker", 3, 3, 2, 4, 5, 3, 3, 5, 4, 2, 2, 4, 2 ),
new Equip( "Varmint", 1, 6, 3, 4, 6, 1, 3, 1, 1, 5, 4, 4, 2 ),
new Equip( "City Tripper", 1, 6, 3, 4, 6, 1, 3, 1, 1, 5, 4, 4, 2 ),
new Equip( "Mr Scooty", 0, 7, 1, 4, 7, 0, 1, 2, 1, 5, 4, 5, 4 ),
new Equip( "Steel Driver", 4, 1, 1, 3, 3, 4, 5, 2, 0, 1, 5, 1, 1 ),
new Equip( "Tri-Speeder", 4, 1, 1, 3, 3, 4, 5, 2, 0, 1, 5, 1, 1 ),
new Equip( "Bone Rattler", 4, 1, 1, 3, 3, 4, 5, 2, 0, 1, 5, 1, 1 ),
new Equip( "Standard Kart", 2, 4, 3, 3, 5, 3, 3, 3, 3, 3, 2, 3, 3 ),
new Equip( "The Duke", 2, 4, 3, 3, 5, 3, 3, 3, 3, 3, 2, 3, 3 ),
new Equip( "300SLRoadster", 2, 4, 3, 3, 5, 3, 3, 3, 3, 3, 2, 3, 3 ),
new Equip( "Cat Cruiser", 2, 5, 4, 3, 6, 2, 2, 3, 4, 4, 2, 3, 4 ),
new Equip( "Comet", 2, 5, 4, 3, 6, 2, 2, 3, 4, 4, 2, 3, 4 ),
new Equip( "Yoshi Bike", 2, 5, 4, 3, 6, 2, 2, 3, 4, 4, 2, 3, 4 ),
new Equip( "Teddy Buggy", 2, 5, 4, 3, 6, 2, 2, 3, 4, 4, 2, 3, 4 ),
new Equip( "Blue Falcon", 0, 3, 1, 3, 4, 4, 2, 4, 3, 2, 3, 5, 1 ),
new Equip( "Splat Buggy", 0, 3, 1, 3, 4, 4, 2, 4, 3, 2, 3, 5, 1 ),
new Equip( "Prancer", 1, 2, 1, 2, 4, 4, 3, 3, 3, 3, 3, 2, 3 ),
new Equip( "Sport Bike", 1, 2, 1, 2, 4, 4, 3, 3, 3, 3, 3, 2, 3 ),
new Equip( "Jet Bike", 1, 2, 1, 2, 4, 4, 3, 3, 3, 3, 3, 2, 3 ),
new Equip( "Circuit Sp.", 3, 1, 3, 1, 2, 5, 1, 4, 2, 1, 1, 2, 0 ),
new Equip( "B Dasher", 3, 1, 3, 1, 2, 5, 1, 4, 2, 1, 1, 2, 0 ),
new Equip( "P-Wing", 3, 1, 3, 1, 2, 5, 1, 4, 2, 1, 1, 2, 0 ),
new Equip( "Bounder", 2, 2, 1, 0, 4, 4, 2, 3, 3, 3, 2, 3, 2 ),
new Equip( "Gold Kart", 2, 2, 1, 0, 4, 4, 2, 3, 3, 3, 2, 3, 2 ),
new Equip( "Master Cycle", 2, 2, 1, 0, 4, 4, 2, 3, 3, 3, 2, 3, 2 )
Equip[] wheels = new Equip[]
new Equip( "Roller", 0, 6, 0, 4, 6, 0, 3, 0, 3, 4, 4, 4, 4 ),
new Equip( "Azure Roller", 0, 6, 0, 4, 6, 0, 3, 0, 3, 4, 4, 4, 4 ),
new Equip( "Button", 0, 5, 1, 3, 5, 1, 2, 2, 2, 3, 3, 4, 2 ),
new Equip( "Sponge", 1, 4, 2, 6, 5, 1, 1, 1, 4, 2, 1, 2, 3 ),
new Equip( "Cushion", 1, 4, 2, 6, 5, 1, 1, 1, 4, 2, 1, 2, 3 ),
new Equip( "Leaf Tyres", 0, 5, 1, 3, 5, 1, 2, 2, 2, 3, 3, 4, 2 ),
new Equip( "Normal", 2, 4, 2, 5, 4, 2, 3, 2, 3, 3, 3, 3, 3 ),
new Equip( "Normal Blue", 2, 4, 2, 5, 4, 2, 3, 2, 3, 3, 3, 3, 3 ),
new Equip( "GLA Wheels", 2, 4, 2, 5, 4, 2, 3, 2, 3, 3, 3, 3, 3 ),
new Equip( "Monster", 4, 2, 3, 7, 3, 2, 2, 2, 1, 0, 1, 0, 1 ),
new Equip( "Slim", 2, 2, 4, 1, 3, 3, 2, 4, 2, 4, 4, 3, 4 ),
new Equip( "Wooden", 2, 2, 4, 1, 3, 3, 2, 4, 2, 4, 4, 3, 4 ),
new Equip( "Funky Monster",4, 2, 3, 7, 3, 2, 2, 2, 1, 0, 1, 0, 1 ),
new Equip( "Crimson Slim", 2, 2, 4, 1, 3, 3, 2, 4, 2, 4, 4, 3, 4 ),
new Equip( "Off-Road", 3, 3, 3, 6, 2, 3, 4, 2, 1, 1, 1, 2, 2 ),
new Equip( "Retro Off-Rd", 3, 3, 3, 6, 2, 3, 4, 2, 1, 1, 1, 2, 2 ),
new Equip( "Triforce Tyr", 3, 3, 3, 6, 2, 3, 4, 2, 1, 1, 1, 2, 2 ),
new Equip( "Ancient Tyre", 4, 2, 3, 7, 2, 2, 2, 2, 1, 0, 1, 0, 1 ),
new Equip( "Slick", 3, 1, 4, 0, 1, 4, 0, 4, 0, 2, 0, 2, 1 ),
new Equip( "Metal", 4, 0, 1, 2, 1, 4, 3, 1, 2, 2, 2, 1, 0 ),
new Equip( "Cyber Slick", 3, 1, 4, 0, 1, 4, 0, 4, 0, 2, 0, 2, 1 ),
new Equip( "Gold Wheels", 4, 0, 1, 2, 1, 4, 3, 1, 2, 2, 2, 1, 0 )
Equip[] air = new Equip[]
new Equip( "Super Glider", 1, 1, 1, 1, 1, 1, 1, 0, 2, 1, 0, 1, 1 ),
new Equip( "Cloud Glider", 0, 2, 1, 1, 2, 0, 1, 1, 1, 1, 0, 1, 2 ),
new Equip( "Wario Wing", 2, 1, 2, 0, 1, 1, 0, 1, 2, 1, 1, 0, 1 ),
new Equip( "Waddle Wing", 1, 1, 1, 1, 1, 1, 1, 0, 2, 1, 0, 1, 1 ),
new Equip( "Peach Parasol", 1, 2, 2, 0, 2, 0, 0, 1, 1, 1, 1, 0, 2 ),
new Equip( "Parachute", 0, 2, 1, 1, 2, 0, 1, 1, 1, 1, 0, 1, 2 ),
new Equip( "Parafoil", 1, 2, 2, 0, 2, 0, 0, 1, 1, 1, 1, 0, 2 ),
new Equip( "Flower Glider", 0, 2, 1, 1, 2, 0, 1, 1, 1, 1, 0, 1, 2 ),
new Equip( "Bowser Kite", 1, 2, 2, 0, 2, 0, 0, 1, 1, 1, 1, 0, 2 ),
new Equip( "Plane Glider", 2, 1, 2, 0, 1, 1, 0, 1, 2, 1, 1, 0, 1 ),
new Equip( "MKTV Parafoil", 1, 2, 2, 0, 2, 0, 0, 1, 1, 1, 1, 0, 2 ),
new Equip( "Gold Glider", 2, 1, 2, 0, 1, 1, 0, 1, 2, 1, 1, 0, 1 ),
new Equip( "Hylian Kite", 1, 1, 1, 1, 1, 1, 1, 0, 2, 1, 0, 1, 1 ),
new Equip( "Paper Glider", 0, 2, 1, 1, 2, 0, 1, 1, 1, 1, 0, 1, 2 ),
new Equip( "Paraglider", 2, 1, 2, 0, 1, 1, 0, 1, 2, 1, 1, 0, 1 )
List<Equip> charsList = new List<Equip>();
for (int i = 0; i < chars.Length; i++) {
int idx = charsList.FindIndex(e => e.Hash() == chars[i].Hash());
if (idx == -1) charsList.Add(chars[i]);
Equip e = charsList[idx];
e.name += "|" + chars[i].name;
List<Equip> kartsList = new List<Equip>();
for (int i = 0; i < karts.Length; i++) {
int idx = kartsList.FindIndex(e => e.Hash() == karts[i].Hash());
if (idx == -1) kartsList.Add(karts[i]);
Equip e = kartsList[idx];
e.name += "|" + karts[i].name;
List<Equip> wheelList = new List<Equip>();
for (int i = 0; i < wheels.Length; i++) if (wheelList.FindIndex(e => e.Hash() == wheels[i].Hash()) == -1) wheelList.Add(wheels[i]);
List<Equip> airList = new List<Equip>();
for (int i = 0; i < air.Length; i++) if (airList.FindIndex(e => e.Hash() == air[i].Hash()) == -1) airList.Add(air[i]);
List<Equip> all = new List<Equip>();
List<Equip> bigList = new List<Equip>();
for (int charIdx = 0; charIdx < charsList.Count; charIdx++) {
Equip chr = charsList[charIdx];
for (int kartIdx = 0; kartIdx < kartsList.Count; kartIdx++) {
Equip kart = kartsList[kartIdx];
for (int wheelIdx = 0; wheelIdx < wheelList.Count; wheelIdx++) {
Equip wheel = wheelList[wheelIdx];
Equip sum = chr.Add(kart).Add(wheel);
Console.WriteLine("\n\n\n");
Console.WriteLine(new String(' ', padding + 4) + "wg ac tr tr mt sg sw sv sa hg hw hv ha");
string sortOn = "speed_ground";
System.Reflection.FieldInfo field = eq.GetField(sortOn);
System.Reflection.FieldInfo field2 = eq.GetField(sort2);
(float s1, float s2) = (x.Score(), y.Score());
return s1 == s2 ? 0 : s1 < s2 ? 1 : -1;
foreach (Equip e in bigList) Console.WriteLine(e);
public static class AExt {
public static List<T> Adding<T>(this List<T> l, T x) {