FC2ブログ

チラシの裏

 

--.--.--[--] スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
    --:--  Top

2009.09.19[土] How to 団体戦 4回目

最初にイメージを張っておきます。

まずEIDの合計ですがこのような数式を使っています。
=SUM(INDEX(Sheet2!A$1:A$52,(ROW(A2)-2)*3+2,1),INDEX(Sheet2!A$1:A$52,(ROW(A2)-2)*3+3,1),INDEX(Sheet2!A$1:A$52,(ROW(A2)-2)*3+4,1))

Sheet2には前回の奴が入っています。
並び変え後←Sheet2
ROW関数を使って1行下がるごとに3ずつ上がる値を作り、それを利用してINDEX関数でエントリーナンバーを参照しSUMで足しています。
EID^2の合計は
=SUM(INDEX(Sheet2!A$1:A$52,(ROW(A2)-2)*3+2,1)^2,INDEX(Sheet2!A$1:A$52,(ROW(A2)-2)*3+3,1)^2,INDEX(Sheet2!A$1:A$52,(ROW(A2)-2)*3+4,1)^2)
です。チーム名1~3は以下のよな数式です。
=INDEX(Sheet2!$A$1:$D$52,(ROW(B2)-2)*3+COLUMN(B2),4)
ROW関数とCOLUMN関数を利用し、一列右に行くごとに1、一行下がるごとに3上昇する値を作り、横一列にそれぞれのチームに所属する機体のチーム名を表示しています。
チーム名は左のチーム名1~3を見ながら適当につけます。ここでも半角文字を使わないように注意しましょう。上にあげたものではアルファベット3文字で代用しています。
オーナー名は以下のようになっています。
=MID(INDEX(Sheet2!A$1:C$52,(ROW(B2)-2)*3+2,3),1,3)&"&"&MID(INDEX(Sheet2!A$1:C$52,(ROW(B2)-2)*3+3,3),1,3)&"&"&MID(INDEX(Sheet2!A$1:C$52,(ROW(B2)-2)*3+4,3),1,3)
基本的にはEIDの合計と同じです。INDEX関数で引っ張ってきた文字列から、MID関数で最初の3文字を抽出し、それを&でくっつけています。ここで注意する点はダブルコーテーションマークで囲まれた&は全角という点です。もちろんオーナー名の中に半角の文字を混ぜないためです。配置はこのようになっています。
=IF(INDEX(Sheet2!A$1:F$52,(ROW(I2)-2)*3+2,5)="前","2,",IF(INDEX(Sheet2!A$1:F$52,(ROW(I2)-2)*3+2,5)="中","5,","8,"))&IF(INDEX(Sheet2!A$1:F$52,(ROW(I2)-2)*3+3,5)="前","1,",IF(INDEX(Sheet2!A$1:F$52,(ROW(I2)-2)*3+3,5)="中","4,","7,"))&IF(INDEX(Sheet2!A$1:F$52,(ROW(I2)-2)*3+4,5)="前","3",IF(INDEX(Sheet2!A$1:F$52,(ROW(I2)-2)*3+4,5)="中","6","9"))
やっていることは基本的に同じです。INDEX関数で引っ張ってきた文字に対し、IF関数でそれぞれ数字を割り当てます。もちろん上記のものは従来の指定方法に対応したものなので、上にあげたイメージではすべて後列配置となっています。(前でも中でもない文字は後としているから)
コピペ用は以下のようになっています。
=G2&","&H2&","&I2
つまり前3つをカンマを入れつつ繋げただけです。ここはCHXのチーム編集コマンド形式での出力です。後は確認用です。
初めの3つは
="【"&INDEX(Sheet2!$A$1:$A$52,(ROW(B2)-2)*3+COLUMN(B2),1)&"】"&INDEX(Sheet2!$A$1:$B$52,(ROW(B2)-2)*3+COLUMN(B2),2)
後の3つは
=INDEX(Sheet2!$A$1:$E$52,(ROW(B2)-2)*3+COLUMN(B2),5)
という感じです。ここまで済んだらコピーし、別のシートに値のみ貼り付け、A列>B列の優先度で昇順に並び変えます。これでチームがエントリーナンバー順に並びます。
あとちょっと

チームデータ作成に入ります。確認のエントリーナンバーとファイルネームを参考に、順番通りにCHXに3ファイル読ませて、チーム編集コマンドにコピペ用をコピペします。新しいファイルネームはチームのエントリーナンバーにするといいでしょう。補充チームの入ったチーム以外の作成が完了したらJupiterをチェックします。追加エントリーを確認し、なければスレで追加エントリーを閉め切る旨を書きこみましょう。前回団体戦の機体を使う場合RANDBETWEEN関数を使って補充チームを決定します。補充チームが入ったチームのデータも作成し、エクセルのデータをスレへ貼り付けるために成形します。
完成

成形したらテキストエディタへコピペし、タブを半角スペースに置換してスレに書き込みます。
団体戦特有の処理はここまでです。ということで一応これで終わり。続きはまた気が向いたら
スポンサーサイト

2009.09.18[金] How to 団体戦 3回目

予告通り正規表現の説明から。といってもググればいくらでも出てくるので、例示するだけにとどめます。
まず"■.*?\r\n\S*?:(半角スペース)*"と"■.*?\r\n\S*?:(全角スペース)*"ですが、これは

■第8回団体戦
ファイル名:

この部分を表しています。上記の2つでコロンの後に全角または半角スペースがあっても対応可能になっています。"\r\n\S*?:(半角スペース)*"と"\r\n\S*?:(全角スペース)*"ですが、これは

(改行)
XXXXX:

というパターンを表しています。つまり前回あげた2つの置換で

■第8回団体戦
ファイル名:MOA.CHP
オーナー名:MOA
チーム名:べいびーベイビーBABY
機体名:拠点強襲Mis†rÅL§
希望位置:789
コメント:
対空ルーチンを改良した感じです。
あんまり変わらないのですが、手持ちの中で一番足引っ張らなそうなので…。

これが

MOA.CHP(タブ)MOA(タブ)べいびーベイビーBABY(タブ)拠点強襲Mis†rÅL§(タブ)789(タブ)
対空ルーチンを改良した感じです。
あんまり変わらないのですが、手持ちの中で一番足引っ張らなそうなので…。

こうなります。これをタブが存在する行だけ抜き出すので、

MOA.CHP(タブ)MOA(タブ)べいびーベイビーBABY(タブ)拠点強襲Mis†rÅL§(タブ)789(タブ)

となるわけです。ここから前回の続きに入ります。前回の終了時点では以下のような感じでした。
VLOOKUPで検索したところ
ここまで来たら後は手作業です。「オーナー名がプレイヤーになっている」、「チーム名がチームXXになっている」、「希望位置がうまく抽出できていない」。このような所をCHPJupiterSearchを見ながら手で入力していきます。ここで気をつけるべきことはCHPのオーナー名、チーム名はすべて全角という点です。ここで半角で入力してしまうと、今回のように全角の中に半角が混ざり不格好に見えます。
ここまで終了したらブラウザでJupiterを開き、もう一度駆け込みエントリーを確認します。いなければテキストエディタにコピペして、タブを半角スペースに置換すればエントリー表の完成です。スレに張り付け追加エントリーを募集しましょう。

ここからチームの編成に入ります。まず適当な名前で補充チームのを仮置きをします。次にRAND関数を使ってそれぞれのチームに乱数を割り振ります。
RAND
次にRANK関数を使って割り当てた乱数の降順で並び変えた時の位置を求め、その数値を3で割りROUNDUPで小数点以下を切り上げます。
ROUNDUP
この数値がそれぞれの機体が所属するチームのIDです。
ここで30回ほど再計算をさせ乱数を変更します。これがチームを決めるので、あまり画面を見ないようにしましょう。適当なところで止め、別のシートにコピペします。このとき通常のペーストではなく値の貼り付けを使います。
値の貼り付け
これで、関数としてではなく数値として貼り付けられるので乱数が固定されます。貼り付けたらすべてのデータを選択し、並び変えとフィルタ>ユーザー設定の並び替えからH列>A列の優先度で昇順に並び変えます。
H列>A列

並び変え後
並び変え後

次はチームデータの作成準備です。

2009.09.17[木] How to 団体戦 2回目

いきなり飛びますが、データのダウンロードから。
ウィキにある通り、まずスレにこれからエントリー表の作成に入るということを書きます。
次にCHPJupiterSearchを使って適当なページ数を取得します。1ページ10ファイルなので15ページも取得すれば十分でしょう。取得したらコメントに"団体戦"を含むファイルを抽出します。告知の通り"■第X回団体戦"で抽出してもいいのですが、団体戦とだけ書かれる方もいるのでこちらを推奨します。
抽出したらアップロードされた順に、つまり下からダウンロードしていきます。後のことを考えると10ファイルごとぐらいでフォルダ分けすることをお勧めします。こんな感じ↓フォルダ
ダウンロード中に同じファイルが連続してあったら、ページ取得中にファイルの修正が入ったということなので取得しなおします。

データのダウンロードが終了したらそれぞれのフォルダで更新日時昇順でソートします。
更新日時昇順でソート

更新日時=ダウンロード日時なので、これでダウンロード順(=エントリー順)にソートできます。ダウンロード中に何らかのアクシデントがあった場合は手作業でエントリー順に並び替えてください。
これがすんだらCHPJupiterSearchでページを取得しなおします。取得が終了したら下から1ファイルずつファイル名を突き合わせて、ダウンロード漏れがないか、順番はあっているかを確認します。もちろん駆け込みのエントリーも確認します。

これが終了したらエントリーデータの作成に入ります。ここではCHXを使った方法を紹介します。
まずCarListのロングモードで適当に全体の様子をながめます。
01-30
No1~30のチームです。シルバー・ライオットさんのファイルに余分なチームが入っているのがわかります。浸透襲撃さんのファイルにも空チームが入っていますが、CHXは空チームを認識しないので問題ありません。
31-50
No31~50のチームです。DM3さんのファイルには3機入ったチームが入っていることがわかります。こういった例外的処理を行わなければならないチームのことを頭の片隅に入れておきましょう。

ざっと把握したらCHXにCHPファイルを取り込ませます。ソートした状態ですべて選択し、D&Dすればその並び順を保ったまま読んでくれます。しかし一応確認しておきましょう。CarListで確認した余分なチームは削除します。

CHX1
すべてのチームを選択し、ファイル名、チーム名、オーナー名、機体名称を表示させた状態ですべて選択しコピーします。
テキストエディタ(ここではEmEditorですが、メモ帳でも出来ます。が、後のことを考えれば多機能なテキストエディタがあったほうがいいです。)にペーストし、半角スペースをタブに置換。タブはコピペで持ってくるか、正規表現をオンにして\t

置換前
置換前
置換後
置換後

ここで押さえておくべきことはチーム名、オーナー名、機体名称に使われる文字はすべて全角ということです。つまりこれ以降もデータ同士の区切りを半角スペースとすることで、チーム名などに含まれる全角スペースと区別できます。

置換したら表計算ソフトへコピペします。以降エクセルで説明します。
ペーストしたらまずNoが入っている列(普通はA列)を選択し、書式設定→ユーザー定義から表示形式を00にします。
00と入力する←00と入力
これで、1,2,3から01,02,03という表示に変わります。

表示形式を変更したら不要な列("("が入っている列など)を削除し、並び順も都合がいいように変更します。
前before
後after

ここまで終わったら希望位置の収集をします。
まず、スレから■第X回団体戦でレスを抽出します。
レス抽出

抽出したらテキストエディタにコピペし、適当な名前を付けて保存してください。
このテキストファイルに対して、あらかじめ保存しておいた計画に沿って段階的置換を自動で行ってくれる「Repl-Ace」のようなソフトで複数の置換を行います。Repl-Aceを使用する場合、Microsoft .NET Frameworkを使用することでUnicodeに完全対応した「Repl-Ace on .NET」もありますが、Unicodeは使わないので動作が軽い旧型のほうがお薦めです。
まず、正規表現をオンにして"■.*?\r\n\S*?:(半角スペース)*"と"■.*?\r\n\S*?:(全角スペース)*"を""に置換(つまり削除)します。次に"\r\n\S*?:(半角スペース)*"と"\r\n\S*?:(全角スペース)*"を"\t"に置換します。置換が完了したらgrepperなどでタブを含む行を抽出します。

抽出が完了したら先ほどの表計算ソフトに数列開けてコピペします。ペーストしたらVLOOKUP関数を使いCHXからの出力に合わせます。

VLOOKUPで検索したところ
ここまで終えるとこんな感じです。左がCHXからのデータ、右がスレからのデータです。エラーが出ているのはスレでエントリー表明をしてない方か、書式がこちらの想定した通りではなかった方です。

とりあえずここまで。
次は置換する際の正規表現の説明からの予定

2009.09.16[水] オタワ\(^o^)/

Wikiの編集も一通り終わり。
まだ直すべきところがありますが、見る人も対していないのでとりあえず結果が分かればいいということにします。

団体戦を主催してみて思ったのは大会運営のノウハウが蓄積されていないということ。
もちろん補助ツールを作成してくださっている方がいますが、自分でやらなければいけないこともそれなりにあります。ということでハウツー的なことをまとめてみます。

これからいくつかのフリーソフトの名前が出てきますが、これは自分が使ったものです。同じことができるソフトなら違うソフトでもかまいません。

まず主催するにあたってしなければいけないのはトリップの決定です。
2ch専用ブラウザ(ここではJane Style)の書き込みウィンドウを開いて適当にトリップキーを入れます。(ここでは1234)
トリップ#1234
そしてプレビュータブで実際に表示される文字列を確認します。(ここではtr.t4dJfuU)
トリップ#1234プレビュー
この文字列をコピペしてググります。
トリップ#1234google
20700件ヒットします。つまりこのトリップキーは既に使われているので不適切です。
他のトリップキーを試します。(画像略)
#I5bS7rfcだとトリップは◆klKfHvaNqsになります。
これをググると
トリップ4
何も出ません。これは使えます。トリップを決定したら忘れないように保存しておきましょう。
トリップ5
もちろんこれはあまり好ましい行為ではありませんが、マイナーなゲームなのでそこまで気を使う必要はないでしょう。

告知についてはウィキにまとめがありますので割愛します。

次にリプレイデータ保存用の場所を作ります(団体戦のみ)。特別な理由がなければ先達にならってdrop.ioを使いましょう。
dropio1
drop nameも特別な理由がない限りchpdantai(番号)としましょう。
この状態でCreate A Dropをクリックすると空のdropを作成することができます。
パスワードの入力を求められるので適当に設定します。これも忘れないように保存します。面倒ならトリップキーと同じにしましょう。また、スムーズにリプレイデータをアップロードできるようにブックマークしておくとよいでしょう。
dropio2
右上にあるAdmin log inからログインします。(作成直後は初めからログインしているかもしれません。どちらだったか忘れてしまいました。)

dropio3
ログインしたら同じ場所にあるSettingsから設定画面に行きます。


dropio4
Guest Permissionsから一般ユーザーのアクセス権設定画面に行き


dropio5
guests can deleteのチェックをはずしSave Settingsをクリックします。
これで一般ユーザーにはデータの消去ができなくなりました。
これを行うのは、あらし対策のためです。

とりあえず今日はここまで。
Pagetop
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。