ã“ã“ã‹ã‚‰ã¯ï¼Œã‚¿ã‚¤ãƒ”ング力をé›ãˆã‚‹æ™‚é–“ã§ã™ï¼Žçš†ã•ã‚“ã¯æ—©ãæ£ç¢ºãªã‚¿ã‚¤ãƒ”ングをã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã‹ï¼Ÿ Let’s enjoy Typing Game!
タイピングゲームã®ã‚²ãƒ¼ãƒ システムã¨ã—ã¦ï¼Œã‚¸ãƒ£ãƒƒã‚¸å´ãŒç”¨æ„ã—ãŸAIã®å‡ºåŠ›ã«å¯¾ã—ã¦å¯¾è©±çš„ã«å‹•ä½œã™ã‚‹ãƒ—ãƒã‚°ãƒ©ãƒ を作æˆã›ã‚ˆï¼Ž
AI㯠N 個ã®æ–‡å—列をタイプã™ã‚‹ã‚²ãƒ¼ãƒ をプレイã™ã‚‹ï¼ŽAIã¯ä½“力をæŒã£ã¦ãŠã‚Šï¼Œãã®åˆæœŸå€¤ã¯ H ã§ã‚る.AIã¯ä½“力ãŒã‚ã‚‹é™ã‚Šæ–‡å—ã®ã‚¿ã‚¤ãƒ—ã‚’è¡Œã†ï¼Žã‚·ã‚¹ãƒ†ãƒ ã¯AIãŒã‚¿ã‚¤ãƒ—ã™ã¹ãæ–‡å—列をæ示ã™ã‚‹ï¼Žã‚·ã‚¹ãƒ†ãƒ ã¯AIãŒã‚¿ã‚¤ãƒ—ã—ãŸæ–‡å—ã‚’å—ã‘å–り,次ã«ã‚¿ã‚¤ãƒ—ã™ã¹ãæ–‡å—ã¨ä¸€è‡´ã™ã‚‹ã‹åˆ¤å®šã™ã‚‹ï¼ŽAIãŒæ–‡å—列を1ã¤ã‚¿ã‚¤ãƒ—ã—終ãˆã‚‹ã¨ï¼Œã‚·ã‚¹ãƒ†ãƒ ã¯æ¬¡ã®æ–‡å—列をæ示ã™ã‚‹ï¼Ž
ã¾ãŸï¼Œå„æ–‡å—列ã«ã¯ãƒŸã‚¹ã‚¿ã‚¤ãƒ—ã®è¨±å®¹å›žæ•°ãŒå®šã‚られã¦ã„る.AIã®ã‚ã‚‹æ–‡å—列ã«ãŠã‘るミスタイプã®å›žæ•°ãŒè¨±å®¹å›žæ•°ã‚’超ãˆã¦ã—ã¾ã†ã¨AIã®ä½“力ãŒ1減り,システムã¯å¼·åˆ¶çš„ã«æ¬¡ã®æ–‡å—列をæ示ã™ã‚‹ï¼ŽAIã®ä½“力ãŒ0ã«ãªã£ãŸã‚‰ã‚²ãƒ¼ãƒ オーãƒãƒ¼ã¨ãªã‚‹ï¼Žæœ€å¾Œã®æ–‡å—列ã«ãŠã„ã¦ï¼Œã‚¿ã‚¤ãƒ—ã®æˆåŠŸã¾ãŸã¯ãƒŸã‚¹ã‚¿ã‚¤ãƒ—回数ã®è¶…éŽãŒèµ·ã“ã£ãŸå¾Œã§ï¼ŒAIã®ä½“力ãŒæ®‹ã£ã¦ã„ã‚Œã°ã‚²ãƒ¼ãƒ クリアã¨ãªã‚‹ï¼Ž
ã¾ãšï¼Œå…¥åŠ›ãŒä»¥ä¸‹ã®å½¢å¼ã§ä¸Žãˆã‚‰ã‚Œã‚‹ï¼Ž
N H S_1 T_1 ... S_N T_N
1行目ã«æ–‡å—列ã®æ•° N ã¨AIã®ä½“力 H ãŒç©ºç™½åŒºåˆ‡ã‚Šã§ä¸Žãˆã‚‰ã‚Œã‚‹ï¼Ž
続ã N è¡Œã«ã¯ i 行目㫠i 番目ã®æ–‡å—列 S_i ã¨ï¼Œãã®æ–‡å—列ã«å¯¾ã™ã‚‹ãƒŸã‚¹ã‚¿ã‚¤ãƒ—ã®è¨±å®¹å›žæ•° T_i ãŒç©ºç™½åŒºåˆ‡ã‚Šã§ä¸Žãˆã‚‰ã‚Œã‚‹ï¼Ž
ã“ã®å…¥åŠ›ã¯ä»¥ä¸‹ã®åˆ¶ç´„を満ãŸã™ï¼Ž
システムã¯æ–‡å—列 S_1 ã‹ã‚‰æ–‡å—列 S_N ã¾ã§é †ç•ªã«å‡¦ç†ã‚’ã™ã‚‹ï¼Ži 番目ã®æ–‡å—列 S_i ã«ã¤ã„ã¦ï¼ŒAI㌠j æ–‡å—ç›®ã¾ã§ã‚¿ã‚¤ãƒ—ã‚’æˆåŠŸã•ã›ã¦ã„ã‚‹å ´åˆï¼Œä»¥ä¸‹ã®å‡¦ç†ã‚’ã™ã‚‹ï¼Ž
システムã¯AIã«å¯¾ã—ã¦ï¼ŒS_i を出力ã™ã‚‹ï¼Žã“ã®ã¨ã,S_i ã®1æ–‡å—ç›®ã‹ã‚‰ j æ–‡å—目を"_" (アンダースコア) ã«ç½®ãæ›ãˆã‚‹ï¼Žã‚·ã‚¹ãƒ†ãƒ ãŒé–“é•ã£ãŸæ–‡å—列を出力ã™ã‚‹ã¨ï¼ŒAIã¯å‹•ä½œã‚’ä¸æ–ã—Wrong Answerã¨ãªã‚‹ï¼Žã‚·ã‚¹ãƒ†ãƒ ãŒå‡ºåŠ›ã™ã‚‹æ–‡å—列㌠S ã§ã‚ã‚‹å ´åˆï¼ŒC/C++ã§ã®å‡ºåŠ›ä¾‹ã¯ä»¥ä¸‹ã®ã‚ˆã†ã«ãªã‚‹ï¼Ž
printf("? %s\n", S); fflush(stdout);
AIã¯ã‚·ã‚¹ãƒ†ãƒ ã®å‡ºåŠ›ã‚’å—ã‘å–ã‚‹ã¨ï¼Œ
c
ã®å½¢å¼ã§è¿”ç”ã™ã‚‹ï¼Žc ã¯AIãŒã‚¿ã‚¤ãƒ—ã—ãŸæ–‡å—ã§ã‚る.c ã¯ã‚¢ãƒ«ãƒ•ã‚¡ãƒ™ãƒƒãƒˆ'a'-'z'ã‹ã‚‰ãªã‚‹ï¼ŽC/C++ã§ã®è¿”ç”ã®å—ã‘å–ã‚Šæ–¹ã®ä¾‹ã¯ä»¥ä¸‹ã®ã‚ˆã†ã«ãªã‚‹ï¼Ž
char c[2]; scanf("%s", c); /* char c; scanf("%c", &c); ã¯ç©ºç™½æ–‡å—èªã¿è¾¼ã¿ã®ä»•æ§˜ä¸Šã®ç†ç”±ã§éžæŽ¨å¥¨ã§ã™ï¼Ž */
システムã¯AIã®å‡ºåŠ›ã‚’å—ã‘å–ã‚‹ã¨ã¾ãšAIãŒã‚¿ã‚¤ãƒ—ã—ãŸæ–‡å—㨠S_i ã® j+1 æ–‡å—ç›®ãŒä¸€è‡´ã—ã¦ã„ã‚‹ã‹åˆ¤å®šã™ã‚‹ï¼Žã“ã®åˆ¤å®šã®éš›ï¼Œå¤§æ–‡å—ã¨å°æ–‡å—ã¯åŒºåˆ¥ã—ãªã„ã“ã¨ã«æ³¨æ„ã›ã‚ˆï¼Žä¸€è‡´ã—ã¦ã„ã‚‹ã¨ãã¯ï¼Œj+1 æ–‡å—ç›®ã¾ã§ã‚¿ã‚¤ãƒ—ã«æˆåŠŸã—ãŸã¨ã™ã‚‹ï¼Žã“ã“㧠j+1 æ–‡å—目㌠S_i ã®æœ€å¾Œã®æ–‡å—ã ã£ãŸå ´åˆï¼ŒS_i ã®ã‚¿ã‚¤ãƒ—ã«æˆåŠŸã—ãŸã¨ã— S_i ã®å‡¦ç†ã‚’終ãˆã‚‹ï¼ŽAIãŒã‚¿ã‚¤ãƒ—ã—ãŸæ–‡å—㨠S_i ã® j+1 æ–‡å—ç›®ãŒä¸€è‡´ã—ã¦ã„ãªã‘ã‚Œã°ï¼ŒS_i ã«å¯¾ã™ã‚‹ãƒŸã‚¹ã‚¿ã‚¤ãƒ—回数を1ã ã‘増やã™ï¼Žã“ã®ã¨ã T_i を超ãˆã¦ã„ã‚Œã°AIã®ä½“力を1減らã—,S_i ã®å‡¦ç†ã‚’終ãˆã‚‹ï¼ŽS_i ã®å‡¦ç†ã‚’終ãˆãŸã¨ã,AIã®ä½“力ãŒ0ã§ã‚ã‚Œã°ã‚²ãƒ¼ãƒ オーãƒãƒ¼ã¨ã™ã‚‹ï¼Žã‚²ãƒ¼ãƒ オーãƒãƒ¼ã§ãªã‘れ㰠i ㌠N ã®ã¨ãゲームクリアã¨ã—,ãã†ã§ãªã‘れ㰠S_{i+1} ã®å‡¦ç†ã«ç§»ã‚‹ï¼Ž
ã¾ãŸï¼Œã‚²ãƒ¼ãƒ オーãƒãƒ¼ã®éš›ã«ã¯"! Game Over"を,ゲームクリアã®éš›ã«ã¯"! Game Clear [タイプæˆåŠŸçŽ‡]"を出力ã›ã‚ˆï¼Žã‚¿ã‚¤ãƒ—æˆåŠŸçŽ‡ã¯ (æˆåŠŸã‚¿ã‚¤ãƒ—æ•°) / (åˆè¨ˆã‚¿ã‚¤ãƒ—æ•°) × 100 ã§è¨ˆç®—ã•ã‚Œã‚‹å€¤ã‚’å°æ•°ç‚¹ä»¥ä¸‹ç¬¬2ä½ã§åˆ‡ã‚Šæ¨ã¦ãŸå€¤ã¨ã™ã‚‹ï¼Žå°æ•°ç‚¹ä»¥ä¸‹ç¬¬1ä½ãŒ0ã§ã‚ã£ã¦ã‚‚å°æ•°ç‚¹ä»¥ä¸‹ç¬¬1ä½ã¾ã§å‡ºåŠ›ã›ã‚ˆï¼ŽC/C++ã§ã®å‡ºåŠ›ä¾‹ã¯ä»¥ä¸‹ã®ã‚ˆã†ã«ãªã‚‹ï¼Ž
printf("! Game Over\n"); fflush(stdout);
printf("! Game Clear %.1lf\n", success_type_rate); fflush(stdout);
※printfã®æ›¸å¼ã‚’"%.1lf"ã¨ã—ãŸå ´åˆï¼Œå‡ºåŠ›ã•ã‚Œã‚‹æµ®å‹•å°æ•°ç‚¹æ•°ã¯å°æ•°ç‚¹ä»¥ä¸‹ç¬¬2ä½ãŒå››æ¨äº”å…¥ã•ã‚Œã‚‹ï¼Žã“ã®ãŸã‚,タイプæˆåŠŸçŽ‡ã‚’浮動å°æ•°ç‚¹æ•°ã¨ã—ã¦è¨ˆç®—ã—,上記ã®æ‰‹æ³•ã§å‡ºåŠ›ã—ãŸå ´åˆï¼Œæ£ã—ã„出力çµæžœãŒå¾—られãªã„ã“ã¨ãŒã‚ã‚‹ã“ã¨ã«æ³¨æ„ã›ã‚ˆï¼Ž
システムã®å‡ºåŠ› | システムã¸ã®å…¥åŠ›ãƒ»AIã®è¿”ç” |
---|---|
2 5 ICPC 2 Tsurai 5 | |
? ICPC | |
i | |
? _CPC | |
g | |
? _CPC | |
p | |
? _CPC | |
c | |
? __PC | |
p | |
? ___C | |
c | |
? Tsurai | |
t | |
? _surai | |
s | |
? __urai | |
u | |
? ___rai | |
r | |
? ____ai | |
a | |
? _____i | |
i | |
! Game Clear 83.3 |
システムã®å‡ºåŠ› | システムã¸ã®å…¥åŠ›ãƒ»AIã®è¿”ç” |
---|---|
2 1 ICPC 1 Tsurai 1 | |
? ICPC | |
i | |
? _CPC | |
c | |
? __PC | |
o | |
? __PC | |
p | |
? ___C | |
d | |
! Game Over | |