。。。カテゴリへの突っ込みはなしで。
競馬では、枠(brackets)が8つあり、その中に馬が入る。
馬は最大18頭出走し、それぞれに馬番がついている。(過去はもっと多かったらしいけど)
出走馬の数が9頭以上の場合、外枠(8枠)から頭数が増える。
例:10頭立ての場合
枠 - 馬
1 - 1
2 - 2
3 - 3
4 - 4
5 - 5
6 - 6
7 - 7
7 - 8
8 - 9
8 - 10
さて、ここで。
馬番iの枠番を求める関数brackets(i)を書きなさい。
。。。多少問題を変更。
頭数Nが与えられたときに、馬番 0 < i < = N で枠番を求める関数brackets(i)を作成しなさい。
思いついたら追記される予定。
つか誰か考えて。
いまのところ、逆からスタック積むといいんじゃね?という気持ち。
θ関数(ヘビサイド関数)は使ってもいいんでしょうか。
大丈夫です。何でもありです。
見た目に美しいことが最大のポイントです。
美しいとはとても言いがたいのですが・・・。
N=8p+r(0=<r<8)とします。r=mod(N,8)とも書けます。
0<i<=p(8-r)のとき、
b(i)=1+{(i-1)-mod(i-1,p)}/p
p(8-r)<i<=Nのとき、
b(i)=1+[(i-1)+(8-r)-mod{(i-1)+(8-r),p+1}]/(p+1)
でとりあえずはOKかと。
両式を統合するのにθ関数を使えばできなくはないですが、見苦しいのでやめました。
もっとエレガントにできんもんかなあ。。。
なんかたまに検索に引っかかってるようなので、貰った回答の一覧はこちらで
http://www.yr-gamblers.net/notes/2006/07/22195225.html