PHP、90バイト
1〜24の入力形式 '[1,24]'
この挑戦において、PHPが他の言語に対して緩んでいる理由が嫌いです。私はすべてのアイデアを表示することを好みます。他のPHPクラックがより短い解決策を見つけたのかもしれません。
<?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]);
この時点で、2つの整数だけで配列を減らすことができます101バイト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);