枠番の問題、また別の解

| Comment(0)

以前、枠番の求め方について書いたところ(ここ)、いくつか回答(これ)を頂いた。

さらにもう1つ増えました。
最近(といってももう何年だ?)perlを使っているS賀さんから。


##### その1:最大18頭 #####
for ($n=1; $n<=18; $n++)
{
 for ($i=1; $i<=$n; $i++)
 {
  if ($i<=16-$n){printf("%2d ", int($i+0.99));} # int()は切り上げているだけ
  elsif ($n<=24-$i/2)
  {
   if ($n<=16){printf("%2d ", int(8-($n-$i)/2+0.99));}
   else{printf("%2d ", int($i/2+0.99));}
  }
  else{printf("%2d ", int(8-($n-$i)/3+0.99));}
 }
print "\n";
}


##### その2:上限なし #####
$max=18; # 18より大きい数字でもよろしくてよ
for ($n=1; $n<=$max; $n++)
{
 for ($i=1; $i<=$n; $i++)
 {
  if ($n<=16-$i){printf("%2d", int($i+0.99));} # int()は切り上げているだけ
  else
  {
   $k=int(($n-1)/8);
   if ($n<=($k+1)*8-$i/$k){printf("%2d", int($i/$k+0.99));}
   else{printf("%2d", int(8-($n-$i)/($k+1)+0.99));}
  }
 }
print "\n";
}


これ、実は結構短くていいんじゃね?

。。。0.99の理由が判ってないのは私だけですかそうですか。

コメントする

Recent entries

GW中にサーバ移転予定
coreserverに移動するつもり。…
weightsとequipment
現在完了って結局今やってんのかやってない…
ああ、エイプリルフールだったのに
まだ嘘ついてないよ。 今日の曲 【UTA…