Skip to content

Instantly share code, notes, and snippets.

@pstef
Last active November 4, 2018 09:53
Show Gist options
  • Save pstef/0f6bc1f06d7b9edb322d3f105a19e4e6 to your computer and use it in GitHub Desktop.
Save pstef/0f6bc1f06d7b9edb322d3f105a19e4e6 to your computer and use it in GitHub Desktop.
Using recursive CTE to find a pokemon team whose attacks cover the most enemy types
me@localhost postgres=# CREATE SCHEMA pokemon;
CREATE SCHEMA
Time: 9.719 ms
me@localhost postgres=# CREATE TABLE pokemon.types
(type_id INTEGER PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (MINVALUE 0), name TEXT UNIQUE);
CREATE TABLE
Time: 51.735 ms
me@localhost postgres=# CREATE TABLE pokemon.pokemon
(pokemon_id INTEGER PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY, name TEXT UNIQUE, seq INT);
CREATE TABLE
Time: 57.494 ms
me@localhost postgres=# CREATE TABLE pokemon.moves (
name TEXT PRIMARY KEY,
type_id INT REFERENCES pokemon.types (type_id),
category TEXT NOT NULL,
power INTEGER NOT NULL,
accuracy INTEGER NOT NULL
);
CREATE TABLE
Time: 47.835 ms
me@localhost postgres=# CREATE TABLE pokemon.pokemon_moves (
pokemon_id INT REFERENCES pokemon.pokemon (pokemon_id),
move TEXT REFERENCES pokemon.moves (name),
level INT NOT NULL,
CONSTRAINT pm_pk PRIMARY KEY (pokemon_id, move)
);
CREATE TABLE
Time: 47.542 ms
me@localhost postgres=# INSERT INTO pokemon.types (name)
SELECT *
FROM unnest('{Normal,Fire,Water,Electric,Grass,Ice,Fighting,Poison,Ground,Flying,Psychic,Bug,Rock,Ghost,Dragon,Dark,Steel}'::TEXT[]);
INSERT 0 17
Time: 17.067 ms
me@localhost postgres=# INSERT INTO pokemon.pokemon (name, seq) VALUES
('Hoothoot', 2), ('Gastly', 4), ('Bellsprout', 4), ('Geodude', 3), ('Growlithe', 6),
('Krabby', 11), ('Sunflora', 14), ('Wooper', 7), ('Butterfree', 4), ('Zubat', 4),
('Sudowoodo', 15), ('Machop', 12), ('Poliwrath', 4), ('Chinchou', 18);
INSERT 0 14
Time: 16.421 ms
me@localhost postgres=# INSERT INTO pokemon.moves (name, type_id, category, power, accuracy)
SELECT m.name, t.type_id, categories.name, m.power, m.accuracy
FROM (VALUES
('Peck', 'Flying', 'p', 35, 100), ('Confusion', 'Psychic', 's', 50, 100),
('Lick', 'Ghost', 'p', 30, 100), ('Dream eater', 'Psychic', 's', 100, 100),
('Vine whip', 'Grass', 's', 35, 100), ('Acid', 'Poison', 'p', 40, 100),
('Magnitude', 'Ground', 'p', 70, 100), ('Rock throw', 'Rock', 'p', 50, 90),
('Ember', 'Fire', 's', 40, 100), ('Bite', 'Dark', 's', 60, 100),
('Bubble', 'Water', 's', 20, 100), ('Mega drain', 'Grass', 's', 40, 100),
('Water gun', 'Water', 's', 40, 100), ('Earthquake', 'Ground', 'p', 100, 100),
('Gust', 'Flying', 'p', 40, 100), ('Wing attack', 'Flying', 'p', 60, 100),
('Leech life', 'Bug', 'p', 20, 100), ('Low kick', 'Fighting', 'p', 50, 100),
('Feint attack', 'Dark', 's', 60, 100), ('Submission', 'Fighting', 'p', 80, 80),
('Spark', 'Electric', 's', 65, 100), ('Razor leaf', 'Grass', 'p', 55, 95),
('Flame wheel', 'Fire', 's', 60, 100), ('Flamethrower', 'Fire', 's', 95, 100),
('Crabhammer', 'Water', 's', 90, 85), ('Absorb', 'Grass', 's', 20, 100),
('Petal dance', 'Grass', 's', 70, 100), ('Psybeam', 'Psychic', 's', 65, 100),
('Rock slide', 'Rock', 'p', 75, 90), ('Vital throw', 'Fighting', 'p', 70, 100),
('Cross chop', 'Fighting', 'p', 100, 80), ('Hydro pump', 'Water', 's', 120, 80)
) m (name, type, category, power, accuracy)
LEFT JOIN pokemon.types t ON t.name = m.type
LEFT JOIN (VALUES ('p'), ('s')) categories (name) ON categories.name = m.category;
INSERT 0 32
Time: 33.104 ms
me@localhost postgres=# INSERT INTO pokemon.pokemon_moves (pokemon_id, move, level)
SELECT p.pokemon_id, m.name, pm.level
FROM (VALUES
('Hoothoot', 'Peck', 11), ('Hoothoot', 'Confusion', 34), ('Hoothoot', 'Dream eater', 48),
('Gastly', 'Lick', 1), ('Gastly', 'Dream eater', 33),
('Bellsprout', 'Vine whip', 1), ('Bellsprout', 'Acid', 23), ('Bellsprout', 'Razor leaf', 37),
('Geodude', 'Magnitude', 16), ('Geodude', 'Rock throw', 11), ('Geodude', 'Earthquake', 36),
('Growlithe', 'Ember', 9), ('Growlithe', 'Bite', 1), ('Growlithe', 'Flame wheel', 34), ('Growlithe', 'Flamethrower', 50),
('Krabby', 'Bubble', 1), ('Krabby', 'Crabhammer', 41),
('Sunflora', 'Absorb', 1), ('Sunflora', 'Mega drain', 10), ('Sunflora', 'Petal dance', 31),
('Wooper', 'Water gun', 1), ('Wooper', 'Earthquake', 31),
('Butterfree', 'Confusion', 10), ('Butterfree', 'Gust', 28), ('Butterfree', 'Psybeam', 34),
('Zubat', 'Wing attack', 27), ('Zubat', 'Leech life', 1), ('Zubat', 'Bite', 12),
('Sudowoodo', 'Rock throw', 1), ('Sudowoodo', 'Low kick', 19), ('Sudowoodo', 'Feint attack', 37),
('Machop', 'Low kick', 1), ('Machop', 'Vital throw', 31), ('Machop', 'Cross chop', 37), ('Machop', 'Submission', 49),
('Poliwrath', 'Water gun', 13), ('Poliwrath', 'Submission', 35), ('Poliwrath', 'Bubble', 1), ('Poliwrath', 'Hydro pump', 51),
('Chinchou', 'Spark', 25), ('Chinchou', 'Water gun', 17), ('Chinchou', 'Hydro pump', 41)
) pm (pokemon, move, level)
LEFT JOIN pokemon.moves m ON m.name = pm.move
LEFT JOIN pokemon.pokemon p ON p.name = pm.pokemon;
INSERT 0 42
Time: 51.074 ms
WITH RECURSIVE
g AS (
SELECT pm.pokemon_id, bit_or(1 << m.type_id) AS move_types
FROM pokemon.pokemon_moves pm
JOIN pokemon.moves m ON m.name = pm.move AND m.power * m.accuracy / 100 > 20
WHERE
EXISTS (SELECT 1 FROM pokemon.pokemon p WHERE p.pokemon_id = pm.pokemon_id AND p.seq < 17)
AND pm.level < 40
GROUP BY pm.pokemon_id
ORDER BY pm.pokemon_id
),
r AS (
SELECT pokemon_id, ARRAY[pokemon_id] AS pokemon, move_types, 1 AS n, NULL::INTEGER AS c FROM g
UNION ALL
SELECT g.pokemon_id, r.pokemon || g.pokemon_id, r.move_types | g.move_types, r.n + 1,
CASE WHEN r.n + 1 = 6 THEN LENGTH(TRANSLATE((r.move_types | g.move_types)::BIT(17)::TEXT, '0', '')) END
FROM r JOIN g ON r.pokemon_id > g.pokemon_id AND r.n < 6 AND r.move_types | g.move_types <> r.move_types
)
SELECT p.names AS team, r.c, r.move_types, pm.avg, pm.min, pm.moves, pm.types
FROM (
SELECT dense_rank() OVER (ORDER BY r.c DESC) AS rank, r.pokemon, r.c, r.move_types::BIT(17)
FROM r WHERE r.n = 6
) r
CROSS JOIN LATERAL (
SELECT array_agg(p.name) AS names
FROM pokemon.pokemon p WHERE p.pokemon_id = ANY(r.pokemon)
) p
CROSS JOIN LATERAL (
SELECT array_agg(move) AS moves, array_agg(type) AS types, min(damage), avg(damage)
FROM (
SELECT DISTINCT ON (pm.pokemon_id, m.type_id)
pm.pokemon_id, m.name AS move, t.name AS type, pm.level, m.power * m.accuracy / 100 AS damage
FROM pokemon.pokemon_moves pm
JOIN pokemon.moves m ON m.name = pm.move
JOIN pokemon.types t ON t.type_id = m.type_id
WHERE pm.pokemon_id = ANY(r.pokemon) AND m.power * m.accuracy / 100 > 20 AND pm.level < 40
ORDER BY pm.pokemon_id, m.type_id, pm.level DESC
) x
) pm
WHERE r.rank <= 2
ORDER BY r.rank, pm.avg DESC
LIMIT 30;
┌─[ RECORD 1 ]────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ team │ {Gastly,Bellsprout,Geodude,Growlithe,Zubat,Poliwrath} │
│ c │ 11 │
│ move_types │ 01011011111010110 │
│ avg │ 59.2500000000000000 │
│ min │ 30 │
│ moves │ {"Dream eater",Lick,"Razor leaf",Acid,Earthquake,"Rock throw","Flame wheel",Bite,"Wing attack",Bite,"Water gun",Submission} │
│ types │ {Psychic,Ghost,Grass,Poison,Ground,Rock,Fire,Dark,Flying,Dark,Water,Fighting} │
├─[ RECORD 2 ]────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ team │ {Gastly,Bellsprout,Growlithe,Wooper,Zubat,Sudowoodo} │
│ c │ 11 │
│ move_types │ 01011011111010110 │
│ avg │ 58.2307692307692308 │
│ min │ 30 │
│ moves │ {"Dream eater",Lick,"Razor leaf",Acid,"Flame wheel",Bite,"Water gun",Earthquake,"Wing attack",Bite,"Low kick","Rock throw","Feint attack"} │
│ types │ {Psychic,Ghost,Grass,Poison,Fire,Dark,Water,Ground,Flying,Dark,Fighting,Rock,Dark} │
├─[ RECORD 3 ]────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ team │ {Gastly,Bellsprout,Geodude,Growlithe,Butterfree,Poliwrath} │
│ c │ 11 │
│ move_types │ 01011011111010110 │
│ avg │ 58.0000000000000000 │
│ min │ 30 │
│ moves │ {"Dream eater",Lick,"Razor leaf",Acid,Earthquake,"Rock throw","Flame wheel",Bite,Gust,Psybeam,"Water gun",Submission} │
│ types │ {Psychic,Ghost,Grass,Poison,Ground,Rock,Fire,Dark,Flying,Psychic,Water,Fighting} │
├─[ RECORD 4 ]────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ team │ {Gastly,Bellsprout,Growlithe,Wooper,Butterfree,Sudowoodo} │
│ c │ 11 │
│ move_types │ 01011011111010110 │
│ avg │ 57.0769230769230769 │
│ min │ 30 │
│ moves │ {"Dream eater",Lick,"Razor leaf",Acid,"Flame wheel",Bite,"Water gun",Earthquake,Gust,Psybeam,"Low kick","Rock throw","Feint attack"} │
│ types │ {Psychic,Ghost,Grass,Poison,Fire,Dark,Water,Ground,Flying,Psychic,Fighting,Rock,Dark} │
├─[ RECORD 5 ]────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ team │ {Hoothoot,Gastly,Bellsprout,Geodude,Growlithe,Poliwrath} │
│ c │ 11 │
│ move_types │ 01011011111010110 │
│ avg │ 56.3333333333333333 │
│ min │ 30 │
│ moves │ {Peck,Confusion,"Dream eater",Lick,"Razor leaf",Acid,Earthquake,"Rock throw","Flame wheel",Bite,"Water gun",Submission} │
│ types │ {Flying,Psychic,Psychic,Ghost,Grass,Poison,Ground,Rock,Fire,Dark,Water,Fighting} │
├─[ RECORD 6 ]────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ team │ {Hoothoot,Gastly,Bellsprout,Growlithe,Wooper,Sudowoodo} │
│ c │ 11 │
│ move_types │ 01011011111010110 │
│ avg │ 55.5384615384615385 │
│ min │ 30 │
│ moves │ {Peck,Confusion,"Dream eater",Lick,"Razor leaf",Acid,"Flame wheel",Bite,"Water gun",Earthquake,"Low kick","Rock throw","Feint attack"} │
│ types │ {Flying,Psychic,Psychic,Ghost,Grass,Poison,Fire,Dark,Water,Ground,Fighting,Rock,Dark} │
├─[ RECORD 7 ]────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ team │ {Gastly,Bellsprout,Geodude,Growlithe,Wooper,Machop} │
│ c │ 10 │
│ move_types │ 01011010111010110 │
│ avg │ 64.2727272727272727 │
│ min │ 30 │
│ moves │ {"Dream eater",Lick,"Razor leaf",Acid,Earthquake,"Rock throw","Flame wheel",Bite,"Water gun",Earthquake,"Cross chop"} │
│ types │ {Psychic,Ghost,Grass,Poison,Ground,Rock,Fire,Dark,Water,Ground,Fighting} │
├─[ RECORD 8 ]────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ team │ {Gastly,Bellsprout,Geodude,Wooper,Zubat,Machop} │
│ c │ 10 │
│ move_types │ 01011011111010100 │
│ avg │ 64.2727272727272727 │
│ min │ 30 │
│ moves │ {"Dream eater",Lick,"Razor leaf",Acid,Earthquake,"Rock throw","Water gun",Earthquake,"Wing attack",Bite,"Cross chop"} │
│ types │ {Psychic,Ghost,Grass,Poison,Ground,Rock,Water,Ground,Flying,Dark,Fighting} │
├─[ RECORD 9 ]────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ team │ {Gastly,Geodude,Growlithe,Sunflora,Zubat,Poliwrath} │
│ c │ 10 │
│ move_types │ 01011011101010110 │
│ avg │ 62.6363636363636364 │
│ min │ 30 │
│ moves │ {"Dream eater",Lick,Earthquake,"Rock throw","Flame wheel",Bite,"Petal dance","Wing attack",Bite,"Water gun",Submission} │
│ types │ {Psychic,Ghost,Ground,Rock,Fire,Dark,Grass,Flying,Dark,Water,Fighting} │
├─[ RECORD 10 ]───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ team │ {Gastly,Bellsprout,Geodude,Growlithe,Zubat,Machop} │
│ c │ 10 │
│ move_types │ 01011011111010010 │
│ avg │ 62.4545454545454545 │
│ min │ 30 │
│ moves │ {"Dream eater",Lick,"Razor leaf",Acid,Earthquake,"Rock throw","Flame wheel",Bite,"Wing attack",Bite,"Cross chop"} │
│ types │ {Psychic,Ghost,Grass,Poison,Ground,Rock,Fire,Dark,Flying,Dark,Fighting} │
├─[ RECORD 11 ]───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ team │ {Gastly,Bellsprout,Geodude,Growlithe,Wooper,Zubat} │
│ c │ 10 │
│ move_types │ 01011011110010110 │
│ avg │ 62.2500000000000000 │
│ min │ 30 │
│ moves │ {"Dream eater",Lick,"Razor leaf",Acid,Earthquake,"Rock throw","Flame wheel",Bite,"Water gun",Earthquake,"Wing attack",Bite} │
│ types │ {Psychic,Ghost,Grass,Poison,Ground,Rock,Fire,Dark,Water,Ground,Flying,Dark} │
├─[ RECORD 12 ]───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ team │ {Gastly,Bellsprout,Growlithe,Wooper,Zubat,Machop} │
│ c │ 10 │
│ move_types │ 01010011111010110 │
│ avg │ 62.0000000000000000 │
│ min │ 30 │
│ moves │ {"Dream eater",Lick,"Razor leaf",Acid,"Flame wheel",Bite,"Water gun",Earthquake,"Wing attack",Bite,"Cross chop"} │
│ types │ {Psychic,Ghost,Grass,Poison,Fire,Dark,Water,Ground,Flying,Dark,Fighting} │
├─[ RECORD 13 ]───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ team │ {Bellsprout,Geodude,Growlithe,Wooper,Butterfree,Machop} │
│ c │ 10 │
│ move_types │ 01001011111010110 │
│ avg │ 62.0000000000000000 │
│ min │ 40 │
│ moves │ {"Razor leaf",Acid,Earthquake,"Rock throw","Flame wheel",Bite,"Water gun",Earthquake,Gust,Psybeam,"Cross chop"} │
│ types │ {Grass,Poison,Ground,Rock,Fire,Dark,Water,Ground,Flying,Psychic,Fighting} │
├─[ RECORD 14 ]───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ team │ {Gastly,Geodude,Growlithe,Sunflora,Butterfree,Poliwrath} │
│ c │ 10 │
│ move_types │ 01011011101010110 │
│ avg │ 61.2727272727272727 │
│ min │ 30 │
│ moves │ {"Dream eater",Lick,Earthquake,"Rock throw","Flame wheel",Bite,"Petal dance",Gust,Psybeam,"Water gun",Submission} │
│ types │ {Psychic,Ghost,Ground,Rock,Fire,Dark,Grass,Flying,Psychic,Water,Fighting} │
├─[ RECORD 15 ]───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ team │ {Gastly,Growlithe,Sunflora,Wooper,Zubat,Sudowoodo} │
│ c │ 10 │
│ move_types │ 01011011101010110 │
│ avg │ 61.2500000000000000 │
│ min │ 30 │
│ moves │ {"Dream eater",Lick,"Flame wheel",Bite,"Petal dance","Water gun",Earthquake,"Wing attack",Bite,"Low kick","Rock throw","Feint attack"} │
│ types │ {Psychic,Ghost,Fire,Dark,Grass,Water,Ground,Flying,Dark,Fighting,Rock,Dark} │
├─[ RECORD 16 ]───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ team │ {Gastly,Bellsprout,Geodude,Growlithe,Butterfree,Machop} │
│ c │ 10 │
│ move_types │ 01011011111010010 │
│ avg │ 61.0909090909090909 │
│ min │ 30 │
│ moves │ {"Dream eater",Lick,"Razor leaf",Acid,Earthquake,"Rock throw","Flame wheel",Bite,Gust,Psybeam,"Cross chop"} │
│ types │ {Psychic,Ghost,Grass,Poison,Ground,Rock,Fire,Dark,Flying,Psychic,Fighting} │
├─[ RECORD 17 ]───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ team │ {Gastly,Bellsprout,Geodude,Growlithe,Wooper,Butterfree} │
│ c │ 10 │
│ move_types │ 01011011110010110 │
│ avg │ 61.0000000000000000 │
│ min │ 30 │
│ moves │ {"Dream eater",Lick,"Razor leaf",Acid,Earthquake,"Rock throw","Flame wheel",Bite,"Water gun",Earthquake,Gust,Psybeam} │
│ types │ {Psychic,Ghost,Grass,Poison,Ground,Rock,Fire,Dark,Water,Ground,Flying,Psychic} │
├─[ RECORD 18 ]───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ team │ {Gastly,Bellsprout,Geodude,Growlithe,Wooper,Poliwrath} │
│ c │ 10 │
│ move_types │ 01011010111010110 │
│ avg │ 60.9166666666666667 │
│ min │ 30 │
│ moves │ {"Dream eater",Lick,"Razor leaf",Acid,Earthquake,"Rock throw","Flame wheel",Bite,"Water gun",Earthquake,"Water gun",Submission} │
│ types │ {Psychic,Ghost,Grass,Poison,Ground,Rock,Fire,Dark,Water,Ground,Water,Fighting} │
├─[ RECORD 19 ]───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ team │ {Gastly,Bellsprout,Geodude,Wooper,Zubat,Poliwrath} │
│ c │ 10 │
│ move_types │ 01011011111010100 │
│ avg │ 60.9166666666666667 │
│ min │ 30 │
│ moves │ {"Dream eater",Lick,"Razor leaf",Acid,Earthquake,"Rock throw","Water gun",Earthquake,"Wing attack",Bite,"Water gun",Submission} │
│ types │ {Psychic,Ghost,Grass,Poison,Ground,Rock,Water,Ground,Flying,Dark,Water,Fighting} │
├─[ RECORD 20 ]───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ team │ {Gastly,Bellsprout,Growlithe,Wooper,Butterfree,Machop} │
│ c │ 10 │
│ move_types │ 01010011111010110 │
│ avg │ 60.6363636363636364 │
│ min │ 30 │
│ moves │ {"Dream eater",Lick,"Razor leaf",Acid,"Flame wheel",Bite,"Water gun",Earthquake,Gust,Psybeam,"Cross chop"} │
│ types │ {Psychic,Ghost,Grass,Poison,Fire,Dark,Water,Ground,Flying,Psychic,Fighting} │
├─[ RECORD 21 ]───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ team │ {Hoothoot,Bellsprout,Geodude,Growlithe,Wooper,Machop} │
│ c │ 10 │
│ move_types │ 01001011111010110 │
│ avg │ 60.1818181818181818 │
│ min │ 35 │
│ moves │ {Peck,Confusion,"Razor leaf",Acid,Earthquake,"Rock throw","Flame wheel",Bite,"Water gun",Earthquake,"Cross chop"} │
│ types │ {Flying,Psychic,Grass,Poison,Ground,Rock,Fire,Dark,Water,Ground,Fighting} │
├─[ RECORD 22 ]───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ team │ {Gastly,Bellsprout,Geodude,Sunflora,Zubat,Poliwrath} │
│ c │ 10 │
│ move_types │ 01011011111010100 │
│ avg │ 60.0909090909090909 │
│ min │ 30 │
│ moves │ {"Dream eater",Lick,"Razor leaf",Acid,Earthquake,"Rock throw","Petal dance","Wing attack",Bite,"Water gun",Submission} │
│ types │ {Psychic,Ghost,Grass,Poison,Ground,Rock,Grass,Flying,Dark,Water,Fighting} │
├─[ RECORD 23 ]───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ team │ {Gastly,Bellsprout,Geodude,Growlithe,Sunflora,Poliwrath} │
│ c │ 10 │
│ move_types │ 01011010111010110 │
│ avg │ 60.0909090909090909 │
│ min │ 30 │
│ moves │ {"Dream eater",Lick,"Razor leaf",Acid,Earthquake,"Rock throw","Flame wheel",Bite,"Petal dance","Water gun",Submission} │
│ types │ {Psychic,Ghost,Grass,Poison,Ground,Rock,Fire,Dark,Grass,Water,Fighting} │
├─[ RECORD 24 ]───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ team │ {Gastly,Growlithe,Sunflora,Wooper,Butterfree,Sudowoodo} │
│ c │ 10 │
│ move_types │ 01011011101010110 │
│ avg │ 60.0000000000000000 │
│ min │ 30 │
│ moves │ {"Dream eater",Lick,"Flame wheel",Bite,"Petal dance","Water gun",Earthquake,Gust,Psybeam,"Low kick","Rock throw","Feint attack"} │
│ types │ {Psychic,Ghost,Fire,Dark,Grass,Water,Ground,Flying,Psychic,Fighting,Rock,Dark} │
├─[ RECORD 25 ]───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ team │ {Gastly,Bellsprout,Growlithe,Wooper,Sudowoodo,Machop} │
│ c │ 10 │
│ move_types │ 01011010111010110 │
│ avg │ 59.7500000000000000 │
│ min │ 30 │
│ moves │ {"Dream eater",Lick,"Razor leaf",Acid,"Flame wheel",Bite,"Water gun",Earthquake,"Low kick","Rock throw","Feint attack","Cross chop"} │
│ types │ {Psychic,Ghost,Grass,Poison,Fire,Dark,Water,Ground,Fighting,Rock,Dark,Fighting} │
├─[ RECORD 26 ]───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ team │ {Gastly,Bellsprout,Wooper,Zubat,Sudowoodo,Machop} │
│ c │ 10 │
│ move_types │ 01011011111010100 │
│ avg │ 59.7500000000000000 │
│ min │ 30 │
│ moves │ {"Dream eater",Lick,"Razor leaf",Acid,"Water gun",Earthquake,"Wing attack",Bite,"Low kick","Rock throw","Feint attack","Cross chop"} │
│ types │ {Psychic,Ghost,Grass,Poison,Water,Ground,Flying,Dark,Fighting,Rock,Dark,Fighting} │
├─[ RECORD 27 ]───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ team │ {Hoothoot,Gastly,Geodude,Growlithe,Sunflora,Poliwrath} │
│ c │ 10 │
│ move_types │ 01011011101010110 │
│ avg │ 59.4545454545454545 │
│ min │ 30 │
│ moves │ {Peck,Confusion,"Dream eater",Lick,Earthquake,"Rock throw","Flame wheel",Bite,"Petal dance","Water gun",Submission} │
│ types │ {Flying,Psychic,Psychic,Ghost,Ground,Rock,Fire,Dark,Grass,Water,Fighting} │
├─[ RECORD 28 ]───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ team │ {Hoothoot,Gastly,Bellsprout,Geodude,Growlithe,Wooper} │
│ c │ 10 │
│ move_types │ 01011011110010110 │
│ avg │ 59.3333333333333333 │
│ min │ 30 │
│ moves │ {Peck,Confusion,"Dream eater",Lick,"Razor leaf",Acid,Earthquake,"Rock throw","Flame wheel",Bite,"Water gun",Earthquake} │
│ types │ {Flying,Psychic,Psychic,Ghost,Grass,Poison,Ground,Rock,Fire,Dark,Water,Ground} │
├─[ RECORD 29 ]───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ team │ {Hoothoot,Gastly,Bellsprout,Geodude,Growlithe,Machop} │
│ c │ 10 │
│ move_types │ 01011011111010010 │
│ avg │ 59.2727272727272727 │
│ min │ 30 │
│ moves │ {Peck,Confusion,"Dream eater",Lick,"Razor leaf",Acid,Earthquake,"Rock throw","Flame wheel",Bite,"Cross chop"} │
│ types │ {Flying,Psychic,Psychic,Ghost,Grass,Poison,Ground,Rock,Fire,Dark,Fighting} │
├─[ RECORD 30 ]───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ team │ {Gastly,Bellsprout,Growlithe,Sunflora,Wooper,Sudowoodo} │
│ c │ 10 │
│ move_types │ 01011010111010110 │
│ avg │ 58.9166666666666667 │
│ min │ 30 │
│ moves │ {"Dream eater",Lick,"Razor leaf",Acid,"Flame wheel",Bite,"Petal dance","Water gun",Earthquake,"Low kick","Rock throw","Feint attack"} │
│ types │ {Psychic,Ghost,Grass,Poison,Fire,Dark,Grass,Water,Ground,Fighting,Rock,Dark} │
└────────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment