ノート:Tournamentのソースを表示
←
ノート:Tournament
移動:
案内
、
検索
あなたには「このページの編集」を行う権限はありません。理由は以下の通りです:
この操作は、以下のグループに属する利用者のみが実行できます:
登録利用者
。
ページの編集を始める前にメールアドレスの確認をする必要があります。
個人設定
でメールアドレスを設定し、確認を行ってください。
このページのソースの閲覧やコピーができます:
local p = {} function border(x,y) if x == y or (x == '<>' and (y == '<' or y == '>')) then return '4px solid red' else return '2px solid gray' end end local th2 = '<tr style="height:0.5em">' function th1(x) return th2..'<th rowspan="2" style="text-align:right;border-bottom:4px solid transparent">'..x..'</th>' end function td(n1, n2, n3, n4, bye1, prv1, bye2, prv2, top, cur, btm, note) local colspan1 = '' local colspan2 = '' if bye1~=nil then colspan1 = '" colspan="'..(bye1 * 4 + 1) end if bye2~=nil then colspan2 = '" colspan="'..(bye2 * 4 + 1) end return { '<td rowspan="'..n1..colspan1..'" style="border-bottom:'..border('<',prv)..'"></td>'.. '<td rowspan="'..n1..'"></td>'.. '<td rowspan="'..n1+n2..'" style="vertical-align:bottom;">'..top..'</td>', '<td rowspan="'..n2+n3..'" style="text-align:right">'..note..'</td>'.. '<td rowspan="'..n2..'" style="border-right:'..border('<',prv)..'"></td>'.. '<td rowspan="'..n2..'"></td>', '<td rowspan="'..n3..'" style="border-right:'..border('>',prv)..'"></td>'.. '<td rowspan="'..n3..'" style="border-top:'..border('<>',prv)..'"></td>'.. '<td rowspan="'..n3+n4..'" style="vertical-align:top;border-top:'..border('<>',prv)..'">'..btm..'</td>', '<td rowspan="'..n4..colspan2..'" style="border-top:'..border('>',prv)..'"></td>'.. '<td rowspan="'..n4..'"></td>' } end function td2(x,y) return '<td rowspan="'..y..'" colspan="'..(x*4)..'"></td>' end function p.main(frame) local args = frame.args local t = {} local data = { [0] = {} } local i = 1 while args[i] ~= 'result' do data[0][i] = {top = 1, btm = 1} t[2*i-1] = th1(args[i]) t[2*i] = th2 i = i + 1 end local nTeam = i - 1 i = i + 1 local rnd = 1 local cur = 1 local prv = 1 local row = 1 data[1] = {} while args[i] ~= nil do if args[i] == 'bye' then data[rnd][cur] = data[rnd-1][prv] data[rnd][cur].nBye = (data[rnd-1][prv].nBye or 0) + 1 prv = prv + 1 row = row + data[rnd][cur].top + data[rnd][cur].btm elseif data[rnd-1][prv+1] == nil then data[rnd][cur] = data[rnd-1][prv] data[rnd][cur].nBye = (data[rnd-1][prv].nBye or 0) + 1 prv = prv + 1 row = row + data[rnd][cur].top + data[rnd][cur].btm i = i + 1 else local prv1 = data[rnd-1][prv].top local prv2 = data[rnd-1][prv].btm local prv3 = data[rnd-1][prv+1].top local prv4 = data[rnd-1][prv+1].btm local cur1 = prv2 + prv3 if prv2 > prv3 then cur1 = (cur1 + (cur1 % 2)) / 2 else cur1 = (cur1 - (cur1 % 2)) / 2 end local cur2 = (prv2 + prv3) - cur1 data[rnd][cur] = {top = cur1, btm = cur2, res = args[i+1]} local temp = td1( prv1, cur1 - prv1, prv1 + prv2 + prv3 - cur1, cur1 + cur2 - prv1 - prv2 - prv3, data[rnd-1][prv].nBye, data[rnd-1][prv].res, data[rnd-1][prv+1].nBye, data[rnd-1][prv+1].res, args[i], args[i+1], args[i+2], args[i+3] ) t[row] = t[row]..temp[1] t[row+prv1] = t[row+prv1]..td2(data[rnd-1][prv].nBye,prv2)..temp[2] t[row+prv1+prv2] = t[row+prv1+prv2]..td(data[rnd-1][prv+1].nBye,prv3) t[row+cur1] = t[row+cur1]..temp[3] t[row+prv1+prv2+prv3] = t[row+prv1+prv2+prv3]..temp[4] row = row + cur1 + cur2 i = i + 4 end if row == nTeam * 2 + 1 then rnd = rnd + 1 cur = 1 prv = 1 row = 1 data[rnd] = {} else curr = curr + 1 end end local text = '' for i = 1, nTeam * 2 do text = text..'<tr style="height:0.5em">'..t[i]..'</tr>' end return text end return p
ノート:Tournament
に戻る。
案内メニュー
個人用ツール
18.119.157.134
このIPアドレスのノート
ログイン
名前空間
ページ
ノート
変種
表示
閲覧
ソースを表示
履歴表示
操作
検索
案内
メインページ
全カテゴリ
カテゴリ未導入のページ
利用者の投稿記録
最近の更新
特別ページ一覧
ヘルプ
新規作成
新しい記事
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報