init
This commit is contained in:
commit
402054df64
4 changed files with 491 additions and 0 deletions
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
/target
|
||||||
|
Cargo.lock
|
11
Cargo.toml
Normal file
11
Cargo.toml
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
[package]
|
||||||
|
name = "alchemysolver"
|
||||||
|
version = "0.1.0"
|
||||||
|
authors = ["LordMZTE <lord@mzte.de>"]
|
||||||
|
edition = "2018"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
anyhow = "1.0.40"
|
||||||
|
petgraph = "0.5.1"
|
385
assets/combinations.txt
Normal file
385
assets/combinations.txt
Normal file
|
@ -0,0 +1,385 @@
|
||||||
|
Airplane = Metal + Bird
|
||||||
|
Albert Einstine = Scientist + Energy
|
||||||
|
Alcohol = Fire + water
|
||||||
|
Alcoholic = Man + Alcohol
|
||||||
|
Algae = Life + water
|
||||||
|
Alien = Star + Life
|
||||||
|
Aluminium = Airplane + Metal
|
||||||
|
Ambulance = Hospital + Car
|
||||||
|
Aquarium = Glass + Fish
|
||||||
|
Arable = Earth + Tool
|
||||||
|
Arms = Metal + Tool
|
||||||
|
Ash = Fire + Tree
|
||||||
|
Ashtray = Ash + Glass
|
||||||
|
Assassin = Man + Poisoned Weapons
|
||||||
|
Austrialia = Kangaroo + Country
|
||||||
|
Avian Flu = Bird + Flu
|
||||||
|
Baby = Man + Sex
|
||||||
|
Bacon = Fire + Pig
|
||||||
|
Bacteria = Life + Swamp
|
||||||
|
Bar = Brick House + Beer
|
||||||
|
Barbeque = Fire + Meat
|
||||||
|
Bat = Bird + Vampire
|
||||||
|
Batman = Bat + Man
|
||||||
|
Beach = Water + Sand
|
||||||
|
Bear = Beast + Forest
|
||||||
|
Beast = Earth + Lizard
|
||||||
|
Beaver = Dam + Beast
|
||||||
|
Bee = Flower + beetle
|
||||||
|
Beer = Alcohol + Wheat
|
||||||
|
Beetle = Earth + Worm
|
||||||
|
Beetroot = Sugar + Seed
|
||||||
|
Belarus = Tractor + Country
|
||||||
|
Berry = Grass + Fruit
|
||||||
|
Bicycle = Wheel + Wheel
|
||||||
|
Bird = Air + Egg
|
||||||
|
Bitumen = Kerogen + Pressure
|
||||||
|
Blood = Beast + Hunter
|
||||||
|
Boat = Wood + Water
|
||||||
|
Boiler = Metal + Steam
|
||||||
|
Book = Feather + Paper
|
||||||
|
Borscht = Beetroot + Fire
|
||||||
|
Bow = Robin Hood + Arms
|
||||||
|
Bread = Dough + Fire
|
||||||
|
Brick = Clay + Fire
|
||||||
|
Brick House = Brick + Concrete
|
||||||
|
Butterfly = Air + Worm
|
||||||
|
C-3PO = Gold + Robot
|
||||||
|
Cactus = Desert + Tree
|
||||||
|
Camel = Desert + Beast
|
||||||
|
Cancer = Man + Tobacco
|
||||||
|
Car = Cart + Combustion Engine
|
||||||
|
Caramel = Sugar + Fire
|
||||||
|
Carbon Dioxide = Oxygen + Man
|
||||||
|
Carmine = Cochineal + Fire
|
||||||
|
Cart = Wheel + Wood
|
||||||
|
Cat = Mouse + Hunter
|
||||||
|
Catdog = Cat + Dog
|
||||||
|
Caviar = Fish + Fish
|
||||||
|
Cement = Clay + Limestone
|
||||||
|
Cemetery = Grave + Grave
|
||||||
|
Ceramics = Clay + Man
|
||||||
|
Champagne = Soda water + Wine
|
||||||
|
Chariot = Warrior + Cart
|
||||||
|
Cheese = Quark + Fire
|
||||||
|
Chicken = Egg + Life
|
||||||
|
China = Dragon + Country
|
||||||
|
Chocolate = Cocoa + Sugar
|
||||||
|
Christmas Tree = Tree + Lightbulb
|
||||||
|
Cigarettes = Paper + Tobacco
|
||||||
|
City = Skyscraper + Skyscraper
|
||||||
|
Clay = Sand + Swamp
|
||||||
|
Clock = Hourglass + Electricity
|
||||||
|
Cloth = Tool + Wool
|
||||||
|
Clothing = Cloth + Man
|
||||||
|
Cloud = Air + Steam
|
||||||
|
Coal = Fire + Tree
|
||||||
|
Coca-Cola = Soda Water + Carmine
|
||||||
|
Cochineal = Cactus + Beetle
|
||||||
|
Cocoa = Seed + Mexico
|
||||||
|
Coffin = Corpse + wood
|
||||||
|
Coin = Silver + Pressure
|
||||||
|
Combustion Engine = Steam Engine + Gasoline
|
||||||
|
Concrete = Cement + Water
|
||||||
|
Continent = Country + Country
|
||||||
|
Copper = Silver + Gold
|
||||||
|
Corpse = Fire + Man
|
||||||
|
Country = City + City
|
||||||
|
Crop Circles = UFO + Arable
|
||||||
|
Dam = Water + Brick
|
||||||
|
Desert = Sand + Sand
|
||||||
|
Diamond = Uncut Diamond + Tool
|
||||||
|
Diet = Man + Yogurt
|
||||||
|
Dilemma = Egg + Chicken
|
||||||
|
Dinosaur = Earth + Egg
|
||||||
|
Doctor = Hospital + Scientist
|
||||||
|
Dog = Wolf + Man
|
||||||
|
Dough = Flour + Water
|
||||||
|
Dr. Zoidberg = Doctor + Lobster
|
||||||
|
Dragon = Dinosaur + Fire
|
||||||
|
Dust = Air + Earth
|
||||||
|
E-Book = Microchip + Book
|
||||||
|
Ectoplasm = Ghost + Energy
|
||||||
|
Egg = Life + Stone
|
||||||
|
Egypt = Cat + Country
|
||||||
|
Electric Eel = Snake + Electricity
|
||||||
|
Electric Ray = Fish + Electricity
|
||||||
|
Electricity = Energy + Metal
|
||||||
|
Elephant = Whale + Earth
|
||||||
|
Energy = Air + Fire
|
||||||
|
ENT = Tree + Life
|
||||||
|
Explosion = Gasoline + Fire
|
||||||
|
Fabrege Egg = Egg + Diamond
|
||||||
|
Farmer = Man + Seed
|
||||||
|
Fat = Man + Pig
|
||||||
|
Feather = Bird + Hunter
|
||||||
|
Fern = Moss + Swamp
|
||||||
|
Finland = Sauna + Country
|
||||||
|
Fire Elemental = Fire + Life
|
||||||
|
Firearms = Arms + Gunpowder
|
||||||
|
Firefighter = Hero + Fire
|
||||||
|
Firefly = Light + Beetle
|
||||||
|
Fish = Bacteria + Plankton
|
||||||
|
Fisherman = Hunter + Fish
|
||||||
|
Flour = Stone + Wheat
|
||||||
|
Flower = Water + Seed
|
||||||
|
Flu = Air + Bacteria
|
||||||
|
Fondue = Cheese + Fire
|
||||||
|
Forest = Grove + Grove
|
||||||
|
Fossil = Butterfly + Earth
|
||||||
|
France = Champagne + Country
|
||||||
|
Frankenstein = Corpse + Electricity
|
||||||
|
Fried Chicken = Chicken + Fire
|
||||||
|
Frog = Lizard + Swamp
|
||||||
|
Fruit = Tree + Farmer
|
||||||
|
Fugu = Fish + Poison
|
||||||
|
Gasoline = Petroleum + Pressure
|
||||||
|
Genie = Lamp + Ghost
|
||||||
|
Germany = VW Beetle + Country
|
||||||
|
Geyser = Steam + Earth
|
||||||
|
Ghost = Ash + Life
|
||||||
|
Ghostbusters = Hunter + Ghost
|
||||||
|
Glass = Fire + Sand
|
||||||
|
Gold = Philosopher's Stone + Silver
|
||||||
|
Golem = Clay + Life
|
||||||
|
Grape = Earth + Wood
|
||||||
|
Grass = Earth + Moss
|
||||||
|
Grave = Earth + Corpse
|
||||||
|
Grove = Tree + Tree
|
||||||
|
Gunpowder = Dust + Fire
|
||||||
|
Hen Coop = Chicken + Hut
|
||||||
|
Hero = Dragon + Warrior
|
||||||
|
Honey = Bee + Tree
|
||||||
|
Hospital = Brick House + Sick
|
||||||
|
Hot Chocolate = Chocolate + Fire
|
||||||
|
Hourglass = Glass + sand
|
||||||
|
House M.D. = Man + Vicodin
|
||||||
|
Hunter = Arms + Man
|
||||||
|
Hut = Man + Stone
|
||||||
|
Hydrogen = Electricity + Water
|
||||||
|
Ice = Water + Glass
|
||||||
|
Iceland = Volcano + Country
|
||||||
|
Idea = Man + Light bulb
|
||||||
|
India = Kama Sutra + Country
|
||||||
|
Iodine = Algae + Fire
|
||||||
|
iPhone = Phone + Fruit
|
||||||
|
Island = Sea + Volcano
|
||||||
|
Italy = Venice + Country
|
||||||
|
Japan = Sushi + Country
|
||||||
|
Jedi = Warrior + Lightsaber
|
||||||
|
Juice = Berry + Pressure
|
||||||
|
Kama Sutra = Book + Sex
|
||||||
|
Kangaroo = Frog + 1UP
|
||||||
|
Kerogen = Fossil + Pressure
|
||||||
|
Kilt = Scotland + Clothing
|
||||||
|
Knife = Meat + Tool
|
||||||
|
Lamp = Glass + Fire
|
||||||
|
Lance Armstrong = Cancer + Bike
|
||||||
|
Lava = Earth + Fire
|
||||||
|
Lava Golem = Lava + Life
|
||||||
|
Lava Lamp = Lava + Lamp
|
||||||
|
Lawn Mower = Scissors + Combustion Engine
|
||||||
|
Leech = Blood + Worm
|
||||||
|
Library = Book + Book
|
||||||
|
Lichen = Mushroom + Algae
|
||||||
|
Life = Energy + Swamp
|
||||||
|
Light = Electricity + Light Bulb
|
||||||
|
Light Bulb = Electricity + Glass
|
||||||
|
Lighthouse = Skyscraper + Light
|
||||||
|
Lightning Rod = Thunderstorm + Metal
|
||||||
|
Lightsaber = Arms + Light
|
||||||
|
Lime = Fire + Limestone
|
||||||
|
Limestone = Shells + Stone
|
||||||
|
Livestock = Beast + Man
|
||||||
|
Lizard = Snake + Worm
|
||||||
|
Lobster = Scorpion + Water
|
||||||
|
Locomotive = Cart + Steam Engine
|
||||||
|
Man = Golem + Life
|
||||||
|
Manure = Grass + Livestock
|
||||||
|
Mario = 1up + Man
|
||||||
|
McDonald's = Coca-Cola + Sandwich
|
||||||
|
Meat = Beast + Hunter
|
||||||
|
Mentos = Coca-Cola + Geyser
|
||||||
|
Mermaid = Woman + Fish
|
||||||
|
Metal = Fire + Stone
|
||||||
|
Metal Golem = Metal + Life
|
||||||
|
Mexico = Tequila + Country
|
||||||
|
Microchip = Transistor + Transistor
|
||||||
|
Milk = Livestock + Man
|
||||||
|
Mirror = Aliminium + Glass
|
||||||
|
Mite = Life + Dust
|
||||||
|
Mold = Mushroom + Mud
|
||||||
|
Molotov Cocktail = Fire + Alcohol
|
||||||
|
Money = Coin + Paper
|
||||||
|
Moon = Cheese + Sky
|
||||||
|
Moss = Swamp + Algae
|
||||||
|
Motorboat = Boat + Combustion Engine
|
||||||
|
Morotcycle = Bicycle + Combustion Engine
|
||||||
|
Mouse = Cheese + Beast
|
||||||
|
Mud = Dust + Water
|
||||||
|
Mummy = Paper + Zombie
|
||||||
|
Museum = Brick House + Fossil
|
||||||
|
Mushroom = Earth + Algae
|
||||||
|
Music = Sound + Idea
|
||||||
|
Obesity = Man + McDonald's
|
||||||
|
Old Man = Man + Time
|
||||||
|
Omelette = Egg + Fire
|
||||||
|
Oxygen = Electricity + Water
|
||||||
|
Oxyhydrogen = Oxygen + Hydrogen
|
||||||
|
Ozone = Oxygen + Electricity
|
||||||
|
Panda = Tree + Beast
|
||||||
|
Paper = Reed + Tool
|
||||||
|
Pearl = Sand + Shells
|
||||||
|
Peat = Swamp + Tree
|
||||||
|
Penguin = Bird + Ice
|
||||||
|
Penicillin = Mold + Scientist
|
||||||
|
Perfume = Alcohol + Flower
|
||||||
|
Petri Dish = Glass + Bacteria
|
||||||
|
Petroleum = Bitumen + Pressure
|
||||||
|
Philosopher's Stone = Philosophy + Stone
|
||||||
|
Philosophy = Dilemma + Scientist
|
||||||
|
Phoenix = Fire + Bird
|
||||||
|
Phone = Wire + Sound
|
||||||
|
Pie = Fruit + Dough
|
||||||
|
Pig = Livestock + Mud
|
||||||
|
Piggy Bank = Ceramics + Coin
|
||||||
|
Pillow = Feather + Cloth
|
||||||
|
Pinocchio = Wood + Life
|
||||||
|
Pizza = Cheese + Dough
|
||||||
|
Planet = Continent + Continent
|
||||||
|
Plankton = Bacteria + Water
|
||||||
|
Plesiosauria = Water + Dinosaur
|
||||||
|
Poison = Mushroom + Tool
|
||||||
|
Poisoned Weapons = Arms + Poison
|
||||||
|
Pressure = Earth + Earth
|
||||||
|
Prisoner = Assassin + Time
|
||||||
|
Pterodactyl = Air + Dinosaur
|
||||||
|
Quark = Soured Milk + Fire
|
||||||
|
Quetzalcoatl = Snake + Bird
|
||||||
|
R2-D2 = Star Wars + Robot
|
||||||
|
Rain = Water + Cloud
|
||||||
|
Rainbow = Light + Storm
|
||||||
|
Reed = Grass + Swamp
|
||||||
|
Robin Hood = Forest + Hero
|
||||||
|
Robot = Metal Golem + Electricity
|
||||||
|
Romania = Transylvania + Country
|
||||||
|
Ruby = Aluminuim + Oxygen
|
||||||
|
Russia = Vodka + Country
|
||||||
|
Rust = Water + Metal
|
||||||
|
Sailboat = Boat + Cloth
|
||||||
|
Sailing Ship = Cloth + Wooden ship
|
||||||
|
Sailor = Man + Boat
|
||||||
|
Salamander = Lizard + Fire
|
||||||
|
Salo = Man + Pig
|
||||||
|
Salt = Sea + Fire
|
||||||
|
Saltpeter = Limestone + Manure
|
||||||
|
Sand = Water + Stone
|
||||||
|
Sandstorm = Sand + Storm
|
||||||
|
Sandwich = Meat + Bread
|
||||||
|
Santa Clause = Old Man + Christmas Tree
|
||||||
|
Saudi Arabia = Petroleum + Country
|
||||||
|
Sauna = Steam + Hut
|
||||||
|
Scarab = Beetle + Manure
|
||||||
|
Scientist = Library + Man
|
||||||
|
Scissors = Knife + Knife
|
||||||
|
Scorpion = Beetle + Sand
|
||||||
|
Scotch Whiskey = Alcohol + Peat
|
||||||
|
Scotland = Scotch Whiskey + Country
|
||||||
|
Sea = Water + Water
|
||||||
|
Seed = Life + Sand
|
||||||
|
Sex = Man + Woman
|
||||||
|
Sex and the City = Sex + City
|
||||||
|
Shells = Plankton + Stone
|
||||||
|
Sick = Man + Flu
|
||||||
|
Silicon = Pressure + Sand
|
||||||
|
Silk = China + Cloth
|
||||||
|
Silver = Moon + Metal
|
||||||
|
Sith = Jedi + Assassin
|
||||||
|
Sky = Air + Cloud
|
||||||
|
Skyscraper = Brick House + Glass
|
||||||
|
Smoke = Tobacco + Fir
|
||||||
|
Snail = Shells + Worm
|
||||||
|
Snake = Swamp + Worm
|
||||||
|
Sniper = Assassin + Firearms
|
||||||
|
Soap = Ash + Fat
|
||||||
|
Soda Water = Carbon Dioxide + Water
|
||||||
|
Soldier = Firearms + Man
|
||||||
|
Sound = Metal + wind
|
||||||
|
Soured Milk = Milk + Yogurt
|
||||||
|
Spinning Wheel = Wheel + Wool
|
||||||
|
Stake = Wood + Knife
|
||||||
|
Star = Sun + Scientist
|
||||||
|
Star Wars = Jedi + Sith
|
||||||
|
Statue = Stone + Tool
|
||||||
|
Statue of Liberty = USA + Statue
|
||||||
|
Steam = Air + Water
|
||||||
|
Steam Engine = Boiler + Coal
|
||||||
|
Steamer = Steam Engine + Wooden Ship
|
||||||
|
Stone = Air + Lava
|
||||||
|
Storm = Air + Energy
|
||||||
|
Sugar = Lime + Reed
|
||||||
|
Sulfur = Bacteria + Swamp
|
||||||
|
Sun = Sky + Chariot
|
||||||
|
Sunflower = Sun + Flower
|
||||||
|
Sushi = Fish + Algae
|
||||||
|
Swamp = Earth + Water
|
||||||
|
Sweater = Yarn + Tool
|
||||||
|
Swine Flu = Pig + Flu
|
||||||
|
Swiss Army Knife = Knife + Tool
|
||||||
|
Switzerland = Fondue + Country
|
||||||
|
Team = Beast + Cart
|
||||||
|
Tequila = Alcohol + Worm
|
||||||
|
The Beatles = Beetle + Beetle
|
||||||
|
Thread = Spinning Wheel + Yarn
|
||||||
|
Thunderbird = Bird + Storm
|
||||||
|
Thunderstorm = Storm + Electricity
|
||||||
|
Time = Life + Hourglass
|
||||||
|
Toast = Fire + Bread
|
||||||
|
Tobacco = Fire + Grass
|
||||||
|
Tool = Man + Metal
|
||||||
|
Totoro = Forest + Ghost
|
||||||
|
Tractor = Lawn Mower + Arable
|
||||||
|
Transformers = Car + Life
|
||||||
|
Transistor = Silicon + Electricity
|
||||||
|
Transylvania = Vampire + Country
|
||||||
|
Tree = Earth + Seed
|
||||||
|
Turtle = Sand + Egg
|
||||||
|
Twilight Saga = Vampire + Werewolf
|
||||||
|
Typhoon = Storm + Water
|
||||||
|
UFO = Alien + Airplane
|
||||||
|
Ukraine = Salo + Country
|
||||||
|
Uncut Diamond = Coal + Pressure
|
||||||
|
Undead = Zombie + Corpse
|
||||||
|
United Kingdom = Beatles + Country
|
||||||
|
USA = Coca-Cola + Country
|
||||||
|
Vampire = Blood + Man
|
||||||
|
Venice = City + Water
|
||||||
|
Venus = Woman + Planet
|
||||||
|
Vicodin = Sick + Doctor
|
||||||
|
Vinegar = Alcohol + Oxygen
|
||||||
|
Vodka = Alcohol + Water
|
||||||
|
Volcano = Lava + Pressure
|
||||||
|
Vulture = Corpse + Bird
|
||||||
|
VW Beetle = Car + Beetle
|
||||||
|
Warrior = Arms + Hunter
|
||||||
|
Weevil = Flour + Beetle
|
||||||
|
Werewolf = Beast + Vampire
|
||||||
|
Whale = Beast + Water
|
||||||
|
Wheat = Arable + Seed
|
||||||
|
Wheel = Tool + Wood
|
||||||
|
Whey = Soured Milk + Fire
|
||||||
|
Wind = Air + Air
|
||||||
|
Wine = Grape + Alcohol
|
||||||
|
Wire = Thread + Copper
|
||||||
|
Wolf = Moon + Beast
|
||||||
|
Woman = Milk + Man
|
||||||
|
Wood = Tool + Tree
|
||||||
|
Wooden Ship = Boat + Wood
|
||||||
|
Wool = Beast + Hunter
|
||||||
|
Worm = Earth + Plankton
|
||||||
|
Yarn = Spinning Wheel + Wool
|
||||||
|
Yoda = Jedi + Swamp
|
||||||
|
Yogurt = Bacteria + Milk
|
||||||
|
Yoshi = 1up + Egg
|
||||||
|
Zombie = Fossil + Life
|
||||||
|
Zoo = Beast + Museum
|
93
src/main.rs
Normal file
93
src/main.rs
Normal file
|
@ -0,0 +1,93 @@
|
||||||
|
use petgraph::dot::{Dot, Config};
|
||||||
|
use petgraph::{Graph, graph::NodeIndex};
|
||||||
|
use anyhow::Context;
|
||||||
|
use std::{collections::HashMap, str::FromStr};
|
||||||
|
use std::env;
|
||||||
|
|
||||||
|
fn main() -> anyhow::Result<()> {
|
||||||
|
let g = include_str!("../assets/combinations.txt").parse::<GraphGen>()?;
|
||||||
|
let searched = env::args().nth(1).context("Supply argument for searched element")?;
|
||||||
|
let graph = g.create_graph(&searched);
|
||||||
|
let dot = Dot::with_config(&graph, &[Config::EdgeNoLabel]);
|
||||||
|
println!("{}", dot);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Default)]
|
||||||
|
struct GraphGen {
|
||||||
|
map: HashMap<String, (String, String)>,
|
||||||
|
graph: Graph<String, String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl GraphGen {
|
||||||
|
fn try_parse_comb(&mut self, c: &str) -> anyhow::Result<()> {
|
||||||
|
let err = "Failed to Parse combination";
|
||||||
|
let mut split = c.splitn(2, '=');
|
||||||
|
let name = split.next().context(err)?.trim().to_owned();
|
||||||
|
let rest = split.next().context(err)?;
|
||||||
|
|
||||||
|
let mut split = rest.splitn(2, '+');
|
||||||
|
let ing_a = split.next().context(err)?.trim().to_owned();
|
||||||
|
let ing_b = split.next().context(err)?.trim().to_owned();
|
||||||
|
|
||||||
|
self.map.insert(name, (ing_a, ing_b));
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn populate(&mut self, elem: String) {
|
||||||
|
let ab = self.map.get(&elem);
|
||||||
|
|
||||||
|
if !self.graph.node_indices().any(|n| self.graph.node_weight(n).unwrap() == &elem) {
|
||||||
|
self.graph.add_node(elem);
|
||||||
|
}
|
||||||
|
|
||||||
|
if let Some((a, b)) = ab {
|
||||||
|
let a = a.clone();
|
||||||
|
let b = b.clone();
|
||||||
|
|
||||||
|
self.populate(a);
|
||||||
|
self.populate(b);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn link(&mut self) {
|
||||||
|
for n in self.graph.node_indices() {
|
||||||
|
let w = self.graph.node_weight(n).unwrap();
|
||||||
|
if let Some((a, b)) = self.map.get(w) {
|
||||||
|
if let Some(i) = self.find_node(a) {
|
||||||
|
self.graph.add_edge(i, n, String::new());
|
||||||
|
}
|
||||||
|
|
||||||
|
if let Some(i) = self.find_node(b) {
|
||||||
|
self.graph.add_edge(i, n, String::new());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn find_node(&self, w: &str) -> Option<NodeIndex>{
|
||||||
|
self.graph.node_indices().find(|g| &self.graph[*g] == w)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn create_graph(mut self, node: &str) -> Graph<String, String> {
|
||||||
|
self.populate(node.to_owned());
|
||||||
|
self.link();
|
||||||
|
self.graph
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl FromStr for GraphGen {
|
||||||
|
type Err = anyhow::Error;
|
||||||
|
|
||||||
|
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||||
|
let mut this = Self::default();
|
||||||
|
|
||||||
|
for l in s.lines() {
|
||||||
|
this.try_parse_comb(l)?;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(this)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue