COLOR(#006852){昔、トーナメント表を自動作成するプログラムをつくろうと分析していて気付いたことですが、トーナメント表の順位を表す数値は面白い数列をなしています。周りに話しても、あまり真剣に受け取ってもらえなかったのですが、ここでなら考えてもらえるかと思いました} COLOR(#006852){ここで、順位のつけ方の確認をします。例えば8人の場合、左端を1として、反対の右端が2、そして中央にきて2の向かいが3、1の向かいが4。以下4の相手が5、3の相手が6、2の相手が7、1の相手が8となります。} CENTER:''1, 8, 5, 4, 3, 6, 7, 2'' COLOR(#006852){以下9人以上増えていっても順次下位のものから対戦相手としていけばいい訳です。} COLOR(#002587){そこで、数学的にはっきりさせて、n人のトーナメントのk番目の位置にある番号はいくつか。ただし、nは2の自然数乗であるとします。本当は一般化したほうがいいのですが・・・。} COLOR(#006852){たぶん、プログラムと相性はいい筈です。なお、今日初めてここにカキコしてみました、悪い点があったら指摘してください。木村} COLOR(#fe891c){悪い点なんてとんでもない。この問題は何度かいろんな人に相談を受けたりしましたね。懐かしい。吹奏楽だとトーナメントはないので、多分に他の人経由ですね。最近はエクセルで組んであるようなものも多いようです。面白いのはいろんな競技で「別々に」作っているところです。何故でしょう?僕にはそちらのほうが気になります。一つで良いと思うのだけど。} COLOR(#006789){質問です。勝負事にうといのでよく分からないのですが,トーナメント表というのは ''2のべき乗数+半端'' というふうにエントリー数を区分けしておいて,その前者で例の二股山を作っておいて,それに半端のやつを割り込ませて1回戦からの対戦ペアと2回戦からのシードチームを作るんですよね?で,その中にくじ引きでランダムにチームをあてはめる。---というイメージしかないのです。だから,「順位の付け方」というのが存在するということがよく分かりません。} COLOR(#006852){それではその半端というのはどうするのがいいか考えてみてください。例えば3人の場合、2人だけ1回戦があるのですが、3位はあたりまえとして、その相手は2位がそうなるのが自然ですよね。この様に順次適用していけば自然と順位のつけ方が存在するのです。} COLOR(#006789){ははあ,もう試合前から順位が全チームについているんですか!試合前は全員同資格だろうと思っていたのです。なるほど話しの筋はなっとく。しかしそういうものなんですかね,うーむ。強いやつは最初から優位に置かれるというのは、おいらの哲学に反するぞ。} COLOR(#006789){商売柄ツリーやヒープの構成の手順が頭に浮かんでくるのですが,ちょっと仕事中で余裕なし。あとで考えよう。} COLOR(#fe891c){二つセットで内向き外向き、和が%%2の累乗%%2の累乗+1ですね。あとは枝を入れていくだけ。付け加える場合も和を基準に相方を探索ですね。} COLOR(#006852){プログラムと相性はいい筈、というのは表現が遠すぎましたか。はっきりいうと、2進法で考えるとおもしろいです。} COLOR(#006789){ふー。寸暇を%%惜しんで%%盗んでの書き込みだぜ。ようするに、} CENTER:'' 0, 7, 4, 3, 2, 5, 6, 1'' CENTER:'' 000, 111, 100, 011, 010, 101, 110, 001'' COLOR(#006789){って書いてみたらあとは一気なんじゃじゃない?って暗示したいわけね。} COLOR(#fe891c){やっと一息。その間に、(Lispな人向け?)} SIZE(11){CENTER:'' (1 2) ''} SIZE(11){CENTER:'' ( (1 4) (3 2) ) ''} SIZE(11){CENTER:'' ( ( (1 8) (5 4) ) ( (3 6) (7 2) ) ) ''} SIZE(11){CENTER:'' ( ( ( (1 16) (9 8) ) ( (5 12) (13 4) ) ) ( ( (3 14) (11 6) ) ( (7 10) (15 2) ) ) ) ''} COLOR(#fe891c){こうかな?話を戻しているのかも。てなことないかあ。二進法のほうが見やすいのかなあ?うーんわからん} COLOR(#006789){平たく置いちゃだめです(一撃当て逃げフォロー)。} ---- |RIGHT:''0''| |RIGHT:''1''| ---- |RIGHT:''00''| |RIGHT:''11''| |RIGHT:''10''| |RIGHT:''01''| ---- |RIGHT:''000''| |RIGHT:''111''| |RIGHT:''100''| |RIGHT:''011''| |RIGHT:''010''| |RIGHT:''101''| |RIGHT:''110''| |RIGHT:''001''| ---- COLOR(#fe891c){駄目ですか。うーむ。LispのList型だと、中途半端な数のときに、何処に入れればよいかとともに、どちら側に入れればよいかもよくわかるのですけど?2進法の場合は、、、さてりさてり。っとそうかあ、0101なんですね。あはあ。うふう。} COLOR(#006852){1ひいて2進数、さすがです。で2個セットになっているので、1つおきに考えて、000,100,010,110、見えてきましたかね。初めて見つけたときはうれしかったです。} COLOR(#006789){シリーズをもうひとつだけやってみましょうか。} ---- |RIGHT:''0000''| |RIGHT:''1111''| |RIGHT:''1000''| |RIGHT:''0111''| |RIGHT:''0100''| |RIGHT:''1011''| |RIGHT:''1100''| |RIGHT:''0011''| |RIGHT:''0010''| |RIGHT:''1101''| |RIGHT:''1010''| |RIGHT:''0101''| |RIGHT:''0110''| |RIGHT:''1001''| |RIGHT:''1110''| |RIGHT:''0001''| ---- COLOR(#006789){こいつはなかなか美しいですね。なにが美しいかというと,4列それぞれに現れる繰り返しパターンに見られる対称性です。たとえば,8行目と9行目に間に鏡を立ててみて,上下のパターンを見ると,1,2,3列目は対称で4列目だけ反対称だ。つぎに4行目と5行目の間,12行目と13行目の間に鏡を立ててみると,1,2行目は対称で3,4行目は反対称。・・・。ただしここで,対称とか反対称とかいっているのは} CENTER: 01|10 CENTER: 10|10 COLOR(#006789){のようなものをいいます。向きが横向きで申し訳ないですが,上が対称で下が反対称とみなすのです。どうです,美しい構造じゃありませんか。}