1use scarlet_queen_core::pokemon_type::PokemonTypeTrait;
2
3use crate::pokemon_type::FitnessPokemonType;
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq)]
7pub enum TypeEffectiveness {
8 SuperEffective,
10 Normal,
12 NotVeryEffective,
14 NoEffect,
16}
17
18impl TypeEffectiveness {
19 const EFFECTIVE_ARRAY: [[TypeEffectiveness; 19]; 19] = [
21 [
23 TypeEffectiveness::Normal,
24 TypeEffectiveness::Normal,
25 TypeEffectiveness::Normal,
26 TypeEffectiveness::Normal,
27 TypeEffectiveness::Normal,
28 TypeEffectiveness::Normal,
29 TypeEffectiveness::Normal,
30 TypeEffectiveness::Normal,
31 TypeEffectiveness::Normal,
32 TypeEffectiveness::Normal,
33 TypeEffectiveness::Normal,
34 TypeEffectiveness::Normal,
35 TypeEffectiveness::Normal,
36 TypeEffectiveness::Normal,
37 TypeEffectiveness::Normal,
38 TypeEffectiveness::Normal,
39 TypeEffectiveness::Normal,
40 TypeEffectiveness::Normal,
41 TypeEffectiveness::Normal,
42 ],
43 [
45 TypeEffectiveness::Normal,
46 TypeEffectiveness::Normal,
47 TypeEffectiveness::Normal,
48 TypeEffectiveness::Normal,
49 TypeEffectiveness::Normal,
50 TypeEffectiveness::Normal,
51 TypeEffectiveness::Normal,
52 TypeEffectiveness::Normal,
53 TypeEffectiveness::Normal,
54 TypeEffectiveness::Normal,
55 TypeEffectiveness::Normal,
56 TypeEffectiveness::Normal,
57 TypeEffectiveness::Normal,
58 TypeEffectiveness::NotVeryEffective,
59 TypeEffectiveness::NoEffect,
60 TypeEffectiveness::Normal,
61 TypeEffectiveness::Normal,
62 TypeEffectiveness::NotVeryEffective,
63 TypeEffectiveness::Normal,
64 ],
65 [
67 TypeEffectiveness::Normal,
68 TypeEffectiveness::Normal,
69 TypeEffectiveness::NotVeryEffective,
70 TypeEffectiveness::NotVeryEffective,
71 TypeEffectiveness::Normal,
72 TypeEffectiveness::SuperEffective,
73 TypeEffectiveness::SuperEffective,
74 TypeEffectiveness::Normal,
75 TypeEffectiveness::Normal,
76 TypeEffectiveness::Normal,
77 TypeEffectiveness::Normal,
78 TypeEffectiveness::Normal,
79 TypeEffectiveness::SuperEffective,
80 TypeEffectiveness::NotVeryEffective,
81 TypeEffectiveness::Normal,
82 TypeEffectiveness::NotVeryEffective,
83 TypeEffectiveness::Normal,
84 TypeEffectiveness::SuperEffective,
85 TypeEffectiveness::Normal,
86 ],
87 [
89 TypeEffectiveness::Normal,
90 TypeEffectiveness::Normal,
91 TypeEffectiveness::SuperEffective,
92 TypeEffectiveness::NotVeryEffective,
93 TypeEffectiveness::Normal,
94 TypeEffectiveness::NotVeryEffective,
95 TypeEffectiveness::Normal,
96 TypeEffectiveness::Normal,
97 TypeEffectiveness::Normal,
98 TypeEffectiveness::SuperEffective,
99 TypeEffectiveness::Normal,
100 TypeEffectiveness::Normal,
101 TypeEffectiveness::Normal,
102 TypeEffectiveness::SuperEffective,
103 TypeEffectiveness::Normal,
104 TypeEffectiveness::NotVeryEffective,
105 TypeEffectiveness::Normal,
106 TypeEffectiveness::Normal,
107 TypeEffectiveness::Normal,
108 ],
109 [
111 TypeEffectiveness::Normal,
112 TypeEffectiveness::Normal,
113 TypeEffectiveness::Normal,
114 TypeEffectiveness::SuperEffective,
115 TypeEffectiveness::NotVeryEffective,
116 TypeEffectiveness::NotVeryEffective,
117 TypeEffectiveness::Normal,
118 TypeEffectiveness::Normal,
119 TypeEffectiveness::Normal,
120 TypeEffectiveness::NoEffect,
121 TypeEffectiveness::SuperEffective,
122 TypeEffectiveness::Normal,
123 TypeEffectiveness::Normal,
124 TypeEffectiveness::Normal,
125 TypeEffectiveness::Normal,
126 TypeEffectiveness::NotVeryEffective,
127 TypeEffectiveness::Normal,
128 TypeEffectiveness::Normal,
129 TypeEffectiveness::Normal,
130 ],
131 [
133 TypeEffectiveness::Normal,
134 TypeEffectiveness::Normal,
135 TypeEffectiveness::NotVeryEffective,
136 TypeEffectiveness::SuperEffective,
137 TypeEffectiveness::Normal,
138 TypeEffectiveness::NotVeryEffective,
139 TypeEffectiveness::Normal,
140 TypeEffectiveness::Normal,
141 TypeEffectiveness::NotVeryEffective,
142 TypeEffectiveness::SuperEffective,
143 TypeEffectiveness::NotVeryEffective,
144 TypeEffectiveness::Normal,
145 TypeEffectiveness::NotVeryEffective,
146 TypeEffectiveness::SuperEffective,
147 TypeEffectiveness::Normal,
148 TypeEffectiveness::NotVeryEffective,
149 TypeEffectiveness::Normal,
150 TypeEffectiveness::NotVeryEffective,
151 TypeEffectiveness::Normal,
152 ],
153 [
155 TypeEffectiveness::Normal,
156 TypeEffectiveness::Normal,
157 TypeEffectiveness::NotVeryEffective,
158 TypeEffectiveness::NotVeryEffective,
159 TypeEffectiveness::Normal,
160 TypeEffectiveness::SuperEffective,
161 TypeEffectiveness::NotVeryEffective,
162 TypeEffectiveness::Normal,
163 TypeEffectiveness::Normal,
164 TypeEffectiveness::SuperEffective,
165 TypeEffectiveness::SuperEffective,
166 TypeEffectiveness::Normal,
167 TypeEffectiveness::Normal,
168 TypeEffectiveness::Normal,
169 TypeEffectiveness::Normal,
170 TypeEffectiveness::SuperEffective,
171 TypeEffectiveness::Normal,
172 TypeEffectiveness::NotVeryEffective,
173 TypeEffectiveness::Normal,
174 ],
175 [
177 TypeEffectiveness::Normal,
178 TypeEffectiveness::SuperEffective,
179 TypeEffectiveness::Normal,
180 TypeEffectiveness::Normal,
181 TypeEffectiveness::Normal,
182 TypeEffectiveness::Normal,
183 TypeEffectiveness::SuperEffective,
184 TypeEffectiveness::Normal,
185 TypeEffectiveness::NotVeryEffective,
186 TypeEffectiveness::Normal,
187 TypeEffectiveness::NotVeryEffective,
188 TypeEffectiveness::NotVeryEffective,
189 TypeEffectiveness::NotVeryEffective,
190 TypeEffectiveness::SuperEffective,
191 TypeEffectiveness::NoEffect,
192 TypeEffectiveness::Normal,
193 TypeEffectiveness::SuperEffective,
194 TypeEffectiveness::SuperEffective,
195 TypeEffectiveness::NotVeryEffective,
196 ],
197 [
199 TypeEffectiveness::Normal,
200 TypeEffectiveness::Normal,
201 TypeEffectiveness::Normal,
202 TypeEffectiveness::Normal,
203 TypeEffectiveness::Normal,
204 TypeEffectiveness::SuperEffective,
205 TypeEffectiveness::Normal,
206 TypeEffectiveness::Normal,
207 TypeEffectiveness::NotVeryEffective,
208 TypeEffectiveness::NotVeryEffective,
209 TypeEffectiveness::Normal,
210 TypeEffectiveness::Normal,
211 TypeEffectiveness::Normal,
212 TypeEffectiveness::NotVeryEffective,
213 TypeEffectiveness::NotVeryEffective,
214 TypeEffectiveness::Normal,
215 TypeEffectiveness::Normal,
216 TypeEffectiveness::NoEffect,
217 TypeEffectiveness::SuperEffective,
218 ],
219 [
221 TypeEffectiveness::Normal,
222 TypeEffectiveness::Normal,
223 TypeEffectiveness::SuperEffective,
224 TypeEffectiveness::Normal,
225 TypeEffectiveness::SuperEffective,
226 TypeEffectiveness::NotVeryEffective,
227 TypeEffectiveness::Normal,
228 TypeEffectiveness::Normal,
229 TypeEffectiveness::SuperEffective,
230 TypeEffectiveness::Normal,
231 TypeEffectiveness::NoEffect,
232 TypeEffectiveness::Normal,
233 TypeEffectiveness::NotVeryEffective,
234 TypeEffectiveness::SuperEffective,
235 TypeEffectiveness::Normal,
236 TypeEffectiveness::Normal,
237 TypeEffectiveness::Normal,
238 TypeEffectiveness::SuperEffective,
239 TypeEffectiveness::Normal,
240 ],
241 [
243 TypeEffectiveness::Normal,
244 TypeEffectiveness::Normal,
245 TypeEffectiveness::Normal,
246 TypeEffectiveness::Normal,
247 TypeEffectiveness::NotVeryEffective,
248 TypeEffectiveness::SuperEffective,
249 TypeEffectiveness::Normal,
250 TypeEffectiveness::SuperEffective,
251 TypeEffectiveness::Normal,
252 TypeEffectiveness::Normal,
253 TypeEffectiveness::Normal,
254 TypeEffectiveness::Normal,
255 TypeEffectiveness::SuperEffective,
256 TypeEffectiveness::NotVeryEffective,
257 TypeEffectiveness::Normal,
258 TypeEffectiveness::Normal,
259 TypeEffectiveness::Normal,
260 TypeEffectiveness::NotVeryEffective,
261 TypeEffectiveness::Normal,
262 ],
263 [
265 TypeEffectiveness::Normal,
266 TypeEffectiveness::Normal,
267 TypeEffectiveness::Normal,
268 TypeEffectiveness::Normal,
269 TypeEffectiveness::Normal,
270 TypeEffectiveness::Normal,
271 TypeEffectiveness::Normal,
272 TypeEffectiveness::SuperEffective,
273 TypeEffectiveness::SuperEffective,
274 TypeEffectiveness::Normal,
275 TypeEffectiveness::Normal,
276 TypeEffectiveness::NotVeryEffective,
277 TypeEffectiveness::Normal,
278 TypeEffectiveness::Normal,
279 TypeEffectiveness::Normal,
280 TypeEffectiveness::Normal,
281 TypeEffectiveness::NoEffect,
282 TypeEffectiveness::NotVeryEffective,
283 TypeEffectiveness::Normal,
284 ],
285 [
287 TypeEffectiveness::Normal,
288 TypeEffectiveness::Normal,
289 TypeEffectiveness::NotVeryEffective,
290 TypeEffectiveness::Normal,
291 TypeEffectiveness::Normal,
292 TypeEffectiveness::SuperEffective,
293 TypeEffectiveness::Normal,
294 TypeEffectiveness::NotVeryEffective,
295 TypeEffectiveness::NotVeryEffective,
296 TypeEffectiveness::Normal,
297 TypeEffectiveness::NotVeryEffective,
298 TypeEffectiveness::SuperEffective,
299 TypeEffectiveness::Normal,
300 TypeEffectiveness::Normal,
301 TypeEffectiveness::NotVeryEffective,
302 TypeEffectiveness::Normal,
303 TypeEffectiveness::SuperEffective,
304 TypeEffectiveness::NotVeryEffective,
305 TypeEffectiveness::NotVeryEffective,
306 ],
307 [
309 TypeEffectiveness::Normal,
310 TypeEffectiveness::Normal,
311 TypeEffectiveness::SuperEffective,
312 TypeEffectiveness::Normal,
313 TypeEffectiveness::Normal,
314 TypeEffectiveness::Normal,
315 TypeEffectiveness::SuperEffective,
316 TypeEffectiveness::NotVeryEffective,
317 TypeEffectiveness::Normal,
318 TypeEffectiveness::NotVeryEffective,
319 TypeEffectiveness::SuperEffective,
320 TypeEffectiveness::Normal,
321 TypeEffectiveness::SuperEffective,
322 TypeEffectiveness::Normal,
323 TypeEffectiveness::Normal,
324 TypeEffectiveness::Normal,
325 TypeEffectiveness::Normal,
326 TypeEffectiveness::NotVeryEffective,
327 TypeEffectiveness::Normal,
328 ],
329 [
331 TypeEffectiveness::Normal,
332 TypeEffectiveness::NoEffect,
333 TypeEffectiveness::Normal,
334 TypeEffectiveness::Normal,
335 TypeEffectiveness::Normal,
336 TypeEffectiveness::Normal,
337 TypeEffectiveness::Normal,
338 TypeEffectiveness::Normal,
339 TypeEffectiveness::Normal,
340 TypeEffectiveness::Normal,
341 TypeEffectiveness::Normal,
342 TypeEffectiveness::SuperEffective,
343 TypeEffectiveness::Normal,
344 TypeEffectiveness::Normal,
345 TypeEffectiveness::SuperEffective,
346 TypeEffectiveness::Normal,
347 TypeEffectiveness::NotVeryEffective,
348 TypeEffectiveness::Normal,
349 TypeEffectiveness::Normal,
350 ],
351 [
353 TypeEffectiveness::Normal,
354 TypeEffectiveness::Normal,
355 TypeEffectiveness::Normal,
356 TypeEffectiveness::Normal,
357 TypeEffectiveness::Normal,
358 TypeEffectiveness::Normal,
359 TypeEffectiveness::Normal,
360 TypeEffectiveness::Normal,
361 TypeEffectiveness::Normal,
362 TypeEffectiveness::Normal,
363 TypeEffectiveness::Normal,
364 TypeEffectiveness::Normal,
365 TypeEffectiveness::Normal,
366 TypeEffectiveness::Normal,
367 TypeEffectiveness::Normal,
368 TypeEffectiveness::SuperEffective,
369 TypeEffectiveness::Normal,
370 TypeEffectiveness::NotVeryEffective,
371 TypeEffectiveness::NoEffect,
372 ],
373 [
375 TypeEffectiveness::Normal,
376 TypeEffectiveness::Normal,
377 TypeEffectiveness::Normal,
378 TypeEffectiveness::Normal,
379 TypeEffectiveness::Normal,
380 TypeEffectiveness::Normal,
381 TypeEffectiveness::Normal,
382 TypeEffectiveness::NotVeryEffective,
383 TypeEffectiveness::Normal,
384 TypeEffectiveness::Normal,
385 TypeEffectiveness::Normal,
386 TypeEffectiveness::SuperEffective,
387 TypeEffectiveness::Normal,
388 TypeEffectiveness::Normal,
389 TypeEffectiveness::SuperEffective,
390 TypeEffectiveness::Normal,
391 TypeEffectiveness::NotVeryEffective,
392 TypeEffectiveness::Normal,
393 TypeEffectiveness::NotVeryEffective,
394 ],
395 [
397 TypeEffectiveness::Normal,
398 TypeEffectiveness::Normal,
399 TypeEffectiveness::NotVeryEffective,
400 TypeEffectiveness::NotVeryEffective,
401 TypeEffectiveness::NotVeryEffective,
402 TypeEffectiveness::Normal,
403 TypeEffectiveness::SuperEffective,
404 TypeEffectiveness::Normal,
405 TypeEffectiveness::Normal,
406 TypeEffectiveness::Normal,
407 TypeEffectiveness::Normal,
408 TypeEffectiveness::Normal,
409 TypeEffectiveness::Normal,
410 TypeEffectiveness::SuperEffective,
411 TypeEffectiveness::Normal,
412 TypeEffectiveness::Normal,
413 TypeEffectiveness::Normal,
414 TypeEffectiveness::NotVeryEffective,
415 TypeEffectiveness::SuperEffective,
416 ],
417 [
419 TypeEffectiveness::Normal,
420 TypeEffectiveness::Normal,
421 TypeEffectiveness::NotVeryEffective,
422 TypeEffectiveness::Normal,
423 TypeEffectiveness::Normal,
424 TypeEffectiveness::Normal,
425 TypeEffectiveness::Normal,
426 TypeEffectiveness::SuperEffective,
427 TypeEffectiveness::NotVeryEffective,
428 TypeEffectiveness::Normal,
429 TypeEffectiveness::Normal,
430 TypeEffectiveness::Normal,
431 TypeEffectiveness::Normal,
432 TypeEffectiveness::Normal,
433 TypeEffectiveness::Normal,
434 TypeEffectiveness::SuperEffective,
435 TypeEffectiveness::SuperEffective,
436 TypeEffectiveness::NotVeryEffective,
437 TypeEffectiveness::Normal,
438 ],
439 ];
440
441 pub fn from_effective_array<P>(
443 attack: &FitnessPokemonType<P>,
444 defense: &FitnessPokemonType<P>,
445 ) -> TypeEffectiveness
446 where
447 P: PokemonTypeTrait,
448 {
449 TypeEffectiveness::EFFECTIVE_ARRAY[usize::from(attack)][usize::from(defense)]
450 }
451
452 pub fn point(&self) -> usize {
453 match self {
454 TypeEffectiveness::SuperEffective => 3,
455 TypeEffectiveness::Normal => 2,
456 TypeEffectiveness::NotVeryEffective => 1,
457 TypeEffectiveness::NoEffect => 0,
458 }
459 }
460}
461
462#[cfg(test)]
463mod tests {
464 use crate::{effective::TypeEffectiveness, pokemon_type::FitnessPokemonType};
465 use scarlet_queen_core::{
466 each_individual::{EachCrateIndividual, Individual},
467 pokemon_type::PokemonTypeAll,
468 };
469 use std::rc::Rc;
470
471 #[test]
473 fn test_typeeffectiveness_fromeffectivearray() {
474 let testcases = vec![
475 (
476 (
477 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
478 0,
479 PokemonTypeAll::None,
480 ))),
481 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
482 1,
483 PokemonTypeAll::None,
484 ))),
485 ),
486 TypeEffectiveness::Normal,
487 ),
488 (
489 (
490 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
491 0,
492 PokemonTypeAll::None,
493 ))),
494 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
495 1,
496 PokemonTypeAll::Normal,
497 ))),
498 ),
499 TypeEffectiveness::Normal,
500 ),
501 (
502 (
503 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
504 0,
505 PokemonTypeAll::None,
506 ))),
507 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
508 1,
509 PokemonTypeAll::Fire,
510 ))),
511 ),
512 TypeEffectiveness::Normal,
513 ),
514 (
515 (
516 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
517 0,
518 PokemonTypeAll::None,
519 ))),
520 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
521 1,
522 PokemonTypeAll::Water,
523 ))),
524 ),
525 TypeEffectiveness::Normal,
526 ),
527 (
528 (
529 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
530 0,
531 PokemonTypeAll::None,
532 ))),
533 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
534 1,
535 PokemonTypeAll::Electric,
536 ))),
537 ),
538 TypeEffectiveness::Normal,
539 ),
540 (
541 (
542 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
543 0,
544 PokemonTypeAll::None,
545 ))),
546 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
547 1,
548 PokemonTypeAll::Grass,
549 ))),
550 ),
551 TypeEffectiveness::Normal,
552 ),
553 (
554 (
555 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
556 0,
557 PokemonTypeAll::None,
558 ))),
559 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
560 1,
561 PokemonTypeAll::Ice,
562 ))),
563 ),
564 TypeEffectiveness::Normal,
565 ),
566 (
567 (
568 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
569 0,
570 PokemonTypeAll::None,
571 ))),
572 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
573 1,
574 PokemonTypeAll::Fighting,
575 ))),
576 ),
577 TypeEffectiveness::Normal,
578 ),
579 (
580 (
581 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
582 0,
583 PokemonTypeAll::None,
584 ))),
585 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
586 1,
587 PokemonTypeAll::Poison,
588 ))),
589 ),
590 TypeEffectiveness::Normal,
591 ),
592 (
593 (
594 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
595 0,
596 PokemonTypeAll::None,
597 ))),
598 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
599 1,
600 PokemonTypeAll::Ground,
601 ))),
602 ),
603 TypeEffectiveness::Normal,
604 ),
605 (
606 (
607 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
608 0,
609 PokemonTypeAll::None,
610 ))),
611 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
612 1,
613 PokemonTypeAll::Flying,
614 ))),
615 ),
616 TypeEffectiveness::Normal,
617 ),
618 (
619 (
620 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
621 0,
622 PokemonTypeAll::None,
623 ))),
624 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
625 1,
626 PokemonTypeAll::Psychic,
627 ))),
628 ),
629 TypeEffectiveness::Normal,
630 ),
631 (
632 (
633 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
634 0,
635 PokemonTypeAll::None,
636 ))),
637 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
638 1,
639 PokemonTypeAll::Bug,
640 ))),
641 ),
642 TypeEffectiveness::Normal,
643 ),
644 (
645 (
646 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
647 0,
648 PokemonTypeAll::None,
649 ))),
650 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
651 1,
652 PokemonTypeAll::Rock,
653 ))),
654 ),
655 TypeEffectiveness::Normal,
656 ),
657 (
658 (
659 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
660 0,
661 PokemonTypeAll::None,
662 ))),
663 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
664 1,
665 PokemonTypeAll::Ghost,
666 ))),
667 ),
668 TypeEffectiveness::Normal,
669 ),
670 (
671 (
672 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
673 0,
674 PokemonTypeAll::None,
675 ))),
676 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
677 1,
678 PokemonTypeAll::Dragon,
679 ))),
680 ),
681 TypeEffectiveness::Normal,
682 ),
683 (
684 (
685 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
686 0,
687 PokemonTypeAll::None,
688 ))),
689 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
690 1,
691 PokemonTypeAll::Dark,
692 ))),
693 ),
694 TypeEffectiveness::Normal,
695 ),
696 (
697 (
698 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
699 0,
700 PokemonTypeAll::None,
701 ))),
702 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
703 1,
704 PokemonTypeAll::Steel,
705 ))),
706 ),
707 TypeEffectiveness::Normal,
708 ),
709 (
710 (
711 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
712 0,
713 PokemonTypeAll::None,
714 ))),
715 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
716 1,
717 PokemonTypeAll::Fairy,
718 ))),
719 ),
720 TypeEffectiveness::Normal,
721 ),
722 (
723 (
724 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
725 0,
726 PokemonTypeAll::Normal,
727 ))),
728 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
729 1,
730 PokemonTypeAll::None,
731 ))),
732 ),
733 TypeEffectiveness::Normal,
734 ),
735 (
736 (
737 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
738 0,
739 PokemonTypeAll::Normal,
740 ))),
741 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
742 1,
743 PokemonTypeAll::Normal,
744 ))),
745 ),
746 TypeEffectiveness::Normal,
747 ),
748 (
749 (
750 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
751 0,
752 PokemonTypeAll::Normal,
753 ))),
754 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
755 1,
756 PokemonTypeAll::Fire,
757 ))),
758 ),
759 TypeEffectiveness::Normal,
760 ),
761 (
762 (
763 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
764 0,
765 PokemonTypeAll::Normal,
766 ))),
767 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
768 1,
769 PokemonTypeAll::Water,
770 ))),
771 ),
772 TypeEffectiveness::Normal,
773 ),
774 (
775 (
776 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
777 0,
778 PokemonTypeAll::Normal,
779 ))),
780 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
781 1,
782 PokemonTypeAll::Electric,
783 ))),
784 ),
785 TypeEffectiveness::Normal,
786 ),
787 (
788 (
789 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
790 0,
791 PokemonTypeAll::Normal,
792 ))),
793 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
794 1,
795 PokemonTypeAll::Grass,
796 ))),
797 ),
798 TypeEffectiveness::Normal,
799 ),
800 (
801 (
802 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
803 0,
804 PokemonTypeAll::Normal,
805 ))),
806 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
807 1,
808 PokemonTypeAll::Ice,
809 ))),
810 ),
811 TypeEffectiveness::Normal,
812 ),
813 (
814 (
815 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
816 0,
817 PokemonTypeAll::Normal,
818 ))),
819 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
820 1,
821 PokemonTypeAll::Fighting,
822 ))),
823 ),
824 TypeEffectiveness::Normal,
825 ),
826 (
827 (
828 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
829 0,
830 PokemonTypeAll::Normal,
831 ))),
832 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
833 1,
834 PokemonTypeAll::Poison,
835 ))),
836 ),
837 TypeEffectiveness::Normal,
838 ),
839 (
840 (
841 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
842 0,
843 PokemonTypeAll::Normal,
844 ))),
845 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
846 1,
847 PokemonTypeAll::Ground,
848 ))),
849 ),
850 TypeEffectiveness::Normal,
851 ),
852 (
853 (
854 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
855 0,
856 PokemonTypeAll::Normal,
857 ))),
858 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
859 1,
860 PokemonTypeAll::Flying,
861 ))),
862 ),
863 TypeEffectiveness::Normal,
864 ),
865 (
866 (
867 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
868 0,
869 PokemonTypeAll::Normal,
870 ))),
871 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
872 1,
873 PokemonTypeAll::Psychic,
874 ))),
875 ),
876 TypeEffectiveness::Normal,
877 ),
878 (
879 (
880 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
881 0,
882 PokemonTypeAll::Normal,
883 ))),
884 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
885 1,
886 PokemonTypeAll::Bug,
887 ))),
888 ),
889 TypeEffectiveness::Normal,
890 ),
891 (
892 (
893 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
894 0,
895 PokemonTypeAll::Normal,
896 ))),
897 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
898 1,
899 PokemonTypeAll::Rock,
900 ))),
901 ),
902 TypeEffectiveness::NotVeryEffective,
903 ),
904 (
905 (
906 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
907 0,
908 PokemonTypeAll::Normal,
909 ))),
910 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
911 1,
912 PokemonTypeAll::Ghost,
913 ))),
914 ),
915 TypeEffectiveness::NoEffect,
916 ),
917 (
918 (
919 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
920 0,
921 PokemonTypeAll::Normal,
922 ))),
923 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
924 1,
925 PokemonTypeAll::Dragon,
926 ))),
927 ),
928 TypeEffectiveness::Normal,
929 ),
930 (
931 (
932 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
933 0,
934 PokemonTypeAll::Normal,
935 ))),
936 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
937 1,
938 PokemonTypeAll::Dark,
939 ))),
940 ),
941 TypeEffectiveness::Normal,
942 ),
943 (
944 (
945 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
946 0,
947 PokemonTypeAll::Normal,
948 ))),
949 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
950 1,
951 PokemonTypeAll::Steel,
952 ))),
953 ),
954 TypeEffectiveness::NotVeryEffective,
955 ),
956 (
957 (
958 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
959 0,
960 PokemonTypeAll::Normal,
961 ))),
962 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
963 1,
964 PokemonTypeAll::Fairy,
965 ))),
966 ),
967 TypeEffectiveness::Normal,
968 ),
969 (
970 (
971 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
972 0,
973 PokemonTypeAll::Fire,
974 ))),
975 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
976 1,
977 PokemonTypeAll::None,
978 ))),
979 ),
980 TypeEffectiveness::Normal,
981 ),
982 (
983 (
984 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
985 0,
986 PokemonTypeAll::Fire,
987 ))),
988 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
989 1,
990 PokemonTypeAll::Normal,
991 ))),
992 ),
993 TypeEffectiveness::Normal,
994 ),
995 (
996 (
997 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
998 0,
999 PokemonTypeAll::Fire,
1000 ))),
1001 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1002 1,
1003 PokemonTypeAll::Fire,
1004 ))),
1005 ),
1006 TypeEffectiveness::NotVeryEffective,
1007 ),
1008 (
1009 (
1010 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1011 0,
1012 PokemonTypeAll::Fire,
1013 ))),
1014 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1015 1,
1016 PokemonTypeAll::Water,
1017 ))),
1018 ),
1019 TypeEffectiveness::NotVeryEffective,
1020 ),
1021 (
1022 (
1023 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1024 0,
1025 PokemonTypeAll::Fire,
1026 ))),
1027 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1028 1,
1029 PokemonTypeAll::Electric,
1030 ))),
1031 ),
1032 TypeEffectiveness::Normal,
1033 ),
1034 (
1035 (
1036 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1037 0,
1038 PokemonTypeAll::Fire,
1039 ))),
1040 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1041 1,
1042 PokemonTypeAll::Grass,
1043 ))),
1044 ),
1045 TypeEffectiveness::SuperEffective,
1046 ),
1047 (
1048 (
1049 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1050 0,
1051 PokemonTypeAll::Fire,
1052 ))),
1053 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1054 1,
1055 PokemonTypeAll::Ice,
1056 ))),
1057 ),
1058 TypeEffectiveness::SuperEffective,
1059 ),
1060 (
1061 (
1062 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1063 0,
1064 PokemonTypeAll::Fire,
1065 ))),
1066 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1067 1,
1068 PokemonTypeAll::Fighting,
1069 ))),
1070 ),
1071 TypeEffectiveness::Normal,
1072 ),
1073 (
1074 (
1075 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1076 0,
1077 PokemonTypeAll::Fire,
1078 ))),
1079 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1080 1,
1081 PokemonTypeAll::Poison,
1082 ))),
1083 ),
1084 TypeEffectiveness::Normal,
1085 ),
1086 (
1087 (
1088 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1089 0,
1090 PokemonTypeAll::Fire,
1091 ))),
1092 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1093 1,
1094 PokemonTypeAll::Ground,
1095 ))),
1096 ),
1097 TypeEffectiveness::Normal,
1098 ),
1099 (
1100 (
1101 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1102 0,
1103 PokemonTypeAll::Fire,
1104 ))),
1105 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1106 1,
1107 PokemonTypeAll::Flying,
1108 ))),
1109 ),
1110 TypeEffectiveness::Normal,
1111 ),
1112 (
1113 (
1114 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1115 0,
1116 PokemonTypeAll::Fire,
1117 ))),
1118 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1119 1,
1120 PokemonTypeAll::Psychic,
1121 ))),
1122 ),
1123 TypeEffectiveness::Normal,
1124 ),
1125 (
1126 (
1127 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1128 0,
1129 PokemonTypeAll::Fire,
1130 ))),
1131 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1132 1,
1133 PokemonTypeAll::Bug,
1134 ))),
1135 ),
1136 TypeEffectiveness::SuperEffective,
1137 ),
1138 (
1139 (
1140 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1141 0,
1142 PokemonTypeAll::Fire,
1143 ))),
1144 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1145 1,
1146 PokemonTypeAll::Rock,
1147 ))),
1148 ),
1149 TypeEffectiveness::NotVeryEffective,
1150 ),
1151 (
1152 (
1153 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1154 0,
1155 PokemonTypeAll::Fire,
1156 ))),
1157 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1158 1,
1159 PokemonTypeAll::Ghost,
1160 ))),
1161 ),
1162 TypeEffectiveness::Normal,
1163 ),
1164 (
1165 (
1166 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1167 0,
1168 PokemonTypeAll::Fire,
1169 ))),
1170 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1171 1,
1172 PokemonTypeAll::Dragon,
1173 ))),
1174 ),
1175 TypeEffectiveness::NotVeryEffective,
1176 ),
1177 (
1178 (
1179 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1180 0,
1181 PokemonTypeAll::Fire,
1182 ))),
1183 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1184 1,
1185 PokemonTypeAll::Dark,
1186 ))),
1187 ),
1188 TypeEffectiveness::Normal,
1189 ),
1190 (
1191 (
1192 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1193 0,
1194 PokemonTypeAll::Fire,
1195 ))),
1196 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1197 1,
1198 PokemonTypeAll::Steel,
1199 ))),
1200 ),
1201 TypeEffectiveness::SuperEffective,
1202 ),
1203 (
1204 (
1205 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1206 0,
1207 PokemonTypeAll::Fire,
1208 ))),
1209 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1210 1,
1211 PokemonTypeAll::Fairy,
1212 ))),
1213 ),
1214 TypeEffectiveness::Normal,
1215 ),
1216 (
1217 (
1218 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1219 0,
1220 PokemonTypeAll::Water,
1221 ))),
1222 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1223 1,
1224 PokemonTypeAll::None,
1225 ))),
1226 ),
1227 TypeEffectiveness::Normal,
1228 ),
1229 (
1230 (
1231 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1232 0,
1233 PokemonTypeAll::Water,
1234 ))),
1235 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1236 1,
1237 PokemonTypeAll::Normal,
1238 ))),
1239 ),
1240 TypeEffectiveness::Normal,
1241 ),
1242 (
1243 (
1244 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1245 0,
1246 PokemonTypeAll::Water,
1247 ))),
1248 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1249 1,
1250 PokemonTypeAll::Fire,
1251 ))),
1252 ),
1253 TypeEffectiveness::SuperEffective,
1254 ),
1255 (
1256 (
1257 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1258 0,
1259 PokemonTypeAll::Water,
1260 ))),
1261 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1262 1,
1263 PokemonTypeAll::Water,
1264 ))),
1265 ),
1266 TypeEffectiveness::NotVeryEffective,
1267 ),
1268 (
1269 (
1270 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1271 0,
1272 PokemonTypeAll::Water,
1273 ))),
1274 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1275 1,
1276 PokemonTypeAll::Electric,
1277 ))),
1278 ),
1279 TypeEffectiveness::Normal,
1280 ),
1281 (
1282 (
1283 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1284 0,
1285 PokemonTypeAll::Water,
1286 ))),
1287 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1288 1,
1289 PokemonTypeAll::Grass,
1290 ))),
1291 ),
1292 TypeEffectiveness::NotVeryEffective,
1293 ),
1294 (
1295 (
1296 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1297 0,
1298 PokemonTypeAll::Water,
1299 ))),
1300 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1301 1,
1302 PokemonTypeAll::Ice,
1303 ))),
1304 ),
1305 TypeEffectiveness::Normal,
1306 ),
1307 (
1308 (
1309 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1310 0,
1311 PokemonTypeAll::Water,
1312 ))),
1313 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1314 1,
1315 PokemonTypeAll::Fighting,
1316 ))),
1317 ),
1318 TypeEffectiveness::Normal,
1319 ),
1320 (
1321 (
1322 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1323 0,
1324 PokemonTypeAll::Water,
1325 ))),
1326 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1327 1,
1328 PokemonTypeAll::Poison,
1329 ))),
1330 ),
1331 TypeEffectiveness::Normal,
1332 ),
1333 (
1334 (
1335 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1336 0,
1337 PokemonTypeAll::Water,
1338 ))),
1339 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1340 1,
1341 PokemonTypeAll::Ground,
1342 ))),
1343 ),
1344 TypeEffectiveness::SuperEffective,
1345 ),
1346 (
1347 (
1348 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1349 0,
1350 PokemonTypeAll::Water,
1351 ))),
1352 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1353 1,
1354 PokemonTypeAll::Flying,
1355 ))),
1356 ),
1357 TypeEffectiveness::Normal,
1358 ),
1359 (
1360 (
1361 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1362 0,
1363 PokemonTypeAll::Water,
1364 ))),
1365 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1366 1,
1367 PokemonTypeAll::Psychic,
1368 ))),
1369 ),
1370 TypeEffectiveness::Normal,
1371 ),
1372 (
1373 (
1374 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1375 0,
1376 PokemonTypeAll::Water,
1377 ))),
1378 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1379 1,
1380 PokemonTypeAll::Bug,
1381 ))),
1382 ),
1383 TypeEffectiveness::Normal,
1384 ),
1385 (
1386 (
1387 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1388 0,
1389 PokemonTypeAll::Water,
1390 ))),
1391 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1392 1,
1393 PokemonTypeAll::Rock,
1394 ))),
1395 ),
1396 TypeEffectiveness::SuperEffective,
1397 ),
1398 (
1399 (
1400 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1401 0,
1402 PokemonTypeAll::Water,
1403 ))),
1404 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1405 1,
1406 PokemonTypeAll::Ghost,
1407 ))),
1408 ),
1409 TypeEffectiveness::Normal,
1410 ),
1411 (
1412 (
1413 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1414 0,
1415 PokemonTypeAll::Water,
1416 ))),
1417 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1418 1,
1419 PokemonTypeAll::Dragon,
1420 ))),
1421 ),
1422 TypeEffectiveness::NotVeryEffective,
1423 ),
1424 (
1425 (
1426 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1427 0,
1428 PokemonTypeAll::Water,
1429 ))),
1430 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1431 1,
1432 PokemonTypeAll::Dark,
1433 ))),
1434 ),
1435 TypeEffectiveness::Normal,
1436 ),
1437 (
1438 (
1439 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1440 0,
1441 PokemonTypeAll::Water,
1442 ))),
1443 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1444 1,
1445 PokemonTypeAll::Steel,
1446 ))),
1447 ),
1448 TypeEffectiveness::Normal,
1449 ),
1450 (
1451 (
1452 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1453 0,
1454 PokemonTypeAll::Water,
1455 ))),
1456 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1457 1,
1458 PokemonTypeAll::Fairy,
1459 ))),
1460 ),
1461 TypeEffectiveness::Normal,
1462 ),
1463 (
1464 (
1465 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1466 0,
1467 PokemonTypeAll::Electric,
1468 ))),
1469 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1470 1,
1471 PokemonTypeAll::None,
1472 ))),
1473 ),
1474 TypeEffectiveness::Normal,
1475 ),
1476 (
1477 (
1478 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1479 0,
1480 PokemonTypeAll::Electric,
1481 ))),
1482 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1483 1,
1484 PokemonTypeAll::Normal,
1485 ))),
1486 ),
1487 TypeEffectiveness::Normal,
1488 ),
1489 (
1490 (
1491 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1492 0,
1493 PokemonTypeAll::Electric,
1494 ))),
1495 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1496 1,
1497 PokemonTypeAll::Fire,
1498 ))),
1499 ),
1500 TypeEffectiveness::Normal,
1501 ),
1502 (
1503 (
1504 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1505 0,
1506 PokemonTypeAll::Electric,
1507 ))),
1508 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1509 1,
1510 PokemonTypeAll::Water,
1511 ))),
1512 ),
1513 TypeEffectiveness::SuperEffective,
1514 ),
1515 (
1516 (
1517 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1518 0,
1519 PokemonTypeAll::Electric,
1520 ))),
1521 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1522 1,
1523 PokemonTypeAll::Electric,
1524 ))),
1525 ),
1526 TypeEffectiveness::NotVeryEffective,
1527 ),
1528 (
1529 (
1530 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1531 0,
1532 PokemonTypeAll::Electric,
1533 ))),
1534 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1535 1,
1536 PokemonTypeAll::Grass,
1537 ))),
1538 ),
1539 TypeEffectiveness::NotVeryEffective,
1540 ),
1541 (
1542 (
1543 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1544 0,
1545 PokemonTypeAll::Electric,
1546 ))),
1547 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1548 1,
1549 PokemonTypeAll::Ice,
1550 ))),
1551 ),
1552 TypeEffectiveness::Normal,
1553 ),
1554 (
1555 (
1556 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1557 0,
1558 PokemonTypeAll::Electric,
1559 ))),
1560 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1561 1,
1562 PokemonTypeAll::Fighting,
1563 ))),
1564 ),
1565 TypeEffectiveness::Normal,
1566 ),
1567 (
1568 (
1569 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1570 0,
1571 PokemonTypeAll::Electric,
1572 ))),
1573 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1574 1,
1575 PokemonTypeAll::Poison,
1576 ))),
1577 ),
1578 TypeEffectiveness::Normal,
1579 ),
1580 (
1581 (
1582 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1583 0,
1584 PokemonTypeAll::Electric,
1585 ))),
1586 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1587 1,
1588 PokemonTypeAll::Ground,
1589 ))),
1590 ),
1591 TypeEffectiveness::NoEffect,
1592 ),
1593 (
1594 (
1595 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1596 0,
1597 PokemonTypeAll::Electric,
1598 ))),
1599 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1600 1,
1601 PokemonTypeAll::Flying,
1602 ))),
1603 ),
1604 TypeEffectiveness::SuperEffective,
1605 ),
1606 (
1607 (
1608 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1609 0,
1610 PokemonTypeAll::Electric,
1611 ))),
1612 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1613 1,
1614 PokemonTypeAll::Psychic,
1615 ))),
1616 ),
1617 TypeEffectiveness::Normal,
1618 ),
1619 (
1620 (
1621 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1622 0,
1623 PokemonTypeAll::Electric,
1624 ))),
1625 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1626 1,
1627 PokemonTypeAll::Bug,
1628 ))),
1629 ),
1630 TypeEffectiveness::Normal,
1631 ),
1632 (
1633 (
1634 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1635 0,
1636 PokemonTypeAll::Electric,
1637 ))),
1638 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1639 1,
1640 PokemonTypeAll::Rock,
1641 ))),
1642 ),
1643 TypeEffectiveness::Normal,
1644 ),
1645 (
1646 (
1647 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1648 0,
1649 PokemonTypeAll::Electric,
1650 ))),
1651 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1652 1,
1653 PokemonTypeAll::Ghost,
1654 ))),
1655 ),
1656 TypeEffectiveness::Normal,
1657 ),
1658 (
1659 (
1660 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1661 0,
1662 PokemonTypeAll::Electric,
1663 ))),
1664 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1665 1,
1666 PokemonTypeAll::Dragon,
1667 ))),
1668 ),
1669 TypeEffectiveness::NotVeryEffective,
1670 ),
1671 (
1672 (
1673 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1674 0,
1675 PokemonTypeAll::Electric,
1676 ))),
1677 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1678 1,
1679 PokemonTypeAll::Dark,
1680 ))),
1681 ),
1682 TypeEffectiveness::Normal,
1683 ),
1684 (
1685 (
1686 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1687 0,
1688 PokemonTypeAll::Electric,
1689 ))),
1690 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1691 1,
1692 PokemonTypeAll::Steel,
1693 ))),
1694 ),
1695 TypeEffectiveness::Normal,
1696 ),
1697 (
1698 (
1699 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1700 0,
1701 PokemonTypeAll::Electric,
1702 ))),
1703 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1704 1,
1705 PokemonTypeAll::Fairy,
1706 ))),
1707 ),
1708 TypeEffectiveness::Normal,
1709 ),
1710 (
1711 (
1712 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1713 0,
1714 PokemonTypeAll::Grass,
1715 ))),
1716 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1717 1,
1718 PokemonTypeAll::None,
1719 ))),
1720 ),
1721 TypeEffectiveness::Normal,
1722 ),
1723 (
1724 (
1725 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1726 0,
1727 PokemonTypeAll::Grass,
1728 ))),
1729 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1730 1,
1731 PokemonTypeAll::Normal,
1732 ))),
1733 ),
1734 TypeEffectiveness::Normal,
1735 ),
1736 (
1737 (
1738 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1739 0,
1740 PokemonTypeAll::Grass,
1741 ))),
1742 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1743 1,
1744 PokemonTypeAll::Fire,
1745 ))),
1746 ),
1747 TypeEffectiveness::NotVeryEffective,
1748 ),
1749 (
1750 (
1751 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1752 0,
1753 PokemonTypeAll::Grass,
1754 ))),
1755 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1756 1,
1757 PokemonTypeAll::Water,
1758 ))),
1759 ),
1760 TypeEffectiveness::SuperEffective,
1761 ),
1762 (
1763 (
1764 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1765 0,
1766 PokemonTypeAll::Grass,
1767 ))),
1768 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1769 1,
1770 PokemonTypeAll::Electric,
1771 ))),
1772 ),
1773 TypeEffectiveness::Normal,
1774 ),
1775 (
1776 (
1777 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1778 0,
1779 PokemonTypeAll::Grass,
1780 ))),
1781 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1782 1,
1783 PokemonTypeAll::Grass,
1784 ))),
1785 ),
1786 TypeEffectiveness::NotVeryEffective,
1787 ),
1788 (
1789 (
1790 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1791 0,
1792 PokemonTypeAll::Grass,
1793 ))),
1794 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1795 1,
1796 PokemonTypeAll::Ice,
1797 ))),
1798 ),
1799 TypeEffectiveness::Normal,
1800 ),
1801 (
1802 (
1803 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1804 0,
1805 PokemonTypeAll::Grass,
1806 ))),
1807 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1808 1,
1809 PokemonTypeAll::Fighting,
1810 ))),
1811 ),
1812 TypeEffectiveness::Normal,
1813 ),
1814 (
1815 (
1816 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1817 0,
1818 PokemonTypeAll::Grass,
1819 ))),
1820 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1821 1,
1822 PokemonTypeAll::Poison,
1823 ))),
1824 ),
1825 TypeEffectiveness::NotVeryEffective,
1826 ),
1827 (
1828 (
1829 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1830 0,
1831 PokemonTypeAll::Grass,
1832 ))),
1833 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1834 1,
1835 PokemonTypeAll::Ground,
1836 ))),
1837 ),
1838 TypeEffectiveness::SuperEffective,
1839 ),
1840 (
1841 (
1842 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1843 0,
1844 PokemonTypeAll::Grass,
1845 ))),
1846 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1847 1,
1848 PokemonTypeAll::Flying,
1849 ))),
1850 ),
1851 TypeEffectiveness::NotVeryEffective,
1852 ),
1853 (
1854 (
1855 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1856 0,
1857 PokemonTypeAll::Grass,
1858 ))),
1859 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1860 1,
1861 PokemonTypeAll::Psychic,
1862 ))),
1863 ),
1864 TypeEffectiveness::Normal,
1865 ),
1866 (
1867 (
1868 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1869 0,
1870 PokemonTypeAll::Grass,
1871 ))),
1872 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1873 1,
1874 PokemonTypeAll::Bug,
1875 ))),
1876 ),
1877 TypeEffectiveness::NotVeryEffective,
1878 ),
1879 (
1880 (
1881 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1882 0,
1883 PokemonTypeAll::Grass,
1884 ))),
1885 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1886 1,
1887 PokemonTypeAll::Rock,
1888 ))),
1889 ),
1890 TypeEffectiveness::SuperEffective,
1891 ),
1892 (
1893 (
1894 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1895 0,
1896 PokemonTypeAll::Grass,
1897 ))),
1898 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1899 1,
1900 PokemonTypeAll::Ghost,
1901 ))),
1902 ),
1903 TypeEffectiveness::Normal,
1904 ),
1905 (
1906 (
1907 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1908 0,
1909 PokemonTypeAll::Grass,
1910 ))),
1911 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1912 1,
1913 PokemonTypeAll::Dragon,
1914 ))),
1915 ),
1916 TypeEffectiveness::NotVeryEffective,
1917 ),
1918 (
1919 (
1920 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1921 0,
1922 PokemonTypeAll::Grass,
1923 ))),
1924 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1925 1,
1926 PokemonTypeAll::Dark,
1927 ))),
1928 ),
1929 TypeEffectiveness::Normal,
1930 ),
1931 (
1932 (
1933 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1934 0,
1935 PokemonTypeAll::Grass,
1936 ))),
1937 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1938 1,
1939 PokemonTypeAll::Steel,
1940 ))),
1941 ),
1942 TypeEffectiveness::NotVeryEffective,
1943 ),
1944 (
1945 (
1946 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1947 0,
1948 PokemonTypeAll::Grass,
1949 ))),
1950 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1951 1,
1952 PokemonTypeAll::Fairy,
1953 ))),
1954 ),
1955 TypeEffectiveness::Normal,
1956 ),
1957 (
1958 (
1959 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1960 0,
1961 PokemonTypeAll::Ice,
1962 ))),
1963 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1964 1,
1965 PokemonTypeAll::None,
1966 ))),
1967 ),
1968 TypeEffectiveness::Normal,
1969 ),
1970 (
1971 (
1972 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1973 0,
1974 PokemonTypeAll::Ice,
1975 ))),
1976 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1977 1,
1978 PokemonTypeAll::Normal,
1979 ))),
1980 ),
1981 TypeEffectiveness::Normal,
1982 ),
1983 (
1984 (
1985 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1986 0,
1987 PokemonTypeAll::Ice,
1988 ))),
1989 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1990 1,
1991 PokemonTypeAll::Fire,
1992 ))),
1993 ),
1994 TypeEffectiveness::NotVeryEffective,
1995 ),
1996 (
1997 (
1998 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
1999 0,
2000 PokemonTypeAll::Ice,
2001 ))),
2002 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2003 1,
2004 PokemonTypeAll::Water,
2005 ))),
2006 ),
2007 TypeEffectiveness::NotVeryEffective,
2008 ),
2009 (
2010 (
2011 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2012 0,
2013 PokemonTypeAll::Ice,
2014 ))),
2015 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2016 1,
2017 PokemonTypeAll::Electric,
2018 ))),
2019 ),
2020 TypeEffectiveness::Normal,
2021 ),
2022 (
2023 (
2024 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2025 0,
2026 PokemonTypeAll::Ice,
2027 ))),
2028 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2029 1,
2030 PokemonTypeAll::Grass,
2031 ))),
2032 ),
2033 TypeEffectiveness::SuperEffective,
2034 ),
2035 (
2036 (
2037 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2038 0,
2039 PokemonTypeAll::Ice,
2040 ))),
2041 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2042 1,
2043 PokemonTypeAll::Ice,
2044 ))),
2045 ),
2046 TypeEffectiveness::NotVeryEffective,
2047 ),
2048 (
2049 (
2050 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2051 0,
2052 PokemonTypeAll::Ice,
2053 ))),
2054 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2055 1,
2056 PokemonTypeAll::Fighting,
2057 ))),
2058 ),
2059 TypeEffectiveness::Normal,
2060 ),
2061 (
2062 (
2063 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2064 0,
2065 PokemonTypeAll::Ice,
2066 ))),
2067 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2068 1,
2069 PokemonTypeAll::Poison,
2070 ))),
2071 ),
2072 TypeEffectiveness::Normal,
2073 ),
2074 (
2075 (
2076 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2077 0,
2078 PokemonTypeAll::Ice,
2079 ))),
2080 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2081 1,
2082 PokemonTypeAll::Ground,
2083 ))),
2084 ),
2085 TypeEffectiveness::SuperEffective,
2086 ),
2087 (
2088 (
2089 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2090 0,
2091 PokemonTypeAll::Ice,
2092 ))),
2093 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2094 1,
2095 PokemonTypeAll::Flying,
2096 ))),
2097 ),
2098 TypeEffectiveness::SuperEffective,
2099 ),
2100 (
2101 (
2102 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2103 0,
2104 PokemonTypeAll::Ice,
2105 ))),
2106 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2107 1,
2108 PokemonTypeAll::Psychic,
2109 ))),
2110 ),
2111 TypeEffectiveness::Normal,
2112 ),
2113 (
2114 (
2115 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2116 0,
2117 PokemonTypeAll::Ice,
2118 ))),
2119 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2120 1,
2121 PokemonTypeAll::Bug,
2122 ))),
2123 ),
2124 TypeEffectiveness::Normal,
2125 ),
2126 (
2127 (
2128 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2129 0,
2130 PokemonTypeAll::Ice,
2131 ))),
2132 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2133 1,
2134 PokemonTypeAll::Rock,
2135 ))),
2136 ),
2137 TypeEffectiveness::Normal,
2138 ),
2139 (
2140 (
2141 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2142 0,
2143 PokemonTypeAll::Ice,
2144 ))),
2145 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2146 1,
2147 PokemonTypeAll::Ghost,
2148 ))),
2149 ),
2150 TypeEffectiveness::Normal,
2151 ),
2152 (
2153 (
2154 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2155 0,
2156 PokemonTypeAll::Ice,
2157 ))),
2158 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2159 1,
2160 PokemonTypeAll::Dragon,
2161 ))),
2162 ),
2163 TypeEffectiveness::SuperEffective,
2164 ),
2165 (
2166 (
2167 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2168 0,
2169 PokemonTypeAll::Ice,
2170 ))),
2171 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2172 1,
2173 PokemonTypeAll::Dark,
2174 ))),
2175 ),
2176 TypeEffectiveness::Normal,
2177 ),
2178 (
2179 (
2180 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2181 0,
2182 PokemonTypeAll::Ice,
2183 ))),
2184 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2185 1,
2186 PokemonTypeAll::Steel,
2187 ))),
2188 ),
2189 TypeEffectiveness::NotVeryEffective,
2190 ),
2191 (
2192 (
2193 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2194 0,
2195 PokemonTypeAll::Ice,
2196 ))),
2197 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2198 1,
2199 PokemonTypeAll::Fairy,
2200 ))),
2201 ),
2202 TypeEffectiveness::Normal,
2203 ),
2204 (
2205 (
2206 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2207 0,
2208 PokemonTypeAll::Fighting,
2209 ))),
2210 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2211 1,
2212 PokemonTypeAll::None,
2213 ))),
2214 ),
2215 TypeEffectiveness::Normal,
2216 ),
2217 (
2218 (
2219 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2220 0,
2221 PokemonTypeAll::Fighting,
2222 ))),
2223 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2224 1,
2225 PokemonTypeAll::Normal,
2226 ))),
2227 ),
2228 TypeEffectiveness::SuperEffective,
2229 ),
2230 (
2231 (
2232 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2233 0,
2234 PokemonTypeAll::Fighting,
2235 ))),
2236 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2237 1,
2238 PokemonTypeAll::Fire,
2239 ))),
2240 ),
2241 TypeEffectiveness::Normal,
2242 ),
2243 (
2244 (
2245 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2246 0,
2247 PokemonTypeAll::Fighting,
2248 ))),
2249 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2250 1,
2251 PokemonTypeAll::Water,
2252 ))),
2253 ),
2254 TypeEffectiveness::Normal,
2255 ),
2256 (
2257 (
2258 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2259 0,
2260 PokemonTypeAll::Fighting,
2261 ))),
2262 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2263 1,
2264 PokemonTypeAll::Electric,
2265 ))),
2266 ),
2267 TypeEffectiveness::Normal,
2268 ),
2269 (
2270 (
2271 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2272 0,
2273 PokemonTypeAll::Fighting,
2274 ))),
2275 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2276 1,
2277 PokemonTypeAll::Grass,
2278 ))),
2279 ),
2280 TypeEffectiveness::Normal,
2281 ),
2282 (
2283 (
2284 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2285 0,
2286 PokemonTypeAll::Fighting,
2287 ))),
2288 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2289 1,
2290 PokemonTypeAll::Ice,
2291 ))),
2292 ),
2293 TypeEffectiveness::SuperEffective,
2294 ),
2295 (
2296 (
2297 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2298 0,
2299 PokemonTypeAll::Fighting,
2300 ))),
2301 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2302 1,
2303 PokemonTypeAll::Fighting,
2304 ))),
2305 ),
2306 TypeEffectiveness::Normal,
2307 ),
2308 (
2309 (
2310 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2311 0,
2312 PokemonTypeAll::Fighting,
2313 ))),
2314 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2315 1,
2316 PokemonTypeAll::Poison,
2317 ))),
2318 ),
2319 TypeEffectiveness::NotVeryEffective,
2320 ),
2321 (
2322 (
2323 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2324 0,
2325 PokemonTypeAll::Fighting,
2326 ))),
2327 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2328 1,
2329 PokemonTypeAll::Ground,
2330 ))),
2331 ),
2332 TypeEffectiveness::Normal,
2333 ),
2334 (
2335 (
2336 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2337 0,
2338 PokemonTypeAll::Fighting,
2339 ))),
2340 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2341 1,
2342 PokemonTypeAll::Flying,
2343 ))),
2344 ),
2345 TypeEffectiveness::NotVeryEffective,
2346 ),
2347 (
2348 (
2349 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2350 0,
2351 PokemonTypeAll::Fighting,
2352 ))),
2353 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2354 1,
2355 PokemonTypeAll::Psychic,
2356 ))),
2357 ),
2358 TypeEffectiveness::NotVeryEffective,
2359 ),
2360 (
2361 (
2362 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2363 0,
2364 PokemonTypeAll::Fighting,
2365 ))),
2366 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2367 1,
2368 PokemonTypeAll::Bug,
2369 ))),
2370 ),
2371 TypeEffectiveness::NotVeryEffective,
2372 ),
2373 (
2374 (
2375 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2376 0,
2377 PokemonTypeAll::Fighting,
2378 ))),
2379 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2380 1,
2381 PokemonTypeAll::Rock,
2382 ))),
2383 ),
2384 TypeEffectiveness::SuperEffective,
2385 ),
2386 (
2387 (
2388 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2389 0,
2390 PokemonTypeAll::Fighting,
2391 ))),
2392 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2393 1,
2394 PokemonTypeAll::Ghost,
2395 ))),
2396 ),
2397 TypeEffectiveness::NoEffect,
2398 ),
2399 (
2400 (
2401 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2402 0,
2403 PokemonTypeAll::Fighting,
2404 ))),
2405 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2406 1,
2407 PokemonTypeAll::Dragon,
2408 ))),
2409 ),
2410 TypeEffectiveness::Normal,
2411 ),
2412 (
2413 (
2414 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2415 0,
2416 PokemonTypeAll::Fighting,
2417 ))),
2418 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2419 1,
2420 PokemonTypeAll::Dark,
2421 ))),
2422 ),
2423 TypeEffectiveness::SuperEffective,
2424 ),
2425 (
2426 (
2427 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2428 0,
2429 PokemonTypeAll::Fighting,
2430 ))),
2431 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2432 1,
2433 PokemonTypeAll::Steel,
2434 ))),
2435 ),
2436 TypeEffectiveness::SuperEffective,
2437 ),
2438 (
2439 (
2440 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2441 0,
2442 PokemonTypeAll::Fighting,
2443 ))),
2444 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2445 1,
2446 PokemonTypeAll::Fairy,
2447 ))),
2448 ),
2449 TypeEffectiveness::NotVeryEffective,
2450 ),
2451 (
2452 (
2453 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2454 0,
2455 PokemonTypeAll::Poison,
2456 ))),
2457 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2458 1,
2459 PokemonTypeAll::None,
2460 ))),
2461 ),
2462 TypeEffectiveness::Normal,
2463 ),
2464 (
2465 (
2466 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2467 0,
2468 PokemonTypeAll::Poison,
2469 ))),
2470 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2471 1,
2472 PokemonTypeAll::Normal,
2473 ))),
2474 ),
2475 TypeEffectiveness::Normal,
2476 ),
2477 (
2478 (
2479 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2480 0,
2481 PokemonTypeAll::Poison,
2482 ))),
2483 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2484 1,
2485 PokemonTypeAll::Fire,
2486 ))),
2487 ),
2488 TypeEffectiveness::Normal,
2489 ),
2490 (
2491 (
2492 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2493 0,
2494 PokemonTypeAll::Poison,
2495 ))),
2496 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2497 1,
2498 PokemonTypeAll::Water,
2499 ))),
2500 ),
2501 TypeEffectiveness::Normal,
2502 ),
2503 (
2504 (
2505 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2506 0,
2507 PokemonTypeAll::Poison,
2508 ))),
2509 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2510 1,
2511 PokemonTypeAll::Electric,
2512 ))),
2513 ),
2514 TypeEffectiveness::Normal,
2515 ),
2516 (
2517 (
2518 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2519 0,
2520 PokemonTypeAll::Poison,
2521 ))),
2522 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2523 1,
2524 PokemonTypeAll::Grass,
2525 ))),
2526 ),
2527 TypeEffectiveness::SuperEffective,
2528 ),
2529 (
2530 (
2531 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2532 0,
2533 PokemonTypeAll::Poison,
2534 ))),
2535 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2536 1,
2537 PokemonTypeAll::Ice,
2538 ))),
2539 ),
2540 TypeEffectiveness::Normal,
2541 ),
2542 (
2543 (
2544 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2545 0,
2546 PokemonTypeAll::Poison,
2547 ))),
2548 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2549 1,
2550 PokemonTypeAll::Fighting,
2551 ))),
2552 ),
2553 TypeEffectiveness::Normal,
2554 ),
2555 (
2556 (
2557 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2558 0,
2559 PokemonTypeAll::Poison,
2560 ))),
2561 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2562 1,
2563 PokemonTypeAll::Poison,
2564 ))),
2565 ),
2566 TypeEffectiveness::NotVeryEffective,
2567 ),
2568 (
2569 (
2570 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2571 0,
2572 PokemonTypeAll::Poison,
2573 ))),
2574 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2575 1,
2576 PokemonTypeAll::Ground,
2577 ))),
2578 ),
2579 TypeEffectiveness::NotVeryEffective,
2580 ),
2581 (
2582 (
2583 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2584 0,
2585 PokemonTypeAll::Poison,
2586 ))),
2587 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2588 1,
2589 PokemonTypeAll::Flying,
2590 ))),
2591 ),
2592 TypeEffectiveness::Normal,
2593 ),
2594 (
2595 (
2596 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2597 0,
2598 PokemonTypeAll::Poison,
2599 ))),
2600 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2601 1,
2602 PokemonTypeAll::Psychic,
2603 ))),
2604 ),
2605 TypeEffectiveness::Normal,
2606 ),
2607 (
2608 (
2609 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2610 0,
2611 PokemonTypeAll::Poison,
2612 ))),
2613 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2614 1,
2615 PokemonTypeAll::Bug,
2616 ))),
2617 ),
2618 TypeEffectiveness::Normal,
2619 ),
2620 (
2621 (
2622 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2623 0,
2624 PokemonTypeAll::Poison,
2625 ))),
2626 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2627 1,
2628 PokemonTypeAll::Rock,
2629 ))),
2630 ),
2631 TypeEffectiveness::NotVeryEffective,
2632 ),
2633 (
2634 (
2635 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2636 0,
2637 PokemonTypeAll::Poison,
2638 ))),
2639 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2640 1,
2641 PokemonTypeAll::Ghost,
2642 ))),
2643 ),
2644 TypeEffectiveness::NotVeryEffective,
2645 ),
2646 (
2647 (
2648 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2649 0,
2650 PokemonTypeAll::Poison,
2651 ))),
2652 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2653 1,
2654 PokemonTypeAll::Dragon,
2655 ))),
2656 ),
2657 TypeEffectiveness::Normal,
2658 ),
2659 (
2660 (
2661 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2662 0,
2663 PokemonTypeAll::Poison,
2664 ))),
2665 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2666 1,
2667 PokemonTypeAll::Dark,
2668 ))),
2669 ),
2670 TypeEffectiveness::Normal,
2671 ),
2672 (
2673 (
2674 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2675 0,
2676 PokemonTypeAll::Poison,
2677 ))),
2678 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2679 1,
2680 PokemonTypeAll::Steel,
2681 ))),
2682 ),
2683 TypeEffectiveness::NoEffect,
2684 ),
2685 (
2686 (
2687 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2688 0,
2689 PokemonTypeAll::Poison,
2690 ))),
2691 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2692 1,
2693 PokemonTypeAll::Fairy,
2694 ))),
2695 ),
2696 TypeEffectiveness::SuperEffective,
2697 ),
2698 (
2699 (
2700 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2701 0,
2702 PokemonTypeAll::Ground,
2703 ))),
2704 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2705 1,
2706 PokemonTypeAll::None,
2707 ))),
2708 ),
2709 TypeEffectiveness::Normal,
2710 ),
2711 (
2712 (
2713 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2714 0,
2715 PokemonTypeAll::Ground,
2716 ))),
2717 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2718 1,
2719 PokemonTypeAll::Normal,
2720 ))),
2721 ),
2722 TypeEffectiveness::Normal,
2723 ),
2724 (
2725 (
2726 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2727 0,
2728 PokemonTypeAll::Ground,
2729 ))),
2730 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2731 1,
2732 PokemonTypeAll::Fire,
2733 ))),
2734 ),
2735 TypeEffectiveness::SuperEffective,
2736 ),
2737 (
2738 (
2739 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2740 0,
2741 PokemonTypeAll::Ground,
2742 ))),
2743 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2744 1,
2745 PokemonTypeAll::Water,
2746 ))),
2747 ),
2748 TypeEffectiveness::Normal,
2749 ),
2750 (
2751 (
2752 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2753 0,
2754 PokemonTypeAll::Ground,
2755 ))),
2756 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2757 1,
2758 PokemonTypeAll::Electric,
2759 ))),
2760 ),
2761 TypeEffectiveness::SuperEffective,
2762 ),
2763 (
2764 (
2765 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2766 0,
2767 PokemonTypeAll::Ground,
2768 ))),
2769 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2770 1,
2771 PokemonTypeAll::Grass,
2772 ))),
2773 ),
2774 TypeEffectiveness::NotVeryEffective,
2775 ),
2776 (
2777 (
2778 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2779 0,
2780 PokemonTypeAll::Ground,
2781 ))),
2782 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2783 1,
2784 PokemonTypeAll::Ice,
2785 ))),
2786 ),
2787 TypeEffectiveness::Normal,
2788 ),
2789 (
2790 (
2791 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2792 0,
2793 PokemonTypeAll::Ground,
2794 ))),
2795 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2796 1,
2797 PokemonTypeAll::Fighting,
2798 ))),
2799 ),
2800 TypeEffectiveness::Normal,
2801 ),
2802 (
2803 (
2804 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2805 0,
2806 PokemonTypeAll::Ground,
2807 ))),
2808 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2809 1,
2810 PokemonTypeAll::Poison,
2811 ))),
2812 ),
2813 TypeEffectiveness::SuperEffective,
2814 ),
2815 (
2816 (
2817 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2818 0,
2819 PokemonTypeAll::Ground,
2820 ))),
2821 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2822 1,
2823 PokemonTypeAll::Ground,
2824 ))),
2825 ),
2826 TypeEffectiveness::Normal,
2827 ),
2828 (
2829 (
2830 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2831 0,
2832 PokemonTypeAll::Ground,
2833 ))),
2834 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2835 1,
2836 PokemonTypeAll::Flying,
2837 ))),
2838 ),
2839 TypeEffectiveness::NoEffect,
2840 ),
2841 (
2842 (
2843 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2844 0,
2845 PokemonTypeAll::Ground,
2846 ))),
2847 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2848 1,
2849 PokemonTypeAll::Psychic,
2850 ))),
2851 ),
2852 TypeEffectiveness::Normal,
2853 ),
2854 (
2855 (
2856 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2857 0,
2858 PokemonTypeAll::Ground,
2859 ))),
2860 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2861 1,
2862 PokemonTypeAll::Bug,
2863 ))),
2864 ),
2865 TypeEffectiveness::NotVeryEffective,
2866 ),
2867 (
2868 (
2869 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2870 0,
2871 PokemonTypeAll::Ground,
2872 ))),
2873 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2874 1,
2875 PokemonTypeAll::Rock,
2876 ))),
2877 ),
2878 TypeEffectiveness::SuperEffective,
2879 ),
2880 (
2881 (
2882 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2883 0,
2884 PokemonTypeAll::Ground,
2885 ))),
2886 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2887 1,
2888 PokemonTypeAll::Ghost,
2889 ))),
2890 ),
2891 TypeEffectiveness::Normal,
2892 ),
2893 (
2894 (
2895 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2896 0,
2897 PokemonTypeAll::Ground,
2898 ))),
2899 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2900 1,
2901 PokemonTypeAll::Dragon,
2902 ))),
2903 ),
2904 TypeEffectiveness::Normal,
2905 ),
2906 (
2907 (
2908 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2909 0,
2910 PokemonTypeAll::Ground,
2911 ))),
2912 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2913 1,
2914 PokemonTypeAll::Dark,
2915 ))),
2916 ),
2917 TypeEffectiveness::Normal,
2918 ),
2919 (
2920 (
2921 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2922 0,
2923 PokemonTypeAll::Ground,
2924 ))),
2925 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2926 1,
2927 PokemonTypeAll::Steel,
2928 ))),
2929 ),
2930 TypeEffectiveness::SuperEffective,
2931 ),
2932 (
2933 (
2934 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2935 0,
2936 PokemonTypeAll::Ground,
2937 ))),
2938 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2939 1,
2940 PokemonTypeAll::Fairy,
2941 ))),
2942 ),
2943 TypeEffectiveness::Normal,
2944 ),
2945 (
2946 (
2947 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2948 0,
2949 PokemonTypeAll::Flying,
2950 ))),
2951 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2952 1,
2953 PokemonTypeAll::None,
2954 ))),
2955 ),
2956 TypeEffectiveness::Normal,
2957 ),
2958 (
2959 (
2960 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2961 0,
2962 PokemonTypeAll::Flying,
2963 ))),
2964 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2965 1,
2966 PokemonTypeAll::Normal,
2967 ))),
2968 ),
2969 TypeEffectiveness::Normal,
2970 ),
2971 (
2972 (
2973 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2974 0,
2975 PokemonTypeAll::Flying,
2976 ))),
2977 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2978 1,
2979 PokemonTypeAll::Fire,
2980 ))),
2981 ),
2982 TypeEffectiveness::Normal,
2983 ),
2984 (
2985 (
2986 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2987 0,
2988 PokemonTypeAll::Flying,
2989 ))),
2990 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
2991 1,
2992 PokemonTypeAll::Water,
2993 ))),
2994 ),
2995 TypeEffectiveness::Normal,
2996 ),
2997 (
2998 (
2999 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3000 0,
3001 PokemonTypeAll::Flying,
3002 ))),
3003 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3004 1,
3005 PokemonTypeAll::Electric,
3006 ))),
3007 ),
3008 TypeEffectiveness::NotVeryEffective,
3009 ),
3010 (
3011 (
3012 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3013 0,
3014 PokemonTypeAll::Flying,
3015 ))),
3016 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3017 1,
3018 PokemonTypeAll::Grass,
3019 ))),
3020 ),
3021 TypeEffectiveness::SuperEffective,
3022 ),
3023 (
3024 (
3025 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3026 0,
3027 PokemonTypeAll::Flying,
3028 ))),
3029 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3030 1,
3031 PokemonTypeAll::Ice,
3032 ))),
3033 ),
3034 TypeEffectiveness::Normal,
3035 ),
3036 (
3037 (
3038 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3039 0,
3040 PokemonTypeAll::Flying,
3041 ))),
3042 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3043 1,
3044 PokemonTypeAll::Fighting,
3045 ))),
3046 ),
3047 TypeEffectiveness::SuperEffective,
3048 ),
3049 (
3050 (
3051 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3052 0,
3053 PokemonTypeAll::Flying,
3054 ))),
3055 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3056 1,
3057 PokemonTypeAll::Poison,
3058 ))),
3059 ),
3060 TypeEffectiveness::Normal,
3061 ),
3062 (
3063 (
3064 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3065 0,
3066 PokemonTypeAll::Flying,
3067 ))),
3068 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3069 1,
3070 PokemonTypeAll::Ground,
3071 ))),
3072 ),
3073 TypeEffectiveness::Normal,
3074 ),
3075 (
3076 (
3077 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3078 0,
3079 PokemonTypeAll::Flying,
3080 ))),
3081 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3082 1,
3083 PokemonTypeAll::Flying,
3084 ))),
3085 ),
3086 TypeEffectiveness::Normal,
3087 ),
3088 (
3089 (
3090 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3091 0,
3092 PokemonTypeAll::Flying,
3093 ))),
3094 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3095 1,
3096 PokemonTypeAll::Psychic,
3097 ))),
3098 ),
3099 TypeEffectiveness::Normal,
3100 ),
3101 (
3102 (
3103 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3104 0,
3105 PokemonTypeAll::Flying,
3106 ))),
3107 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3108 1,
3109 PokemonTypeAll::Bug,
3110 ))),
3111 ),
3112 TypeEffectiveness::SuperEffective,
3113 ),
3114 (
3115 (
3116 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3117 0,
3118 PokemonTypeAll::Flying,
3119 ))),
3120 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3121 1,
3122 PokemonTypeAll::Rock,
3123 ))),
3124 ),
3125 TypeEffectiveness::NotVeryEffective,
3126 ),
3127 (
3128 (
3129 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3130 0,
3131 PokemonTypeAll::Flying,
3132 ))),
3133 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3134 1,
3135 PokemonTypeAll::Ghost,
3136 ))),
3137 ),
3138 TypeEffectiveness::Normal,
3139 ),
3140 (
3141 (
3142 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3143 0,
3144 PokemonTypeAll::Flying,
3145 ))),
3146 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3147 1,
3148 PokemonTypeAll::Dragon,
3149 ))),
3150 ),
3151 TypeEffectiveness::Normal,
3152 ),
3153 (
3154 (
3155 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3156 0,
3157 PokemonTypeAll::Flying,
3158 ))),
3159 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3160 1,
3161 PokemonTypeAll::Dark,
3162 ))),
3163 ),
3164 TypeEffectiveness::Normal,
3165 ),
3166 (
3167 (
3168 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3169 0,
3170 PokemonTypeAll::Flying,
3171 ))),
3172 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3173 1,
3174 PokemonTypeAll::Steel,
3175 ))),
3176 ),
3177 TypeEffectiveness::NotVeryEffective,
3178 ),
3179 (
3180 (
3181 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3182 0,
3183 PokemonTypeAll::Flying,
3184 ))),
3185 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3186 1,
3187 PokemonTypeAll::Fairy,
3188 ))),
3189 ),
3190 TypeEffectiveness::Normal,
3191 ),
3192 (
3193 (
3194 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3195 0,
3196 PokemonTypeAll::Psychic,
3197 ))),
3198 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3199 1,
3200 PokemonTypeAll::None,
3201 ))),
3202 ),
3203 TypeEffectiveness::Normal,
3204 ),
3205 (
3206 (
3207 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3208 0,
3209 PokemonTypeAll::Psychic,
3210 ))),
3211 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3212 1,
3213 PokemonTypeAll::Normal,
3214 ))),
3215 ),
3216 TypeEffectiveness::Normal,
3217 ),
3218 (
3219 (
3220 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3221 0,
3222 PokemonTypeAll::Psychic,
3223 ))),
3224 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3225 1,
3226 PokemonTypeAll::Fire,
3227 ))),
3228 ),
3229 TypeEffectiveness::Normal,
3230 ),
3231 (
3232 (
3233 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3234 0,
3235 PokemonTypeAll::Psychic,
3236 ))),
3237 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3238 1,
3239 PokemonTypeAll::Water,
3240 ))),
3241 ),
3242 TypeEffectiveness::Normal,
3243 ),
3244 (
3245 (
3246 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3247 0,
3248 PokemonTypeAll::Psychic,
3249 ))),
3250 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3251 1,
3252 PokemonTypeAll::Electric,
3253 ))),
3254 ),
3255 TypeEffectiveness::Normal,
3256 ),
3257 (
3258 (
3259 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3260 0,
3261 PokemonTypeAll::Psychic,
3262 ))),
3263 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3264 1,
3265 PokemonTypeAll::Grass,
3266 ))),
3267 ),
3268 TypeEffectiveness::Normal,
3269 ),
3270 (
3271 (
3272 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3273 0,
3274 PokemonTypeAll::Psychic,
3275 ))),
3276 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3277 1,
3278 PokemonTypeAll::Ice,
3279 ))),
3280 ),
3281 TypeEffectiveness::Normal,
3282 ),
3283 (
3284 (
3285 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3286 0,
3287 PokemonTypeAll::Psychic,
3288 ))),
3289 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3290 1,
3291 PokemonTypeAll::Fighting,
3292 ))),
3293 ),
3294 TypeEffectiveness::SuperEffective,
3295 ),
3296 (
3297 (
3298 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3299 0,
3300 PokemonTypeAll::Psychic,
3301 ))),
3302 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3303 1,
3304 PokemonTypeAll::Poison,
3305 ))),
3306 ),
3307 TypeEffectiveness::SuperEffective,
3308 ),
3309 (
3310 (
3311 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3312 0,
3313 PokemonTypeAll::Psychic,
3314 ))),
3315 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3316 1,
3317 PokemonTypeAll::Ground,
3318 ))),
3319 ),
3320 TypeEffectiveness::Normal,
3321 ),
3322 (
3323 (
3324 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3325 0,
3326 PokemonTypeAll::Psychic,
3327 ))),
3328 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3329 1,
3330 PokemonTypeAll::Flying,
3331 ))),
3332 ),
3333 TypeEffectiveness::Normal,
3334 ),
3335 (
3336 (
3337 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3338 0,
3339 PokemonTypeAll::Psychic,
3340 ))),
3341 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3342 1,
3343 PokemonTypeAll::Psychic,
3344 ))),
3345 ),
3346 TypeEffectiveness::NotVeryEffective,
3347 ),
3348 (
3349 (
3350 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3351 0,
3352 PokemonTypeAll::Psychic,
3353 ))),
3354 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3355 1,
3356 PokemonTypeAll::Bug,
3357 ))),
3358 ),
3359 TypeEffectiveness::Normal,
3360 ),
3361 (
3362 (
3363 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3364 0,
3365 PokemonTypeAll::Psychic,
3366 ))),
3367 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3368 1,
3369 PokemonTypeAll::Rock,
3370 ))),
3371 ),
3372 TypeEffectiveness::Normal,
3373 ),
3374 (
3375 (
3376 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3377 0,
3378 PokemonTypeAll::Psychic,
3379 ))),
3380 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3381 1,
3382 PokemonTypeAll::Ghost,
3383 ))),
3384 ),
3385 TypeEffectiveness::Normal,
3386 ),
3387 (
3388 (
3389 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3390 0,
3391 PokemonTypeAll::Psychic,
3392 ))),
3393 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3394 1,
3395 PokemonTypeAll::Dragon,
3396 ))),
3397 ),
3398 TypeEffectiveness::Normal,
3399 ),
3400 (
3401 (
3402 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3403 0,
3404 PokemonTypeAll::Psychic,
3405 ))),
3406 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3407 1,
3408 PokemonTypeAll::Dark,
3409 ))),
3410 ),
3411 TypeEffectiveness::NoEffect,
3412 ),
3413 (
3414 (
3415 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3416 0,
3417 PokemonTypeAll::Psychic,
3418 ))),
3419 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3420 1,
3421 PokemonTypeAll::Steel,
3422 ))),
3423 ),
3424 TypeEffectiveness::NotVeryEffective,
3425 ),
3426 (
3427 (
3428 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3429 0,
3430 PokemonTypeAll::Psychic,
3431 ))),
3432 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3433 1,
3434 PokemonTypeAll::Fairy,
3435 ))),
3436 ),
3437 TypeEffectiveness::Normal,
3438 ),
3439 (
3440 (
3441 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3442 0,
3443 PokemonTypeAll::Bug,
3444 ))),
3445 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3446 1,
3447 PokemonTypeAll::None,
3448 ))),
3449 ),
3450 TypeEffectiveness::Normal,
3451 ),
3452 (
3453 (
3454 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3455 0,
3456 PokemonTypeAll::Bug,
3457 ))),
3458 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3459 1,
3460 PokemonTypeAll::Normal,
3461 ))),
3462 ),
3463 TypeEffectiveness::Normal,
3464 ),
3465 (
3466 (
3467 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3468 0,
3469 PokemonTypeAll::Bug,
3470 ))),
3471 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3472 1,
3473 PokemonTypeAll::Fire,
3474 ))),
3475 ),
3476 TypeEffectiveness::NotVeryEffective,
3477 ),
3478 (
3479 (
3480 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3481 0,
3482 PokemonTypeAll::Bug,
3483 ))),
3484 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3485 1,
3486 PokemonTypeAll::Water,
3487 ))),
3488 ),
3489 TypeEffectiveness::Normal,
3490 ),
3491 (
3492 (
3493 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3494 0,
3495 PokemonTypeAll::Bug,
3496 ))),
3497 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3498 1,
3499 PokemonTypeAll::Electric,
3500 ))),
3501 ),
3502 TypeEffectiveness::Normal,
3503 ),
3504 (
3505 (
3506 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3507 0,
3508 PokemonTypeAll::Bug,
3509 ))),
3510 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3511 1,
3512 PokemonTypeAll::Grass,
3513 ))),
3514 ),
3515 TypeEffectiveness::SuperEffective,
3516 ),
3517 (
3518 (
3519 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3520 0,
3521 PokemonTypeAll::Bug,
3522 ))),
3523 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3524 1,
3525 PokemonTypeAll::Ice,
3526 ))),
3527 ),
3528 TypeEffectiveness::Normal,
3529 ),
3530 (
3531 (
3532 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3533 0,
3534 PokemonTypeAll::Bug,
3535 ))),
3536 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3537 1,
3538 PokemonTypeAll::Fighting,
3539 ))),
3540 ),
3541 TypeEffectiveness::NotVeryEffective,
3542 ),
3543 (
3544 (
3545 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3546 0,
3547 PokemonTypeAll::Bug,
3548 ))),
3549 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3550 1,
3551 PokemonTypeAll::Poison,
3552 ))),
3553 ),
3554 TypeEffectiveness::NotVeryEffective,
3555 ),
3556 (
3557 (
3558 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3559 0,
3560 PokemonTypeAll::Bug,
3561 ))),
3562 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3563 1,
3564 PokemonTypeAll::Ground,
3565 ))),
3566 ),
3567 TypeEffectiveness::Normal,
3568 ),
3569 (
3570 (
3571 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3572 0,
3573 PokemonTypeAll::Bug,
3574 ))),
3575 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3576 1,
3577 PokemonTypeAll::Flying,
3578 ))),
3579 ),
3580 TypeEffectiveness::NotVeryEffective,
3581 ),
3582 (
3583 (
3584 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3585 0,
3586 PokemonTypeAll::Bug,
3587 ))),
3588 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3589 1,
3590 PokemonTypeAll::Psychic,
3591 ))),
3592 ),
3593 TypeEffectiveness::SuperEffective,
3594 ),
3595 (
3596 (
3597 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3598 0,
3599 PokemonTypeAll::Bug,
3600 ))),
3601 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3602 1,
3603 PokemonTypeAll::Bug,
3604 ))),
3605 ),
3606 TypeEffectiveness::Normal,
3607 ),
3608 (
3609 (
3610 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3611 0,
3612 PokemonTypeAll::Bug,
3613 ))),
3614 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3615 1,
3616 PokemonTypeAll::Rock,
3617 ))),
3618 ),
3619 TypeEffectiveness::Normal,
3620 ),
3621 (
3622 (
3623 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3624 0,
3625 PokemonTypeAll::Bug,
3626 ))),
3627 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3628 1,
3629 PokemonTypeAll::Ghost,
3630 ))),
3631 ),
3632 TypeEffectiveness::NotVeryEffective,
3633 ),
3634 (
3635 (
3636 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3637 0,
3638 PokemonTypeAll::Bug,
3639 ))),
3640 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3641 1,
3642 PokemonTypeAll::Dragon,
3643 ))),
3644 ),
3645 TypeEffectiveness::Normal,
3646 ),
3647 (
3648 (
3649 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3650 0,
3651 PokemonTypeAll::Bug,
3652 ))),
3653 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3654 1,
3655 PokemonTypeAll::Dark,
3656 ))),
3657 ),
3658 TypeEffectiveness::SuperEffective,
3659 ),
3660 (
3661 (
3662 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3663 0,
3664 PokemonTypeAll::Bug,
3665 ))),
3666 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3667 1,
3668 PokemonTypeAll::Steel,
3669 ))),
3670 ),
3671 TypeEffectiveness::NotVeryEffective,
3672 ),
3673 (
3674 (
3675 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3676 0,
3677 PokemonTypeAll::Bug,
3678 ))),
3679 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3680 1,
3681 PokemonTypeAll::Fairy,
3682 ))),
3683 ),
3684 TypeEffectiveness::NotVeryEffective,
3685 ),
3686 (
3687 (
3688 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3689 0,
3690 PokemonTypeAll::Rock,
3691 ))),
3692 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3693 1,
3694 PokemonTypeAll::None,
3695 ))),
3696 ),
3697 TypeEffectiveness::Normal,
3698 ),
3699 (
3700 (
3701 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3702 0,
3703 PokemonTypeAll::Rock,
3704 ))),
3705 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3706 1,
3707 PokemonTypeAll::Normal,
3708 ))),
3709 ),
3710 TypeEffectiveness::Normal,
3711 ),
3712 (
3713 (
3714 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3715 0,
3716 PokemonTypeAll::Rock,
3717 ))),
3718 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3719 1,
3720 PokemonTypeAll::Fire,
3721 ))),
3722 ),
3723 TypeEffectiveness::SuperEffective,
3724 ),
3725 (
3726 (
3727 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3728 0,
3729 PokemonTypeAll::Rock,
3730 ))),
3731 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3732 1,
3733 PokemonTypeAll::Water,
3734 ))),
3735 ),
3736 TypeEffectiveness::Normal,
3737 ),
3738 (
3739 (
3740 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3741 0,
3742 PokemonTypeAll::Rock,
3743 ))),
3744 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3745 1,
3746 PokemonTypeAll::Electric,
3747 ))),
3748 ),
3749 TypeEffectiveness::Normal,
3750 ),
3751 (
3752 (
3753 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3754 0,
3755 PokemonTypeAll::Rock,
3756 ))),
3757 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3758 1,
3759 PokemonTypeAll::Grass,
3760 ))),
3761 ),
3762 TypeEffectiveness::Normal,
3763 ),
3764 (
3765 (
3766 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3767 0,
3768 PokemonTypeAll::Rock,
3769 ))),
3770 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3771 1,
3772 PokemonTypeAll::Ice,
3773 ))),
3774 ),
3775 TypeEffectiveness::SuperEffective,
3776 ),
3777 (
3778 (
3779 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3780 0,
3781 PokemonTypeAll::Rock,
3782 ))),
3783 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3784 1,
3785 PokemonTypeAll::Fighting,
3786 ))),
3787 ),
3788 TypeEffectiveness::NotVeryEffective,
3789 ),
3790 (
3791 (
3792 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3793 0,
3794 PokemonTypeAll::Rock,
3795 ))),
3796 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3797 1,
3798 PokemonTypeAll::Poison,
3799 ))),
3800 ),
3801 TypeEffectiveness::Normal,
3802 ),
3803 (
3804 (
3805 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3806 0,
3807 PokemonTypeAll::Rock,
3808 ))),
3809 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3810 1,
3811 PokemonTypeAll::Ground,
3812 ))),
3813 ),
3814 TypeEffectiveness::NotVeryEffective,
3815 ),
3816 (
3817 (
3818 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3819 0,
3820 PokemonTypeAll::Rock,
3821 ))),
3822 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3823 1,
3824 PokemonTypeAll::Flying,
3825 ))),
3826 ),
3827 TypeEffectiveness::SuperEffective,
3828 ),
3829 (
3830 (
3831 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3832 0,
3833 PokemonTypeAll::Rock,
3834 ))),
3835 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3836 1,
3837 PokemonTypeAll::Psychic,
3838 ))),
3839 ),
3840 TypeEffectiveness::Normal,
3841 ),
3842 (
3843 (
3844 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3845 0,
3846 PokemonTypeAll::Rock,
3847 ))),
3848 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3849 1,
3850 PokemonTypeAll::Bug,
3851 ))),
3852 ),
3853 TypeEffectiveness::SuperEffective,
3854 ),
3855 (
3856 (
3857 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3858 0,
3859 PokemonTypeAll::Rock,
3860 ))),
3861 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3862 1,
3863 PokemonTypeAll::Rock,
3864 ))),
3865 ),
3866 TypeEffectiveness::Normal,
3867 ),
3868 (
3869 (
3870 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3871 0,
3872 PokemonTypeAll::Rock,
3873 ))),
3874 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3875 1,
3876 PokemonTypeAll::Ghost,
3877 ))),
3878 ),
3879 TypeEffectiveness::Normal,
3880 ),
3881 (
3882 (
3883 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3884 0,
3885 PokemonTypeAll::Rock,
3886 ))),
3887 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3888 1,
3889 PokemonTypeAll::Dragon,
3890 ))),
3891 ),
3892 TypeEffectiveness::Normal,
3893 ),
3894 (
3895 (
3896 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3897 0,
3898 PokemonTypeAll::Rock,
3899 ))),
3900 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3901 1,
3902 PokemonTypeAll::Dark,
3903 ))),
3904 ),
3905 TypeEffectiveness::Normal,
3906 ),
3907 (
3908 (
3909 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3910 0,
3911 PokemonTypeAll::Rock,
3912 ))),
3913 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3914 1,
3915 PokemonTypeAll::Steel,
3916 ))),
3917 ),
3918 TypeEffectiveness::NotVeryEffective,
3919 ),
3920 (
3921 (
3922 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3923 0,
3924 PokemonTypeAll::Rock,
3925 ))),
3926 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3927 1,
3928 PokemonTypeAll::Fairy,
3929 ))),
3930 ),
3931 TypeEffectiveness::Normal,
3932 ),
3933 (
3934 (
3935 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3936 0,
3937 PokemonTypeAll::Ghost,
3938 ))),
3939 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3940 1,
3941 PokemonTypeAll::None,
3942 ))),
3943 ),
3944 TypeEffectiveness::Normal,
3945 ),
3946 (
3947 (
3948 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3949 0,
3950 PokemonTypeAll::Ghost,
3951 ))),
3952 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3953 1,
3954 PokemonTypeAll::Normal,
3955 ))),
3956 ),
3957 TypeEffectiveness::NoEffect,
3958 ),
3959 (
3960 (
3961 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3962 0,
3963 PokemonTypeAll::Ghost,
3964 ))),
3965 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3966 1,
3967 PokemonTypeAll::Fire,
3968 ))),
3969 ),
3970 TypeEffectiveness::Normal,
3971 ),
3972 (
3973 (
3974 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3975 0,
3976 PokemonTypeAll::Ghost,
3977 ))),
3978 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3979 1,
3980 PokemonTypeAll::Water,
3981 ))),
3982 ),
3983 TypeEffectiveness::Normal,
3984 ),
3985 (
3986 (
3987 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3988 0,
3989 PokemonTypeAll::Ghost,
3990 ))),
3991 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
3992 1,
3993 PokemonTypeAll::Electric,
3994 ))),
3995 ),
3996 TypeEffectiveness::Normal,
3997 ),
3998 (
3999 (
4000 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4001 0,
4002 PokemonTypeAll::Ghost,
4003 ))),
4004 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4005 1,
4006 PokemonTypeAll::Grass,
4007 ))),
4008 ),
4009 TypeEffectiveness::Normal,
4010 ),
4011 (
4012 (
4013 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4014 0,
4015 PokemonTypeAll::Ghost,
4016 ))),
4017 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4018 1,
4019 PokemonTypeAll::Ice,
4020 ))),
4021 ),
4022 TypeEffectiveness::Normal,
4023 ),
4024 (
4025 (
4026 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4027 0,
4028 PokemonTypeAll::Ghost,
4029 ))),
4030 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4031 1,
4032 PokemonTypeAll::Fighting,
4033 ))),
4034 ),
4035 TypeEffectiveness::Normal,
4036 ),
4037 (
4038 (
4039 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4040 0,
4041 PokemonTypeAll::Ghost,
4042 ))),
4043 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4044 1,
4045 PokemonTypeAll::Poison,
4046 ))),
4047 ),
4048 TypeEffectiveness::Normal,
4049 ),
4050 (
4051 (
4052 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4053 0,
4054 PokemonTypeAll::Ghost,
4055 ))),
4056 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4057 1,
4058 PokemonTypeAll::Ground,
4059 ))),
4060 ),
4061 TypeEffectiveness::Normal,
4062 ),
4063 (
4064 (
4065 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4066 0,
4067 PokemonTypeAll::Ghost,
4068 ))),
4069 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4070 1,
4071 PokemonTypeAll::Flying,
4072 ))),
4073 ),
4074 TypeEffectiveness::Normal,
4075 ),
4076 (
4077 (
4078 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4079 0,
4080 PokemonTypeAll::Ghost,
4081 ))),
4082 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4083 1,
4084 PokemonTypeAll::Psychic,
4085 ))),
4086 ),
4087 TypeEffectiveness::SuperEffective,
4088 ),
4089 (
4090 (
4091 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4092 0,
4093 PokemonTypeAll::Ghost,
4094 ))),
4095 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4096 1,
4097 PokemonTypeAll::Bug,
4098 ))),
4099 ),
4100 TypeEffectiveness::Normal,
4101 ),
4102 (
4103 (
4104 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4105 0,
4106 PokemonTypeAll::Ghost,
4107 ))),
4108 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4109 1,
4110 PokemonTypeAll::Rock,
4111 ))),
4112 ),
4113 TypeEffectiveness::Normal,
4114 ),
4115 (
4116 (
4117 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4118 0,
4119 PokemonTypeAll::Ghost,
4120 ))),
4121 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4122 1,
4123 PokemonTypeAll::Ghost,
4124 ))),
4125 ),
4126 TypeEffectiveness::SuperEffective,
4127 ),
4128 (
4129 (
4130 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4131 0,
4132 PokemonTypeAll::Ghost,
4133 ))),
4134 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4135 1,
4136 PokemonTypeAll::Dragon,
4137 ))),
4138 ),
4139 TypeEffectiveness::Normal,
4140 ),
4141 (
4142 (
4143 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4144 0,
4145 PokemonTypeAll::Ghost,
4146 ))),
4147 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4148 1,
4149 PokemonTypeAll::Dark,
4150 ))),
4151 ),
4152 TypeEffectiveness::NotVeryEffective,
4153 ),
4154 (
4155 (
4156 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4157 0,
4158 PokemonTypeAll::Ghost,
4159 ))),
4160 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4161 1,
4162 PokemonTypeAll::Steel,
4163 ))),
4164 ),
4165 TypeEffectiveness::Normal,
4166 ),
4167 (
4168 (
4169 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4170 0,
4171 PokemonTypeAll::Ghost,
4172 ))),
4173 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4174 1,
4175 PokemonTypeAll::Fairy,
4176 ))),
4177 ),
4178 TypeEffectiveness::Normal,
4179 ),
4180 (
4181 (
4182 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4183 0,
4184 PokemonTypeAll::Dragon,
4185 ))),
4186 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4187 1,
4188 PokemonTypeAll::None,
4189 ))),
4190 ),
4191 TypeEffectiveness::Normal,
4192 ),
4193 (
4194 (
4195 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4196 0,
4197 PokemonTypeAll::Dragon,
4198 ))),
4199 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4200 1,
4201 PokemonTypeAll::Normal,
4202 ))),
4203 ),
4204 TypeEffectiveness::Normal,
4205 ),
4206 (
4207 (
4208 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4209 0,
4210 PokemonTypeAll::Dragon,
4211 ))),
4212 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4213 1,
4214 PokemonTypeAll::Fire,
4215 ))),
4216 ),
4217 TypeEffectiveness::Normal,
4218 ),
4219 (
4220 (
4221 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4222 0,
4223 PokemonTypeAll::Dragon,
4224 ))),
4225 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4226 1,
4227 PokemonTypeAll::Water,
4228 ))),
4229 ),
4230 TypeEffectiveness::Normal,
4231 ),
4232 (
4233 (
4234 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4235 0,
4236 PokemonTypeAll::Dragon,
4237 ))),
4238 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4239 1,
4240 PokemonTypeAll::Electric,
4241 ))),
4242 ),
4243 TypeEffectiveness::Normal,
4244 ),
4245 (
4246 (
4247 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4248 0,
4249 PokemonTypeAll::Dragon,
4250 ))),
4251 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4252 1,
4253 PokemonTypeAll::Grass,
4254 ))),
4255 ),
4256 TypeEffectiveness::Normal,
4257 ),
4258 (
4259 (
4260 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4261 0,
4262 PokemonTypeAll::Dragon,
4263 ))),
4264 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4265 1,
4266 PokemonTypeAll::Ice,
4267 ))),
4268 ),
4269 TypeEffectiveness::Normal,
4270 ),
4271 (
4272 (
4273 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4274 0,
4275 PokemonTypeAll::Dragon,
4276 ))),
4277 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4278 1,
4279 PokemonTypeAll::Fighting,
4280 ))),
4281 ),
4282 TypeEffectiveness::Normal,
4283 ),
4284 (
4285 (
4286 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4287 0,
4288 PokemonTypeAll::Dragon,
4289 ))),
4290 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4291 1,
4292 PokemonTypeAll::Poison,
4293 ))),
4294 ),
4295 TypeEffectiveness::Normal,
4296 ),
4297 (
4298 (
4299 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4300 0,
4301 PokemonTypeAll::Dragon,
4302 ))),
4303 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4304 1,
4305 PokemonTypeAll::Ground,
4306 ))),
4307 ),
4308 TypeEffectiveness::Normal,
4309 ),
4310 (
4311 (
4312 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4313 0,
4314 PokemonTypeAll::Dragon,
4315 ))),
4316 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4317 1,
4318 PokemonTypeAll::Flying,
4319 ))),
4320 ),
4321 TypeEffectiveness::Normal,
4322 ),
4323 (
4324 (
4325 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4326 0,
4327 PokemonTypeAll::Dragon,
4328 ))),
4329 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4330 1,
4331 PokemonTypeAll::Psychic,
4332 ))),
4333 ),
4334 TypeEffectiveness::Normal,
4335 ),
4336 (
4337 (
4338 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4339 0,
4340 PokemonTypeAll::Dragon,
4341 ))),
4342 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4343 1,
4344 PokemonTypeAll::Bug,
4345 ))),
4346 ),
4347 TypeEffectiveness::Normal,
4348 ),
4349 (
4350 (
4351 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4352 0,
4353 PokemonTypeAll::Dragon,
4354 ))),
4355 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4356 1,
4357 PokemonTypeAll::Rock,
4358 ))),
4359 ),
4360 TypeEffectiveness::Normal,
4361 ),
4362 (
4363 (
4364 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4365 0,
4366 PokemonTypeAll::Dragon,
4367 ))),
4368 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4369 1,
4370 PokemonTypeAll::Ghost,
4371 ))),
4372 ),
4373 TypeEffectiveness::Normal,
4374 ),
4375 (
4376 (
4377 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4378 0,
4379 PokemonTypeAll::Dragon,
4380 ))),
4381 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4382 1,
4383 PokemonTypeAll::Dragon,
4384 ))),
4385 ),
4386 TypeEffectiveness::SuperEffective,
4387 ),
4388 (
4389 (
4390 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4391 0,
4392 PokemonTypeAll::Dragon,
4393 ))),
4394 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4395 1,
4396 PokemonTypeAll::Dark,
4397 ))),
4398 ),
4399 TypeEffectiveness::Normal,
4400 ),
4401 (
4402 (
4403 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4404 0,
4405 PokemonTypeAll::Dragon,
4406 ))),
4407 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4408 1,
4409 PokemonTypeAll::Steel,
4410 ))),
4411 ),
4412 TypeEffectiveness::NotVeryEffective,
4413 ),
4414 (
4415 (
4416 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4417 0,
4418 PokemonTypeAll::Dragon,
4419 ))),
4420 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4421 1,
4422 PokemonTypeAll::Fairy,
4423 ))),
4424 ),
4425 TypeEffectiveness::NoEffect,
4426 ),
4427 (
4428 (
4429 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4430 0,
4431 PokemonTypeAll::Dark,
4432 ))),
4433 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4434 1,
4435 PokemonTypeAll::None,
4436 ))),
4437 ),
4438 TypeEffectiveness::Normal,
4439 ),
4440 (
4441 (
4442 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4443 0,
4444 PokemonTypeAll::Dark,
4445 ))),
4446 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4447 1,
4448 PokemonTypeAll::Normal,
4449 ))),
4450 ),
4451 TypeEffectiveness::Normal,
4452 ),
4453 (
4454 (
4455 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4456 0,
4457 PokemonTypeAll::Dark,
4458 ))),
4459 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4460 1,
4461 PokemonTypeAll::Fire,
4462 ))),
4463 ),
4464 TypeEffectiveness::Normal,
4465 ),
4466 (
4467 (
4468 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4469 0,
4470 PokemonTypeAll::Dark,
4471 ))),
4472 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4473 1,
4474 PokemonTypeAll::Water,
4475 ))),
4476 ),
4477 TypeEffectiveness::Normal,
4478 ),
4479 (
4480 (
4481 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4482 0,
4483 PokemonTypeAll::Dark,
4484 ))),
4485 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4486 1,
4487 PokemonTypeAll::Electric,
4488 ))),
4489 ),
4490 TypeEffectiveness::Normal,
4491 ),
4492 (
4493 (
4494 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4495 0,
4496 PokemonTypeAll::Dark,
4497 ))),
4498 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4499 1,
4500 PokemonTypeAll::Grass,
4501 ))),
4502 ),
4503 TypeEffectiveness::Normal,
4504 ),
4505 (
4506 (
4507 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4508 0,
4509 PokemonTypeAll::Dark,
4510 ))),
4511 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4512 1,
4513 PokemonTypeAll::Ice,
4514 ))),
4515 ),
4516 TypeEffectiveness::Normal,
4517 ),
4518 (
4519 (
4520 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4521 0,
4522 PokemonTypeAll::Dark,
4523 ))),
4524 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4525 1,
4526 PokemonTypeAll::Fighting,
4527 ))),
4528 ),
4529 TypeEffectiveness::NotVeryEffective,
4530 ),
4531 (
4532 (
4533 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4534 0,
4535 PokemonTypeAll::Dark,
4536 ))),
4537 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4538 1,
4539 PokemonTypeAll::Poison,
4540 ))),
4541 ),
4542 TypeEffectiveness::Normal,
4543 ),
4544 (
4545 (
4546 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4547 0,
4548 PokemonTypeAll::Dark,
4549 ))),
4550 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4551 1,
4552 PokemonTypeAll::Ground,
4553 ))),
4554 ),
4555 TypeEffectiveness::Normal,
4556 ),
4557 (
4558 (
4559 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4560 0,
4561 PokemonTypeAll::Dark,
4562 ))),
4563 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4564 1,
4565 PokemonTypeAll::Flying,
4566 ))),
4567 ),
4568 TypeEffectiveness::Normal,
4569 ),
4570 (
4571 (
4572 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4573 0,
4574 PokemonTypeAll::Dark,
4575 ))),
4576 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4577 1,
4578 PokemonTypeAll::Psychic,
4579 ))),
4580 ),
4581 TypeEffectiveness::SuperEffective,
4582 ),
4583 (
4584 (
4585 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4586 0,
4587 PokemonTypeAll::Dark,
4588 ))),
4589 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4590 1,
4591 PokemonTypeAll::Bug,
4592 ))),
4593 ),
4594 TypeEffectiveness::Normal,
4595 ),
4596 (
4597 (
4598 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4599 0,
4600 PokemonTypeAll::Dark,
4601 ))),
4602 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4603 1,
4604 PokemonTypeAll::Rock,
4605 ))),
4606 ),
4607 TypeEffectiveness::Normal,
4608 ),
4609 (
4610 (
4611 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4612 0,
4613 PokemonTypeAll::Dark,
4614 ))),
4615 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4616 1,
4617 PokemonTypeAll::Ghost,
4618 ))),
4619 ),
4620 TypeEffectiveness::SuperEffective,
4621 ),
4622 (
4623 (
4624 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4625 0,
4626 PokemonTypeAll::Dark,
4627 ))),
4628 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4629 1,
4630 PokemonTypeAll::Dragon,
4631 ))),
4632 ),
4633 TypeEffectiveness::Normal,
4634 ),
4635 (
4636 (
4637 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4638 0,
4639 PokemonTypeAll::Dark,
4640 ))),
4641 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4642 1,
4643 PokemonTypeAll::Dark,
4644 ))),
4645 ),
4646 TypeEffectiveness::NotVeryEffective,
4647 ),
4648 (
4649 (
4650 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4651 0,
4652 PokemonTypeAll::Dark,
4653 ))),
4654 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4655 1,
4656 PokemonTypeAll::Steel,
4657 ))),
4658 ),
4659 TypeEffectiveness::Normal,
4660 ),
4661 (
4662 (
4663 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4664 0,
4665 PokemonTypeAll::Dark,
4666 ))),
4667 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4668 1,
4669 PokemonTypeAll::Fairy,
4670 ))),
4671 ),
4672 TypeEffectiveness::NotVeryEffective,
4673 ),
4674 (
4675 (
4676 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4677 0,
4678 PokemonTypeAll::Steel,
4679 ))),
4680 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4681 1,
4682 PokemonTypeAll::None,
4683 ))),
4684 ),
4685 TypeEffectiveness::Normal,
4686 ),
4687 (
4688 (
4689 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4690 0,
4691 PokemonTypeAll::Steel,
4692 ))),
4693 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4694 1,
4695 PokemonTypeAll::Normal,
4696 ))),
4697 ),
4698 TypeEffectiveness::Normal,
4699 ),
4700 (
4701 (
4702 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4703 0,
4704 PokemonTypeAll::Steel,
4705 ))),
4706 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4707 1,
4708 PokemonTypeAll::Fire,
4709 ))),
4710 ),
4711 TypeEffectiveness::NotVeryEffective,
4712 ),
4713 (
4714 (
4715 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4716 0,
4717 PokemonTypeAll::Steel,
4718 ))),
4719 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4720 1,
4721 PokemonTypeAll::Water,
4722 ))),
4723 ),
4724 TypeEffectiveness::NotVeryEffective,
4725 ),
4726 (
4727 (
4728 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4729 0,
4730 PokemonTypeAll::Steel,
4731 ))),
4732 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4733 1,
4734 PokemonTypeAll::Electric,
4735 ))),
4736 ),
4737 TypeEffectiveness::NotVeryEffective,
4738 ),
4739 (
4740 (
4741 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4742 0,
4743 PokemonTypeAll::Steel,
4744 ))),
4745 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4746 1,
4747 PokemonTypeAll::Grass,
4748 ))),
4749 ),
4750 TypeEffectiveness::Normal,
4751 ),
4752 (
4753 (
4754 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4755 0,
4756 PokemonTypeAll::Steel,
4757 ))),
4758 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4759 1,
4760 PokemonTypeAll::Ice,
4761 ))),
4762 ),
4763 TypeEffectiveness::SuperEffective,
4764 ),
4765 (
4766 (
4767 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4768 0,
4769 PokemonTypeAll::Steel,
4770 ))),
4771 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4772 1,
4773 PokemonTypeAll::Fighting,
4774 ))),
4775 ),
4776 TypeEffectiveness::Normal,
4777 ),
4778 (
4779 (
4780 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4781 0,
4782 PokemonTypeAll::Steel,
4783 ))),
4784 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4785 1,
4786 PokemonTypeAll::Poison,
4787 ))),
4788 ),
4789 TypeEffectiveness::Normal,
4790 ),
4791 (
4792 (
4793 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4794 0,
4795 PokemonTypeAll::Steel,
4796 ))),
4797 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4798 1,
4799 PokemonTypeAll::Ground,
4800 ))),
4801 ),
4802 TypeEffectiveness::Normal,
4803 ),
4804 (
4805 (
4806 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4807 0,
4808 PokemonTypeAll::Steel,
4809 ))),
4810 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4811 1,
4812 PokemonTypeAll::Flying,
4813 ))),
4814 ),
4815 TypeEffectiveness::Normal,
4816 ),
4817 (
4818 (
4819 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4820 0,
4821 PokemonTypeAll::Steel,
4822 ))),
4823 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4824 1,
4825 PokemonTypeAll::Psychic,
4826 ))),
4827 ),
4828 TypeEffectiveness::Normal,
4829 ),
4830 (
4831 (
4832 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4833 0,
4834 PokemonTypeAll::Steel,
4835 ))),
4836 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4837 1,
4838 PokemonTypeAll::Bug,
4839 ))),
4840 ),
4841 TypeEffectiveness::Normal,
4842 ),
4843 (
4844 (
4845 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4846 0,
4847 PokemonTypeAll::Steel,
4848 ))),
4849 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4850 1,
4851 PokemonTypeAll::Rock,
4852 ))),
4853 ),
4854 TypeEffectiveness::SuperEffective,
4855 ),
4856 (
4857 (
4858 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4859 0,
4860 PokemonTypeAll::Steel,
4861 ))),
4862 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4863 1,
4864 PokemonTypeAll::Ghost,
4865 ))),
4866 ),
4867 TypeEffectiveness::Normal,
4868 ),
4869 (
4870 (
4871 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4872 0,
4873 PokemonTypeAll::Steel,
4874 ))),
4875 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4876 1,
4877 PokemonTypeAll::Dragon,
4878 ))),
4879 ),
4880 TypeEffectiveness::Normal,
4881 ),
4882 (
4883 (
4884 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4885 0,
4886 PokemonTypeAll::Steel,
4887 ))),
4888 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4889 1,
4890 PokemonTypeAll::Dark,
4891 ))),
4892 ),
4893 TypeEffectiveness::Normal,
4894 ),
4895 (
4896 (
4897 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4898 0,
4899 PokemonTypeAll::Steel,
4900 ))),
4901 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4902 1,
4903 PokemonTypeAll::Steel,
4904 ))),
4905 ),
4906 TypeEffectiveness::NotVeryEffective,
4907 ),
4908 (
4909 (
4910 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4911 0,
4912 PokemonTypeAll::Steel,
4913 ))),
4914 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4915 1,
4916 PokemonTypeAll::Fairy,
4917 ))),
4918 ),
4919 TypeEffectiveness::SuperEffective,
4920 ),
4921 (
4922 (
4923 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4924 0,
4925 PokemonTypeAll::Fairy,
4926 ))),
4927 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4928 1,
4929 PokemonTypeAll::None,
4930 ))),
4931 ),
4932 TypeEffectiveness::Normal,
4933 ),
4934 (
4935 (
4936 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4937 0,
4938 PokemonTypeAll::Fairy,
4939 ))),
4940 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4941 1,
4942 PokemonTypeAll::Normal,
4943 ))),
4944 ),
4945 TypeEffectiveness::Normal,
4946 ),
4947 (
4948 (
4949 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4950 0,
4951 PokemonTypeAll::Fairy,
4952 ))),
4953 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4954 1,
4955 PokemonTypeAll::Fire,
4956 ))),
4957 ),
4958 TypeEffectiveness::NotVeryEffective,
4959 ),
4960 (
4961 (
4962 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4963 0,
4964 PokemonTypeAll::Fairy,
4965 ))),
4966 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4967 1,
4968 PokemonTypeAll::Water,
4969 ))),
4970 ),
4971 TypeEffectiveness::Normal,
4972 ),
4973 (
4974 (
4975 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4976 0,
4977 PokemonTypeAll::Fairy,
4978 ))),
4979 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4980 1,
4981 PokemonTypeAll::Electric,
4982 ))),
4983 ),
4984 TypeEffectiveness::Normal,
4985 ),
4986 (
4987 (
4988 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4989 0,
4990 PokemonTypeAll::Fairy,
4991 ))),
4992 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
4993 1,
4994 PokemonTypeAll::Grass,
4995 ))),
4996 ),
4997 TypeEffectiveness::Normal,
4998 ),
4999 (
5000 (
5001 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
5002 0,
5003 PokemonTypeAll::Fairy,
5004 ))),
5005 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
5006 1,
5007 PokemonTypeAll::Ice,
5008 ))),
5009 ),
5010 TypeEffectiveness::Normal,
5011 ),
5012 (
5013 (
5014 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
5015 0,
5016 PokemonTypeAll::Fairy,
5017 ))),
5018 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
5019 1,
5020 PokemonTypeAll::Fighting,
5021 ))),
5022 ),
5023 TypeEffectiveness::SuperEffective,
5024 ),
5025 (
5026 (
5027 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
5028 0,
5029 PokemonTypeAll::Fairy,
5030 ))),
5031 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
5032 1,
5033 PokemonTypeAll::Poison,
5034 ))),
5035 ),
5036 TypeEffectiveness::NotVeryEffective,
5037 ),
5038 (
5039 (
5040 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
5041 0,
5042 PokemonTypeAll::Fairy,
5043 ))),
5044 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
5045 1,
5046 PokemonTypeAll::Ground,
5047 ))),
5048 ),
5049 TypeEffectiveness::Normal,
5050 ),
5051 (
5052 (
5053 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
5054 0,
5055 PokemonTypeAll::Fairy,
5056 ))),
5057 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
5058 1,
5059 PokemonTypeAll::Flying,
5060 ))),
5061 ),
5062 TypeEffectiveness::Normal,
5063 ),
5064 (
5065 (
5066 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
5067 0,
5068 PokemonTypeAll::Fairy,
5069 ))),
5070 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
5071 1,
5072 PokemonTypeAll::Psychic,
5073 ))),
5074 ),
5075 TypeEffectiveness::Normal,
5076 ),
5077 (
5078 (
5079 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
5080 0,
5081 PokemonTypeAll::Fairy,
5082 ))),
5083 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
5084 1,
5085 PokemonTypeAll::Bug,
5086 ))),
5087 ),
5088 TypeEffectiveness::Normal,
5089 ),
5090 (
5091 (
5092 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
5093 0,
5094 PokemonTypeAll::Fairy,
5095 ))),
5096 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
5097 1,
5098 PokemonTypeAll::Rock,
5099 ))),
5100 ),
5101 TypeEffectiveness::Normal,
5102 ),
5103 (
5104 (
5105 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
5106 0,
5107 PokemonTypeAll::Fairy,
5108 ))),
5109 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
5110 1,
5111 PokemonTypeAll::Ghost,
5112 ))),
5113 ),
5114 TypeEffectiveness::Normal,
5115 ),
5116 (
5117 (
5118 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
5119 0,
5120 PokemonTypeAll::Fairy,
5121 ))),
5122 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
5123 1,
5124 PokemonTypeAll::Dragon,
5125 ))),
5126 ),
5127 TypeEffectiveness::SuperEffective,
5128 ),
5129 (
5130 (
5131 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
5132 0,
5133 PokemonTypeAll::Fairy,
5134 ))),
5135 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
5136 1,
5137 PokemonTypeAll::Dark,
5138 ))),
5139 ),
5140 TypeEffectiveness::SuperEffective,
5141 ),
5142 (
5143 (
5144 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
5145 0,
5146 PokemonTypeAll::Fairy,
5147 ))),
5148 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
5149 1,
5150 PokemonTypeAll::Steel,
5151 ))),
5152 ),
5153 TypeEffectiveness::NotVeryEffective,
5154 ),
5155 (
5156 (
5157 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
5158 0,
5159 PokemonTypeAll::Fairy,
5160 ))),
5161 FitnessPokemonType::new(&Rc::new(Individual::new_with_id(
5162 1,
5163 PokemonTypeAll::Fairy,
5164 ))),
5165 ),
5166 TypeEffectiveness::Normal,
5167 ),
5168 ];
5169 for ((arg_1, arg_2), result) in testcases.into_iter() {
5170 assert_eq!(
5171 TypeEffectiveness::from_effective_array::<PokemonTypeAll>(&arg_1, &arg_2),
5172 result
5173 );
5174 }
5175 }
5176
5177 #[test]
5181 fn test_typeeffectiveness_point_strong() {
5182 let testcases: Vec<(TypeEffectiveness, usize)> = vec![
5183 (TypeEffectiveness::SuperEffective, 3),
5184 (TypeEffectiveness::Normal, 2),
5185 (TypeEffectiveness::NotVeryEffective, 1),
5186 (TypeEffectiveness::NoEffect, 0),
5187 ];
5188 for (arg, result) in testcases.into_iter() {
5189 assert_eq!(arg.point(), result)
5190 }
5191 }
5192
5193 #[test]
5197 fn test_typeeffectiveness_point_weak() {
5198 assert!(TypeEffectiveness::SuperEffective.point() > TypeEffectiveness::Normal.point());
5199 assert!(TypeEffectiveness::Normal.point() > TypeEffectiveness::NotVeryEffective.point());
5200 assert!(TypeEffectiveness::NotVeryEffective.point() >= TypeEffectiveness::NoEffect.point());
5201 }
5202}