scarlet_queen_fitness/
effective.rs

1use scarlet_queen_core::pokemon_type::PokemonTypeTrait;
2
3use crate::pokemon_type::FitnessPokemonType;
4
5// タイプ相性
6#[derive(Debug, Clone, Copy, PartialEq, Eq)]
7pub enum TypeEffectiveness {
8    // こうかバツグン
9    SuperEffective,
10    // (ふつうの相性)
11    Normal,
12    // こうかはいまひとつ
13    NotVeryEffective,
14    // こうかなし
15    NoEffect,
16}
17
18impl TypeEffectiveness {
19    // タイプ相性の行列
20    const EFFECTIVE_ARRAY: [[TypeEffectiveness; 19]; 19] = [
21        // PokemonType::None
22        [
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        // PokemonType::Normal
44        [
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        // PokemonType::Fire
66        [
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        // PokemonType::Water
88        [
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        // PokemonType::Electric
110        [
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        // PokemonType::Grass
132        [
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        // PokemonType::Ice
154        [
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        // PokemonType::Fighting
176        [
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        // PokemonType::Poison
198        [
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        // PokemonType::Ground
220        [
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        // PokemonType::Flying
242        [
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        // PokemonType::Psychic
264        [
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        // PokemonType::Bug
286        [
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        // PokemonType::Rock
308        [
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        // PokemonType::Ghost
330        [
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        // PokemonType::Dragon
352        [
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        // PokemonType::Dark
374        [
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        // PokemonType::Steel
396        [
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        // PokemonType::Fairy
418        [
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    // 攻撃側のタイプと防御側のタイプからタイプ相性を返す
442    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    // タイプ相性のチェック
472    #[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    // タイプ相性の得点
5178    // 具体的な得点に対するテスト
5179    // タイプ相性に割り当てる得点を変更したら変更する
5180    #[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    // タイプ相性の得点
5194    // 明らかに満たすべき条件についてのテスト
5195    // タイプ相性に割り当てる得点を変更しても変更しない
5196    #[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}