digimon_sleuth 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.3.0
data/README.md ADDED
@@ -0,0 +1,78 @@
1
+ [![Code Climate](https://codeclimate.com/github/rolandhawk/digimon_sleuth/badges/gpa.svg)](https://codeclimate.com/github/rolandhawk/digimon_sleuth)
2
+
3
+ # digimon_sleuth
4
+ Digimon Cyber Sleuth simple know how code.
5
+
6
+ ## Get Started
7
+ Install RVM
8
+
9
+ ```
10
+ curl -L get.rvm.io | bash -s stable
11
+ source ~/.bash_profile
12
+ ```
13
+
14
+ Then run `rvm requirements` and follow the instructions
15
+
16
+ Install Ruby 2.3.0
17
+
18
+ ```
19
+ rvm install 2.3.0
20
+ ```
21
+
22
+ ## Start Program
23
+ ```
24
+ ./digimon
25
+ ```
26
+
27
+ ## Feature
28
+ ### Digivolve path finder
29
+
30
+ Command:
31
+ ```
32
+ PATH Agumon TO Gabumon
33
+ ```
34
+ Response:
35
+ ```
36
+ Agumon -> GeoGreymon -> RizeGreymon -> Dorugamon -> Gabumon
37
+ Agumon -> Meramon -> Panjyamon -> Garurumon -> Gabumon
38
+ Agumon -> Sukamon -> Etemon -> Numemon -> Gabumon
39
+ Agumon -> Sukamon -> Elecmon -> Garurumon -> Gabumon
40
+ ```
41
+ Available options
42
+ ```
43
+ ALL #display all path
44
+ EXCEPT #don't involve particular level(s)
45
+ ONLY #only involve particulas level(s)
46
+ DEPTH #max evolve needed
47
+ ```
48
+ Command:
49
+ ```
50
+ PATH Agumon TO Gabumon -- ALL -- EXCEPT Mega, Training II
51
+ ```
52
+ Response:
53
+ ```
54
+ Agumon -> GeoGreymon -> RizeGreymon -> Dorugamon -> Gabumon
55
+ Agumon -> Meramon -> Panjyamon -> Garurumon -> Gabumon
56
+ Agumon -> Sukamon -> Etemon -> Numemon -> Gabumon
57
+ Agumon -> Sukamon -> Elecmon -> Garurumon -> Gabumon
58
+ Agumon -> GeoGreymon -> RizeGreymon -> ExVeemon -> Veemon -> Veedramon -> Gabumon
59
+ Agumon -> GeoGreymon -> RizeGreymon -> Dorugamon -> Gabumon -> Veedramon -> Gabumon
60
+ Agumon -> GeoGreymon -> RizeGreymon -> Dorugamon -> Gabumon -> Frigimon -> Gabumon
61
+ Agumon -> GeoGreymon -> SkullGreymon -> Ankylomon -> Gomamon -> Frigimon -> Gabumon
62
+ Agumon -> GeoGreymon -> Guilmon -> Growlmon -> WarGrowlmon -> Veedramon -> Gabumon
63
+ Agumon -> Greymon -> MetalGreymon -> Growlmon -> WarGrowlmon -> Veedramon -> Gabumon
64
+ Agumon -> Greymon -> SkullGreymon -> Ankylomon -> Gomamon -> Frigimon -> Gabumon
65
+ Agumon -> Meramon -> BlueMeramon -> Garurumon(Blk) -> Gabumon(Blk) -> Frigimon -> Gabumon
66
+ Agumon -> Meramon -> Panjyamon -> Garurumon -> Zudomon -> Frigimon -> Gabumon
67
+ Agumon -> Meramon -> Panjyamon -> Garurumon -> Gabumon -> Veedramon -> Gabumon
68
+ Agumon -> Meramon -> Panjyamon -> Garurumon -> Gabumon -> Frigimon -> Gabumon
69
+ Agumon -> Meramon -> Guilmon -> Growlmon -> WarGrowlmon -> Veedramon -> Gabumon
70
+ Agumon -> Tyrannomon -> Agumon(Blk) -> Growlmon -> WarGrowlmon -> Veedramon -> Gabumon
71
+ Agumon -> Tyrannomon -> Guilmon -> Growlmon -> WarGrowlmon -> Veedramon -> Gabumon
72
+ Agumon -> Sukamon -> Etemon -> Numemon -> Gabumon -> Veedramon -> Gabumon
73
+ Agumon -> Sukamon -> Etemon -> Numemon -> Gabumon -> Frigimon -> Gabumon
74
+ Agumon -> Sukamon -> Elecmon -> Garurumon -> Zudomon -> Frigimon -> Gabumon
75
+ Agumon -> Sukamon -> Elecmon -> Garurumon -> Gabumon -> Veedramon -> Gabumon
76
+ Agumon -> Sukamon -> Elecmon -> Garurumon -> Gabumon -> Frigimon -> Gabumon
77
+ Agumon -> Sukamon -> Elecmon -> Garurumon(Blk) -> Gabumon(Blk) -> Frigimon -> Gabumon
78
+ ```
@@ -0,0 +1,22 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ $LOAD_PATH.unshift(File.expand_path('../../lib', __FILE__))
4
+ require 'digimon_sleuth'
5
+
6
+ while (command = gets&.strip).downcase != "exit"
7
+ begin
8
+ command, args = command.split(' ', 2)
9
+ args = args.downcase
10
+
11
+ case command.downcase
12
+ when "path"
13
+ paths = DigimonSleuth.search_path(args)
14
+ puts "Found #{paths.count} paths:"
15
+ puts paths
16
+ else
17
+ puts "Unknown command '#{command}'"
18
+ end
19
+ rescue DigimonError => e
20
+ puts e.message
21
+ end
22
+ end
data/dat/digivolve.dat ADDED
@@ -0,0 +1,249 @@
1
+ Kuramon -> Tsumemon, Pagumon
2
+ Pabumon -> Motimon, Yokomon, Tanemon
3
+ Punimon -> Nyaromon, Tsunomon
4
+ Botamon -> Koromon, Wanyamon
5
+ Poyomon -> Bukamon, Tokomon
6
+ Koromon -> Agumon, Hackmon, Guilmon, ToyAgumon
7
+ Tanemon -> Lalamon, Palmon, Renamon
8
+ Tsunomon -> Gabumon, Goblimon, Veemon, Gabumon(Blk)
9
+ Tsumemon -> Keramon, DemiDevimon, Agumon(Blk)
10
+ Tokomon -> Falcomon, Hawkmon, Lucemon, Patamon
11
+ Nyaromon -> Armadillomon, Salamon, Terriermon
12
+ Pagumon -> Gazimon, Impmon, Lopmon
13
+ Yokomon -> Elecmon, Wormmon, Biyomon
14
+ Bukamon -> Betamon, Gomamon, Otamamon, Syakomon
15
+ Motimon -> Gotsumon, Hagurumon, Tentomon, Solarmon
16
+ Wanyamon -> Dorumon, Gaomon, Kudamon
17
+ Agumon -> GeoGreymon, Greymon, Meramon, Tyrannomon, Sukamon
18
+ Agumon(Blk) -> Growlmon, Cyclonemon, Tankmon, Tyrannomon, Greymon(Blue)
19
+ Armadillomon -> Ankylomon, Cyclonemon, GoldNumemon, Tankmon, Geremon
20
+ Impmon -> Bakemon, Ogremon, Socerimon, BlackGatomon, Wizardmon, IceDevimon
21
+ Elecmon -> Garurumon, Leomon, Nanimon, Sukamon, Garurumon(Blk), Geremon
22
+ Otamamon -> Gekomon, Numemon, Seadramon, ShellNumemon
23
+ Gaomon -> Gargomon, GaoGamon, Leomon, Togemon, Ogremon
24
+ Gazimon -> Dorugamon, GaoGamon, Leomon, Kurisarimon, Nanimon, Garurumon(Blk)
25
+ Gabumon -> Dorugamon, Garurumon, Numemon, Veedramon, Frigimon
26
+ Gabumon(Blk) -> Garurumon(Blk), Vegiemon, Reppamon, Frigimon
27
+ Guilmon -> GeoGreymon, Growlmon, Meramon, Tyrannomon, Greymon(Blue)
28
+ Kudamon -> Angemon, GoldNumemon, Peckmon, Reppamon
29
+ Keramon -> Bakemon, Kurisarimon, PlatinumSukamon, Wizardmon
30
+ Gotsumon -> Ankylomon, Clockmon, Starmon, Tankmon
31
+ Goblimon -> GaoGamon, Growlmon, Nanimon, Ogremon, Greymon(Blue)
32
+ Gomamon -> Ankylomon, Ikkakumon, Socerimon, Frigimon
33
+ Syakomon -> Ikkakumon, ShellNumemon, Gekomon, Seadramon
34
+ Solarmon -> Clockmon, Geremon, Starmon, Meramon
35
+ Terriermon -> Gargomon, Ikkakumon, Gatomon, Rapidmon(Armor)
36
+ Tentomon -> Kabuterimon, Waspmon, Kuwagamon, Stingmon, Sunflowmon
37
+ ToyAgumon -> Clockmon, Greymon, Guardromon, Sukamon, Starmon
38
+ Dorumon -> Cyclonemon, Dorugamon, Guardromon, Waspmon
39
+ Hagurumon -> Clockmon, GoldNumemon, Guardromon, Starmon, PlatinumSukamon
40
+ Patamon -> Angemon, Birdramon, Reppamon, Gatomon, ExVeemon
41
+ Hackmon -> Jesmon, Greymon, GeoGreymon, PlatinumSukamon
42
+ Palmon -> Kuwagamon, Togemon, Vegiemon, Vegiemon, Sunflowmon
43
+ DemiDevimon -> Bakemon, Devimon, Kyubimon, Kurisarimon, IceDevimon
44
+ Biyomon -> Kabuterimon, Aquilamon, Birdramon, Kyubimon
45
+ Falcomon -> Stingmon, ExVeemon, Aquilamon, Peckmon
46
+ Veemon -> Flamedramon, Magnamon, Veedramon, ExVeemon
47
+ Salamon -> Frigimon, Reppamon, Gatomon, Veedramon, Socerimon
48
+ Betamon -> Gekomon, Numemon, Seadramon, ShellNumemon, Vegiemon
49
+ Hawkmon -> Meramon, Aquilamon, Birdramon, Peckmon
50
+ Lalamon -> Sunflowmon, Togemon, Vegiemon, Woodmon
51
+ Lucemon -> Angemon, Devimon, Lucemon FM
52
+ Renamon -> BlackGatomon, Garurumon, Kyubimon, Woodmon
53
+ Lopmon -> Gargomon, Devimon, BlackGatomon, Wizardmon
54
+ Wormmon -> Waspmon, Kabuterimon, Kuwagamon, Stingmon, IceDevimon
55
+ IceDevimon -> Myotismon, Cherrymon, LadyDevimon
56
+ Aquilamon -> AeroVeedramon, Garudamon, Silphymon, Crowmon
57
+ Ankylomon -> MagnaAngemon, Meteormon, Shakkoumon, SkullGreymon
58
+ Ikkakumon -> MachGaogamon, Whamon, Zudomon
59
+ Wizardmon -> SkullMeramon, Myotismon, Wisemon
60
+ Woodmon -> Cherrymon, Pumpkinmon, Taomon
61
+ ExVeemon -> MagnaAngemon, Paildramon, RizeGreymon
62
+ Angemon -> Garudamon, MagnaAngemon, Shakkoumon
63
+ Ogremon -> SkullMeramon, Digitamamon, WereGarurumon
64
+ Guardromon -> Andromon, GrapLeomon, MetalMamemon, Datamon
65
+ GaoGamon -> GrapLeomon, MachGaogamon, WereGarurumon
66
+ Kabuterimon -> MegaKabuterimon, Cherrymon, Lilamon
67
+ ShellNumemon -> BlackKingNumemon, MegaSeadramon, ShogunGekomon
68
+ Gargomon -> WarGrowlmon, Antylamon, Rapidmon
69
+ Garurumon -> DoruGreymon, Panjyamon, WereGarurumon, Zudomon
70
+ Garurumon(Blk) -> WereGarurumon(Blk), BlueMeramon, MachGaogamon
71
+ Kyubimon -> LadyDevimon, Monzaemon, Taomon
72
+ Growlmon -> Gigadramon, WarGrowlmon, MetalGreymon, MetalTyrannomon
73
+ Kurisarimon -> Cyberdramon, Infermon, Taomon
74
+ Greymon -> MetalGreymon, MetalGreymon(Blue), Megadramon, SkullGreymon
75
+ Greymon(Blue) -> MetalGreymon(Blue), Knightmon, DoruGreymon
76
+ Clockmon -> Andromon, Knightmon, Datamon, Wisemon
77
+ Kuwagamon -> Cherrymon, Okuwamon, CannonBeemon
78
+ Gekomon -> MegaSeadramon, ShogunGekomon, Whamon
79
+ Geremon -> Etemon, SuperStarmon, MetalMamemon
80
+ GoldNumemon -> Vademon, PlatinumNumemon, BlackKingNumemon
81
+ Cyclonemon -> Megadramon, DoruGreymon, Datamon
82
+ Sunflowmon -> Angewomon, Lilamon, Lillymon
83
+ Seadramon -> ShogunGekomon, MegaSeadramon, Whamon
84
+ GeoGreymon -> Gigadramon, RizeGreymon, SkullGreymon
85
+ Sukamon -> SuperStarmon, Etemon, Vademon
86
+ Starmon -> Mamemon, MetalMamemon, SuperStarmon
87
+ Stingmon -> Infermon, Paildramon, Okuwamon
88
+ Socerimon -> Antylamon, Piximon, Wisemon
89
+ Tankmon -> Andromon, Gigadramon, CannonBeemon, Knightmon
90
+ Tyrannomon -> Mamemon, Megadramon, MetalGreymon(Blue), MetalTyrannomon
91
+ Gatomon -> Angewomon, Lillymon, Silphymon
92
+ Devimon -> BlueMeramon, Infermon, MetalGreymon(Blue), Myotismon
93
+ Togemon -> MachGaogamon, Lillymon, Pumpkinmon
94
+ Dorugamon -> RizeGreymon, DoruGreymon, Chirinmon
95
+ Nanimon -> Digitamamon, SuperStarmon, Meteormon
96
+ Numemon -> BlackKingNumemon, Etemon, Monzaemon
97
+ Birdramon -> AeroVeedramon, Garudamon, Chirinmon, Crowmon
98
+ Bakemon -> BlueMeramon, Pumpkinmon, Myotismon, LadyDevimon
99
+ Veedramon -> AeroVeedramon, Cyberdramon, MetalTyrannomon, WarGrowlmon
100
+ PlatinumSukamon -> Etemon, MetalMamemon, Vademon
101
+ BlackGatomon -> Cyberdramon, Knightmon, LadyDevimon, WereGarurumon(Blk)
102
+ Vegiemon -> Digitamamon, Lilamon, MegaKabuterimon
103
+ Peckmon -> Antylamon, Piximon, Crowmon
104
+ Meramon -> BlueMeramon, SkullMeramon, Mamemon, Panjyamon
105
+ Frigimon -> Zudomon, Angewomon, Monzaemon
106
+ Leomon -> GrapLeomon, MetalGreymon, Meteormon, Panjyamon
107
+ Reppamon -> Rapidmon, Piximon, Chirinmon
108
+ Waspmon -> CannonBeemon, Rapidmon, MegaKabuterimon, Okuwamon
109
+ MegaKabuterimon -> GranKuwagamon, Magnadramon, HerculesKabuterimon
110
+ Antylamon -> Kerpymon(Good), Diaboromon, Dianamon, Kerpymon(Blk)
111
+ Andromon -> Craniamon, HiAndromon, TigerVespamon
112
+ Meteormon -> Ebemon, MetalEtemon, Dianamon
113
+ Infermon -> Beelzemon, Diaboromon, VenomMyotismon
114
+ Myotismon -> Barbamon, Piedmon, VenomMyotismon
115
+ AeroVeedramon -> Ravemon, Dynasmon, UlforceVeedramon
116
+ Etemon -> MetalEtemon, Piedmon, PlatinumNumemon
117
+ Angewomon -> Magnadramon, Ophanimon, Mastemon, Valkyrimon
118
+ Okuwamon -> Diaboromon, GranKuwagamon, HerculesKabuterimon
119
+ Garudamon -> Hououmon, Justimon, Ravemon
120
+ Gigadramon -> MetalSeadramon, Machinedramon, GroundLocomon, Darkdramon
121
+ CannonBeemon -> MegaGargomon, GroundLocomon, TigerVespamon
122
+ GrapLeomon -> BanchoLeomon, Leopardmon, SaberLeomon
123
+ Cyberdramon -> Justimon, Titamon, ??? -> GC7(Alphamon)
124
+ Shakkoumon -> Kerpymon(Good), Vikemon, ChaosGallantmon
125
+ Cherrymon -> GranKuwagamon, Kuzuhamon, Puppetmon
126
+ Silphymon -> Dynasmon, Hououmon, Sakuyamon, Valkyrimon
127
+ SuperStarmon -> Justimon, Gankoomon, PlatinumNumemon
128
+ SkullGreymon -> Creepymon, ShineGreymon, Titamon
129
+ Zudomon -> MetalGarurumon, MarineAngemon, Vikemon
130
+ Taomon -> Dianamon, Kuzuhamon, Sakuyamon
131
+ Chirinmon -> MetalGarurumon, Seraphimon, Kentaurosmon
132
+ Digitamamon -> Minervamon, Belphemon SM, Titamon
133
+ SkullMeramon -> Gankoomon, Beelzemon, Boltmon
134
+ ShogunGekomon -> Plesiomon, Leviamon, Vikemon
135
+ DoruGreymon -> ???, Examon, Kentaurosmon -> GC7(Alphamon)
136
+ Knightmon -> Craniamon, Leopardmon, Crusadermon
137
+ Datamon -> Machinedramon, MetalGarurumon(Blk), GroundLocomon
138
+ Paildramon -> Imperialdramon DM
139
+ Panjyamon -> BanchoLeomon, SaberLeomon, MirageGaogamon
140
+ Pumpkinmon -> Boltmon, Puppetmon, Rosemon
141
+ Piximon -> Hououmon, MarineAngemon, Ophanimon
142
+ BlackKingNumemon -> PlatinumNumemon, MetalEtemon, PrinceMamemon
143
+ BlueMeramon -> Barbamon, Boltmon, Creepymon, Darkdramon
144
+ Vademon -> Ebemon, HerculesKabuterimon, HiAndromon
145
+ Whamon -> Plesiomon, MarineAngemon, MetalSeadramon
146
+ MagnaAngemon -> ShineGreymon, Crusadermon, Seraphimon, Valkyrimon
147
+ MachGaogamon -> BanchoLeomon, MirageGaogamon, MegaGargomon
148
+ Mamemon -> Puppetmon, PrinceMamemon, WarGreymon
149
+ MegaSeadramon -> Leviamon, MetalSeadramon, Plesiomon
150
+ Megadramon -> BlackWarGreymon, Machinedramon, UlforceVeedramon
151
+ WarGrowlmon -> ???, ChaosGallantmon, RustTyranomon, Darkdramon -> GC7(Gallantmon)
152
+ MetalGreymon -> RustTyranomon, Gaiomon, WarGreymon
153
+ MetalGreymon(Blue) -> BlackWarGreymon, Gaiomon, WarGreymon, Kerpymon(Blk)
154
+ MetalTyrannomon -> BlackWarGreymon, ???, RustTyranomon -> GC7(Gallantmon)
155
+ MetalMamemon -> Ebemon, HiAndromon, PrinceMamemon
156
+ Monzaemon -> Minervamon, Sakuyamon, SaberLeomon
157
+ Crowmon -> Minervamon, Ravemon, Kuzuhamon
158
+ RizeGreymon -> Examon, Gaiomon, ShineGreymon
159
+ Lilamon -> Lilithmon, Lotosmon, Rosemon
160
+ Rapidmon -> MegaGargomon, TigerVespamon, MetalGarurumon(Blk)
161
+ Lillymon -> Magnadramon, Lotosmon, Rosemon
162
+ Lucemon FM -> Lucemon SM
163
+ LadyDevimon -> Lilithmon, Lotosmon, Mastemon
164
+ WereGarurumon -> MetalGarurumon, MetalGarurumon(Blk), MirageGaogamon
165
+ WereGarurumon(Blk) -> MetalGarurumon(Blk), Minervamon, BanchoLeomon
166
+ Wisemon -> VenomMyotismon, Belphemon SM, Piedmon
167
+ ???
168
+ UlforceVeedramon
169
+ Ebemon
170
+ Imperialdramon DM -> ???, Imperialdramon FM
171
+ Imperialdramon FM -> ???, Imperialdramon DM
172
+ Vikemon
173
+ VenomMyotismon
174
+ WarGreymon -> Omnimon
175
+ Examon
176
+ Ophanimon
177
+ Gaiomon
178
+ ChaosGallantmon
179
+ Gankoomon
180
+ Kuzuhamon
181
+ GranKuwagamon
182
+ GroundLocomon
183
+ Craniamon
184
+ Kerpymon(Good)
185
+ SaberLeomon
186
+ Sakuyamon
187
+ Jesmon
188
+ ShineGreymon -> ShineGreymon BM
189
+ Justimon
190
+ Kentaurosmon
191
+ Seraphimon
192
+ MegaGargomon
193
+ TigerVespamon
194
+ Titamon
195
+ Dianamon
196
+ Diaboromon
197
+ Creepymon
198
+ ???
199
+ Dynasmon
200
+ Leopardmon -> Leopardmon LM
201
+ Leopardmon LM -> Leopardmon
202
+ HiAndromon
203
+ Barbamon
204
+ BanchoLeomon -> Chaosmon
205
+ Piedmon
206
+ Puppetmon
207
+ PlatinumNumemon
208
+ BlackWarGreymon -> Omnimon Zwart
209
+ PrinceMamemon
210
+ Plesiomon
211
+ HerculesKabuterimon
212
+ Beelzemon -> Beelzemon BM
213
+ Belphemon SM -> Belphemon RM
214
+ Hououmon
215
+ Magnadramon
216
+ Boltmon
217
+ Mastemon
218
+ MarineAngemon
219
+ Minervamon
220
+ MirageGaogamon -> MirageGaogamon BM
221
+ Machinedramon
222
+ MetalEtemon
223
+ MetalGarurumon -> Omnimon
224
+ MetalGarurumon(Blk) -> Omnimon Zwart
225
+ MetalSeadramon
226
+ RustTyranomon
227
+ Leviamon
228
+ Lilithmon
229
+ Ravemon -> Ravemon BM
230
+ Crusadermon
231
+ Rosemon -> Rosemon BM
232
+ Lotosmon
233
+ ???
234
+ Omnimon
235
+ Omnimon Zwart
236
+ Belphemon RM -> Belphemon SM
237
+ Lucemon SM
238
+ Flamedramon
239
+ Magnamon
240
+ Rapidmon(Armor)
241
+ Kerpymon(Blk)
242
+ Beelzemon BM
243
+ Darkdramon -> Chaosmon
244
+ Chaosmon
245
+ Valkyrimon
246
+ ShineGreymon BM
247
+ MirageGaogamon BM
248
+ Ravemon BM
249
+ Rosemon BM
@@ -0,0 +1,18 @@
1
+ lib = File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+
4
+ Gem::Specification.new do |spec|
5
+ spec.name = 'digimon_sleuth'
6
+ spec.version = '0.0.2'
7
+ spec.date = '2016-05-21'
8
+ spec.summary = "Digimon Cyber Sleuth!"
9
+ spec.description = "A simple gem"
10
+ spec.authors = ["Roland Rifandi Utama"]
11
+ spec.email = 'roland_hawk@yahoo.com'
12
+ spec.required_ruby_version = ">= 2.3.0"
13
+
14
+ spec.files = `git ls-files -z`.split("\x0")
15
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
16
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
17
+ spec.require_paths = ["lib"]
18
+ end
@@ -0,0 +1,31 @@
1
+ require 'digimon_sleuth/digimon'
2
+ require 'digimon_sleuth/errors'
3
+ require 'digimon_sleuth/path_searcher'
4
+
5
+ module DigimonSleuth
6
+ counter = 1
7
+ file = File.new(File.expand_path('../../dat/digivolve.dat', __FILE__), 'r')
8
+ divolve = {}
9
+ while (line = file.gets&.strip)
10
+ name, digivolve = line.split(" -> ")
11
+ digivolve = (digivolve || "").split(", ")
12
+ count = digivolve.count
13
+ divolve[name] = digivolve
14
+ digimon = Digimon.new(name)
15
+ Digimon.register(digimon)
16
+ counter += 1
17
+ end
18
+ file.close
19
+
20
+ Digimon.all.each do |digimon|
21
+ divolve[digimon.name].each do |d|
22
+ digi = Digimon.find(d.strip)
23
+ digimon.add_digivolve(digi)
24
+ digi.add_dedigivolve(digimon)
25
+ end
26
+ end
27
+
28
+ def self.search_path(*args)
29
+ PathSearcher.execute(*args)
30
+ end
31
+ end
@@ -0,0 +1,39 @@
1
+ module DigimonSleuth
2
+ class Digimon
3
+ attr_reader :name, :digivolve, :dedigivolve
4
+
5
+ @digimon = Hash.new
6
+
7
+ def self.find(name)
8
+ digimon = @digimon[name.downcase]
9
+ raise DigimonNotFoundError, "There is no digimon with name #{name}" unless digimon
10
+ digimon
11
+ end
12
+
13
+ def self.all
14
+ return @digimon.values
15
+ end
16
+
17
+ def self.register(digimon)
18
+ @digimon[digimon.name.downcase] = digimon
19
+ end
20
+
21
+ def initialize(name)
22
+ @name = name
23
+ @digivolve = Array.new
24
+ @dedigivolve = Array.new
25
+ end
26
+
27
+ def add_digivolve(digimon)
28
+ @digivolve << digimon
29
+ end
30
+
31
+ def add_dedigivolve(digimon)
32
+ @dedigivolve << digimon
33
+ end
34
+
35
+ def inspect
36
+ "#{name}"
37
+ end
38
+ end
39
+ end