2024年3月24日開催 DDCC2024本戦は終了しました。

Q1:シミュレータ問題

問題文

装置を制御し、ターゲットの穴に玉を入れ得点を競う競技です。

シミュレータ問題では、実機を用いず、ジャッジサーバー上でシミュレーションを行って順位を決定します。このシミュレーションは装置の物理現象や部品・組立時の誤差を考慮しません。





  • テーブルの傾きと玉の射出方向と回転する棒を制御して、100秒以内に7カ所のターゲットの穴を狙って70個の玉を入れる競技です。
  • 装置制御時間は100秒です。
  • ターゲットの穴の個数は7個あります。
  • ターゲットに対して、入れる位置を宣言します。
  • 宣言したターゲットを以降コミットターゲットと呼びます。
  • 持ち玉は70個です。
  • 玉の大きさは直径13mmです。
  • 玉の質量は9gです。
  • 玉の初速は、テーブルの(0,0)位置で、500mm/secです。地面に対して水平方向に打ち出します。
  • テーブルを傾けるための上下機構をもつ軸が3軸あります。C軸・L軸・R軸です。
  • C軸・L軸・R軸の位置を表す値がすべて0のとき、テーブル上面は水平です。
  • C軸高さの条件は、C軸高さ ≥ (L軸高さ + R軸高さ) / 2 になります。
  • 回転する棒が4本あります。α軸・β軸・γ軸・δ軸です。
  • 各棒の回転角度の初期値は0度です。
  • 棒の中心線がX方向に対して平行な位置が0度位置です。
  • α軸・β軸・γ軸・δ軸の回転方向は、天井から見て時計回り方向が正の方向です。
  • 射出方向を制御するための旋回機構を持つθ軸があります。
  • 1回の軸動作で、C軸・L軸・R軸・θ軸・α軸・β軸・γ軸・δ軸は同時に動作し、距離に関わらず2000msかかります。
  • コミットターゲットの切り替わりは、軸動作の完了時です。
  • 但し、シミュレータでは、待ち時間(Wt)に達して、次の動作に入った場合、その時点で穴に落ちていない玉は無効になります。
  • 1個の玉を射出するのに必ず500msかかります。
  • 100秒までに射出された玉までが得点計算に使用されます。
  • 時間内(100秒)で、入った玉までが有効です。
  • ターゲットの穴に入ったかの判定は、穴のY座標を玉がYのプラス方向に通過する際に、穴の中心から半径の範囲に玉の中心が通過するかどうかで行います。
  • 穴に入る前にテーブル外に玉が落ちた場合もその時点でその玉は無効になります。
  • α軸・β軸・γ軸・δ軸の棒に当たった玉は、無効となります。
  • シミュレータ問題の場合は、玉の中心が棒の中心線を通過したらあたったと判定します。(図C参照)
  • 得点の計算方法
    • 玉が入った時の得点と付加得点の合計になります。
  • 玉が入った時の得点
    • コミットターゲットに1個入った場合に100点となります。
    • コミットターゲットに入った時の条件により付加得点が加算されます。
    • 各ターゲット1個に入れられる有効な玉数は1カ所あたり10個までです。
    • 11個目以降は無効になり、得点になりません。(付加得点も加算されません。)
    • コミットターゲット以外に入っても点数にはなりません。
  • 付加得点

  • 射出角度による得点
    • 設定した射出角度が得点となります。
    • 式: |θr|
    • 例: θr =-30.100°
    • |θr| =30.100° 得点は30.1点入ります。
  • テーブルの傾き X軸方向差による得点
    • L軸とR軸との差が得点になります。
    • 式: |Lh – Rh|
    • 例: Lh=1.000mm Rh=2.200mm
    • |1.000-2.200|=1.200  得点は1.2点となります。
  • テーブルの傾き Y軸方向差による得点
    • C軸から、L軸R軸の平均の差が得点になります。
    • 式: |Ch –( (Lh + Rh) / 2)|
    • 例: Ch= -1.000mm Lh=-10.000mm Rh=-12.000mm
    • |-1.000-( (-10.000 + -12.000) / 2 )|=10.000 得点は10点となります。
  • 回転する棒による得点
    • 射出位置(0,0)とコミットターゲットの中心位置(Xα,Yα)を通る直線Lに対し、回転する棒の中心位置から引いた垂線をLαとします。
    • 垂線Lαと回転する棒がなす角度を∠αとします。(ただし、0 <=∠α <=90) 同様に回転する棒β、γ、δについて∠β、∠γ、∠δを求めます。
    • 90 - max(∠α,∠β,∠γ,∠δ)が得点になります。

制約

  • 玉は剛体としテーブル上で滑らないものとし、以下の式に従うものとする。
  • 空気抵抗と転がり抵抗は考慮しないものとする。
  • 斜面を転がる剛体球の斜面方向の加速度

入力

  • 入力の値はすべて整数です。
  • 入力データファイルをダウンロードして解答してください。
  • テストケースは5問出題されます。
  • 値はmmで指定します。
x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 x6 y6 x7 y7 xα yα xβ yβ xγ yγ xδ yδ

-350 ≤ x1, x2, x3, x4, x5, x6, x7, xα, xβ, xγ, xδ ≤ 350
200 ≤ y1, y2, y3, y4, y5, y6, y7, yα, yβ, yγ, yδ ≤ 950

出力

  • 以下の出力形式で解答し、1問分の入力に対して、1 行以上30行以下で、装置の100秒間の動作を指定してください。
  • 合計所要時間が100 秒未満であったり100秒を超えるような動作指定を行ってもよいですが、時間切れ後は得点に数えません。
  • 1つの入力に対する出力の区切りとして、半角のセミコロン”;”をつけて回答してください。
Tn,Ch,Lh,Rh,θr,αr,βr,γr,δr,Nu,Wt
  • 順にコミットターゲット番号、C軸の高さ、L軸の高さ、 R軸の高さ、 θ軸の射出角度、α軸の角度、β軸の角度、γ軸の角度、δ軸の角度、射出する玉の数、 射出後の待ち時間です。(カンマを忘れないこと。)
  • C軸・L軸・R軸は、上方向が‘+’方向です。
  • これらは以下を満たす整数でなければなりません。
1 ≤ Tn ≤ 7 ターゲット番号
-5000 ≤ Ch ≤ 1000 単位: μm (= 1/1000 mm)
-25000 ≤ Lh, Rh ≤ 25000 単位: μm (= 1/1000 mm)
Ch ≥ (Lh + Rh) / 2
-45000 ≤ θr ≤ 45000 単位: 1/1000度
0 ≤ αr,βr,γr,δr ≤ 180000 単位: 1/1000度
1 ≤ Nu ≤ 70 単位: 個
0 ≤ Wt ≤ 60000 単位: ms

出力の補足

  • 以下の出力の場合は、コミットターゲット 1,C軸 1mm, L軸 -0.1mm, R軸 1.1mm, θ軸 12.1度,α軸 45度,β軸 100度,γ軸 5度,δ軸 10度,射出する玉の数 2個,待ち時間 1500ms
1,1000,-100,1100,12100,45000,100000,5000,10000,2,1500

入力例

0 200 -200 200 0 450 250 700 -250 700 0 950 -250 950 250 200 250 450 -250 450 0 700
0 200 -200 200 0 450 0 700 250 950 0 950 -250 950 250 200 250 450 -250 450 250 700
200 200 0 200 250 450 -250 450 0 700 250 950 -250 950 -250 200 0 450 250 700 -250 700
0 200 -200 200 0 450 0 700 250 900 0 950 -250 900 250 200 250 450 -250 450 250 700
200 200 0 200 250 450 -250 400 0 700 250 900 -250 950 -250 200 0 450 250 700 -250 700

出力例

1,500,300,300,0,0,0,0,0,10,10000;
1,400,300,300,1000,0,0,0,0,10,11000
2,300,-100,-100,-45000,135000,135000,135000,135000,10,15000;
1,400,300,300,1000,0,0,0,0,10,12000
2,300,-100,-100,45000,45000,45000,45000,45000,10,15000;
1,500,250,250,0,10000,10000,10000,10000,10,10000;
1,400,150,150,0,25000,25000,25000,25000,10,12000
2,300,-100,-100,45000,15000,15000,15000,15000,10,15000;

採点

  • 全テストケースでの得点の合計がその提出の得点となります。
  • 解答は5問目まで必要です。
  • 出力における一番最後の半角セミコロン “;” はあってもなくても構いません。

※以下の入力データをコピーして解答してください

-300 500 -200 500 -100 500 0 500 100 500 200 500 300 500 -300 700 -100 800 100 700 300 800
-300 650 -300 450 -300 250 300 900 300 700 300 500 0 950 0 200 0 450 0 700 250 300
0 550 0 750 0 950 -225 600 -300 800 225 600 300 800 -300 300 -100 400 100 300 300 400
0 550 0 750 0 950 -225 600 -300 800 225 600 300 800 -150 150 150 150 -200 400 200 400
0 200 0 500 250 600 -150 600 0 650 0 925 -325 925 200 450 0 350 -250 450 100 800

↑TOP