PHP,90字节
输入格式'[1,24]'在1到24之间
在这个挑战中,我讨厌PHP为什么不能与其他语言相对比。我更喜欢展示我所有的想法。也许另一个PHP Crack可以找到一个更短的解决方案。
<?list($f,$g)=$_GET[b];for($i=$f;$i-1!=$g|$f>$g&!$c;$s+=$i++%12?:12)$i<25?:$c=$i=1;echo$s;
99字节
<?for($i=($b=$_GET[b])[0],$c=($d=$b[1]-$b[0])<0?25+$d:$d+1;$c--;$s+=$i++%12?:12)$i<25?:$i=1;echo$s;
最大值和最小值分别为113字节
<?for($i=min($b=$_GET[b]);$i<=$m=max($b);)$s+=$i++%12?:12;echo($b[0]>$b[1])?156-$s+($m%12?:12)+($b[1]%12?:12):$s;
还好这个疯狂的想法时用一个阵列149个字节填充阵列$y[0]
和$y[1]
如果$_GET["b"][0]<=$_GET["b"][1]
,如果$y[1]
是null
我们可以总结这个数组array_diff_key($y[0],array_slice($y[0],$b[1],$b[0]-$b[1]-1,1))
<?for(;++$i<25;)$y[$i>=($b=$_GET[b])[0]&$i<=$b[1]][$i]=$i%12?:12;echo array_sum($y[1]??array_diff_key($y[0],array_slice($y[0],$b[1],$b[0]-$b[1]-1,1)));
这可以打倒124字节
<?for(;++$i<25;)$x[($v=($b=$_GET[b])[0]>$b[1])?$i<$b[0]&$i>$b[1]:$i>=$b[0]&$i<=$b[1]][$i]=$i%12?:12;echo array_sum($x[!$v]);
现在,在这一点上,我们可以只用两个int 101 Bytes来简化数组,求2 $x[0]
和$x[1]
list($f,$g)=$_GET[b];
如果$v=($f>$g
然后将值添加到$x[$i<$f&$i>$g]
其他值,$x[$i>=$f&$i<=$g]
则将根据情况找到输出的值echo$x[!$v];
<?list($f,$g)=$_GET[b];for(;++$i<25;)$x[($v=$f>$g)?$i<$f&$i>$g:$i>=$f&$i<=$g]+=$i%12?:12;echo$x[!$v];
之后,我找到了一种直接计算结果的方法112字节
<?list($x,$y)=$_GET[t];echo(($b=$x>$y)+(($x-($s=$x%12?:12)^$y-($t=$y%12?:12))xor$b))*78-($s*($s-1)-$t*($t+1))/2;
递归103字节
<?list($x,$y)=$_GET[t];function f($x,$y){return($x%12?:12)+($x-$y?f(++$x<25?$x:1,$y):0);}echo f($x,$y);