プログラマメモ2 - programmer no memo2

たとえば,ダーツマシンのPHOENIXのカウントアップの平均値からレーティングを求めてみたら。 2008/06/29
2008/07/01

最近、ダーツにはまっています。うまくなりたいのですが、なかなか上達しません。



僕がプレイしているダーツマシンはフェニックスというマシンです。
ダーツの上達具合でいろいろとクラス分けされています。

カウントアップというゲームで、平均のスコアからPPD(points per darts dart)を求めて、どれぐらいの平均でクラスがわかるか計算してみました。
どうでしょ、あたってますかね。もちろん、目安としてね。



ave:100 RATING:1 CLASS:C1 PPD:4.167
ave:288 RATING:2 CLASS:C2 PPD:12.000
ave:336 RATING:3 CLASS:CC3 PPD:14.000
ave:384 RATING:4 CLASS:CC4 PPD:16.000
ave:432 RATING:5 CLASS:B5 PPD:18.000
ave:480 RATING:6 CLASS:B6 PPD:20.000
ave:528 RATING:7 CLASS:BB7 PPD:22.000
ave:576 RATING:8 CLASS:BB8 PPD:24.000
ave:624 RATING:9 CLASS:A9 PPD:26.000
ave:672 RATING:10 CLASS:A10 PPD:28.000
ave:720 RATING:11 CLASS:AA11 PPD:30.000
ave:768 RATING:12 CLASS:AA12 PPD:32.000
ave:816 RATING:13 CLASS:AA13 PPD:34.000
ave:864 RATING:14 CLASS:AA14 PPD:36.000
ave:912 RATING:15 CLASS:AAA15 PPD:38.000
ave:960 RATING:16 CLASS:AAA16 PPD:40.000


Bフライトになるためには、大体カウントアップで平均が、432点ないといけないようです。
つぎにAフライトになるためには、平均624点
※もちろん実際のクラス分けは、カウントアップでなされるわけではないです。

以下、プログラム

package d;

import java.util.TreeMap;

public class TestDarts1 {

static class CLASS {
final static String[] CLASS = { "C", "C", "CC", "CC", "B", "B", "BB",
"BB", "A", "A", "AA", "AA", "AA", "AA", "AAA", "AAA" };

protected int R;
protected double ppd;
protected String s;

static CLASS CREATE(double ppd) {

CLASS class1 = new CLASS();
int base = 10;
class1.ppd = ppd;
ppd -= base;

if (ppd < 0) {
class1.R = 1;
class1.s = CLASS[0];
return class1;
}
int p = (int) (ppd / 2);
if (16 <= p) {
class1.R = 16;
class1.s = CLASS[15];
return class1;
}
class1.R = p + 1;
class1.s = CLASS[p];
return class1;

}

private CLASS() {

}

public int getRATING() {
return R;
}

public String getCLASS() {
return s + R;
}

public String toString() {
return String.format("RATING:%d CLASS:%s PPD:%.3f", R, getCLASS(),
ppd);
}
}

public static void main(String[] args) {

a();

}

static void a() {

TreeMap<Integer, CLASS> hashMap = new TreeMap<Integer, CLASS>();
double darts = 8 * 3;
final int ave = 100;
for (int i = ave; i < ave + 1000; i++) {
double ppd = i / darts;
CLASS class1 = CLASS.CREATE(ppd);
if (!hashMap.containsKey(class1.getRATING())) {
hashMap.put(class1.getRATING(), class1);
System.out.println("ave:" + i + " " + class1);
}
}

}

}

: