OPTIMAL_IVS( [Species], [HidPow_Type], [set_HP], [set_Atk], [set_Def], [set_SpA], [set_SpD], [set_Spe] ) = let(
[array {h, a, d, c, e, s}], { [set_HP], [set_Atk], [set_Def], [set_SpA], [set_SpD], [set_Spe] },
[array { [base stats }] , [lookup base stats],
[array { hv, av, dv, cv, ev, sv }], [formula I wrote somewhere that calculates total IVs & EVs to obtain the target stats that even optimizes nature, distributes remaining EVs, & readjusts the build if the hidden power is changed],
av, index( [^], 2 ), dv, index( [^], 3 ), cv, index( [^], 4 ), ev, index( [^], 5 ), sv, index( [^], 6 ),
phys_types, { "fig", "fly", "poi", "gro", "roc", "bug", "gho", "ste" },
spec_types, { "fir", "wat", "gra", "ele", "psy", "ice", "dra", "dar" },
hpt, iferror( iferror( match( left( [HidPow_Type], 3 ), phys_types, 0 ), - match( left( [HidPow_Type], 3 ), spec_types, 0 ) ), 0 ),
output, makearray( 6, 1, lambda( r, c, ifs(
hpt=1, if( r>2, 30, 31 ),
hpt=2, if( sv=94 , if( r<6, 30, 31 ), if( r>3, 30, 31) ),
hpt=3, if( or( r<3, r=6 ) , 31 , 30 ),
hpt=4, if( or( r<4, r=6 ) , 31 , 30 ),
hpt=5, if( or( r<3, r=4 ) , 31 , 30 ),
hpt=6, ifs( r=4 , 31, sv=94, if( or( r=1, r=6 ), 31, 30 ), 1, if( r>4, 30, 31 ) ),
hpt=7, if( or( r=if( av<dv, 2, 3 ), r=5 ) , 30 , 31 ),
hpt=8, if( ev=94 , if( or( r=1, r=5 ), 31, 30 ) , if( r=5, 30, 31 ) ),
hpt=-1, if( r=if( av=94, 3, 2 ), if( av<31, 2, 30 ), if( isodd( r ), 31, 30 ) ),
hpt=-2, ifs( or( r=1, r=5 ), 31, or( av=94, dv=94 ), if( r<4, 31, 30 ), 1, if( r=6, 31, 30 ) ),
hpt=-3, ifs( r=4, 30, r=if( av=94, 3, 2 ), if( av<31, 2, 30 ), 1, 31 ),
hpt=-4, if( cv=94, ifs( r=2, if( av<31, 2, 30 ), or( r=3, r=6 ), 30, 1, 31 ), ifs( r=2, if( av<31, 3, 31 ), r=4, 30 , 1, 31 ) ),
hpt=-5, ifs( r=6, 30, av>dv, if( r=3, 30, 31 ), 1, if( r=2, if( av<31, 2, 30 ), 31 ) ),
hpt=-6, ifs( and( av<31, dv=94 ), ifs( r=2, 3, r=6, 30, 1, 31 ), sv=94, ifs( r=2, if( av<31, 3, 30 ), r=3, 30, 1, 31 ), 1, if( r=6, 30, 31 ) ),
hpt=-7, if( r=if( av=94, 3, 2 ), if( a<31, 2, 30 ), 31),
hpt=-8, if( r=2, if( av<31, 3, 31 ), 31 ) ,
(av<31)*(r=2), 0,
1, 31 ) ) ), output )