皆ã•ã‚“ã¯ã€è‹¦åŠ´ã—ã¦ä½œã£ãŸãƒ—ãƒã‚°ãƒ©ãƒ を実行ã—ã¦ã¿ãŸã‚‰ã€ç„¡é™ãƒ«ãƒ¼ãƒ—ã«ãªã£ã¦ã—ã¾ã£ãŸçµŒé¨“ã¯ã‚ã‚Šã¾ã›ã‚“ã‹ï¼Ÿ プãƒã‚°ãƒ©ãƒ ã®å®Ÿè¡ŒãŒåœæ¢ã™ã‚‹ã‹ã©ã†ã‹ã‚’ã€å®Ÿè¡Œã—ãªãã¦ã‚‚事å‰ã«åˆ¤å®šã§ãã‚‹ã¨ä¾¿åˆ©ã§ã™ã‚ˆã。
残念ãªãŒã‚‰ã€çš†ã•ã‚“ãŒãµã ん使ã£ã¦ã„るプãƒã‚°ãƒ©ãƒŸãƒ³ã‚°è¨€èªžã§ã¯ã€ã‚らゆるプãƒã‚°ãƒ©ãƒ ã«å¯¾ã—ã¦ãã®ã‚ˆã†ãªåˆ¤å®šã‚’ã™ã‚‹ã“ã¨ã¯ä¸å¯èƒ½ã§ã™ã€‚ã—ã‹ã—ã€ãれよりもã¯ã‚‹ã‹ã«è¨ˆç®—能力ã®ä½Žã„プãƒã‚°ãƒ©ãƒŸãƒ³ã‚°è¨€èªžãªã‚‰ã€ãã®è¨€èªžã§æ›¸ã„ãŸãƒ—ãƒã‚°ãƒ©ãƒ ãŒåœæ¢ã™ã‚‹ã‹ã©ã†ã‹ã‚’判定ã™ã‚‹ãƒ—ãƒã‚°ãƒ©ãƒ を書ã‘ã‚‹å ´åˆãŒã‚ã‚Šã¾ã™ã€‚
TinyPowerã¨ã„ã†ãƒ—ãƒã‚°ãƒ©ãƒŸãƒ³ã‚°è¨€èªžã‚’考ãˆã¾ã™ã€‚ã“ã®è¨€èªžã®ãƒ—ãƒã‚°ãƒ©ãƒ ã¯è¡Œã®ä¸¦ã³ã§ã™ã€‚プãƒã‚°ãƒ©ãƒ ã®å„è¡Œã«ã¯ã€å…ˆé ã«è¡Œç•ªå·ã‚’書ãã€ãã®å¾Œã‚ã«æ–‡ã‚’一ã¤æ›¸ãã¾ã™ã€‚ã“ã®è¨€èªžã§æ›¸ã‘ã‚‹æ–‡ã®ç¨®é¡žã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™ã€‚
æ–‡ã®ç¨®é¡ž | 動作 |
---|---|
ADD var1 var2 var3 | 変数 var2 ã®å€¤ã¨ var3 ã®å€¤ã‚’åŠ ç®—ã—ãŸçµæžœã‚’変数 var1ã«ä»£å…¥ã™ã‚‹ |
ADD var1 var2 con | 変数 var2 ã®å€¤ã¨å®šæ•° con ã‚’åŠ ç®—ã—ãŸçµæžœã‚’変数 var1 ã«ä»£å…¥ã™ã‚‹ |
SUB var1 var2 var3 | 変数 var2 ã®å€¤ã‹ã‚‰ var3 ã®å€¤ã‚’減算ã—ãŸçµæžœã‚’変数 var1 ã«ä»£å…¥ã™ã‚‹ |
SUB var1 var2 con | 変数 var2 ã®å€¤ã‹ã‚‰å®šæ•° con を減算ã—ãŸçµæžœã‚’変数 var1 ã«ä»£å…¥ã™ã‚‹ |
SET var1 var2 | 変数 var2ã®å€¤ã‚’変数 var1 ã«ä»£å…¥ã™ã‚‹ |
SET var1 con | 定数 con を変数 var1 ã«ä»£å…¥ã™ã‚‹ |
IF var1 dest | 変数 var1 ã®å€¤ãŒï¼ã§ãªã„ã¨ãã ã‘ã€è¡Œç•ªå· dest ã«ã‚¸ãƒ£ãƒ³ãƒ—ã™ã‚‹ |
HALT | プãƒã‚°ãƒ©ãƒ ã‚’åœæ¢ã•ã›ã‚‹ |
行番å·ã¯æ£ã®æ•´æ•°ã§ã€ãƒ—ãƒã‚°ãƒ©ãƒ ä¸ã«åŒã˜è¡Œç•ªå·ãŒï¼’ã¤ä»¥ä¸Šç¾ã‚Œã‚‹ã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“。変数ã¯è‹±å°æ–‡å—一文å—ã§è¡¨ã—ã€å®šæ•°ã¨å¤‰æ•°ã®å€¤ã¯æ•´æ•°ã§ã™ã€‚変数ã®å®£è¨€ã¯ä¸è¦ã§ã€å¤‰æ•°ã®åˆæœŸå€¤ã¯ï¼ã§ã™ã€‚
プãƒã‚°ãƒ©ãƒ ã®å®Ÿè¡Œã¯å…ˆé ã®æ–‡ã‹ã‚‰å§‹ã¾ã‚Šã€ä¸¦ã‚“ã§ã„ã‚‹é †ã«æ–‡ãŒå®Ÿè¡Œã•ã‚Œã¾ã™ã€‚ãŸã ã—ã€ä¸Šã®è¡¨ã«æ›¸ã‹ã‚ŒãŸã‚ˆã†ã«ã€IFæ–‡ã®å¤‰æ•°ã®å€¤ãŒï¼ã§ãªã„ã¨ãã¯ã€å¤‰æ•°ã®å¾Œã‚ã«æ›¸ã‹ã‚ŒãŸè¡Œç•ªå·ã§æŒ‡å®šã•ã‚Œã‚‹è¡Œã«ã‚¸ãƒ£ãƒ³ãƒ—ã—ã€ãã®è¡Œã«æ›¸ã‹ã‚ŒãŸæ–‡ã‹ã‚‰å®Ÿè¡Œã‚’続ã‘ã¾ã™ã€‚プãƒã‚°ãƒ©ãƒ ã¯ä»¥ä¸‹ã®ã¨ãã«åœæ¢ã—ã¾ã™ã€‚
TinyPowerã®ãƒ—ãƒã‚°ãƒ©ãƒ ãŒä¸Žãˆã‚‰ã‚ŒãŸã¨ãã€ãã‚ŒãŒåœã¾ã‚‹ã‹ã©ã†ã‹ã‚’判定ã™ã‚‹ãƒ—ãƒã‚°ãƒ©ãƒ を作æˆã›ã‚ˆã€‚
入力ã¯ä»¥ä¸‹ã®å½¢å¼ã§ä¸Žãˆã‚‰ã‚Œã‚‹ã€‚
N stmt1 stmt2 : stmtN
1行目ã«ãƒ—ãƒã‚°ãƒ©ãƒ ã®è¡Œæ•° N (1 ≤ N ≤ 50) ãŒä¸Žãˆã‚‰ã‚Œã‚‹ã€‚続ã N è¡Œã«ã€TinyPowerプãƒã‚°ãƒ©ãƒ ã®æ–‡ stmti ãŒä¸Žãˆã‚‰ã‚Œã‚‹ã€‚stmti ã¯ã€ä»¥ä¸‹ã®ã„ãšã‚Œã‹ã®å½¢å¼ã§ä¸Žãˆã‚‰ã‚Œã‚‹ã€‚
line ADD var1 var2 var3
ã¾ãŸã¯
line ADD var1 var2 con
ã¾ãŸã¯
line SUB var1 var2 var3
ã¾ãŸã¯
line SUB var1 var2 con
ã¾ãŸã¯
line SET var1 var2
ã¾ãŸã¯
line SET var1 con
ã¾ãŸã¯
line IF var1 dest
ã¾ãŸã¯
line HALT
line, dest (1 ≤ line, dest ≤ 1000) ã¯è¡Œç•ªå·ã€varj (英å°æ–‡å—1文å—)ã¯å¤‰æ•°ã€con (0 ≤ con ≤ 15) ã¯å®šæ•°ã‚’表ã™ã€‚stmti ä¸ã®åŒºåˆ‡ã‚Šã¯ç©ºç™½ï¼‘æ–‡å—ã¨ã™ã‚‹ã€‚ãªãŠã€ãƒ—ãƒã‚°ãƒ©ãƒ ä¸ã«å¤‰æ•°ã¯å¿…ãšï¼‘ã¤ä»¥ä¸Šç¾ã‚Œã€ç•°ãªã‚‹å¤‰æ•°åã¯ï¼•ã¤ã¾ã§ã—ã‹ç¾ã‚Œãªã„ã‚‚ã®ã¨ã™ã‚‹ã€‚
プãƒã‚°ãƒ©ãƒ ãŒåœæ¢ã™ã‚‹ã¨ãã¯ã€ãƒ—ãƒã‚°ãƒ©ãƒ ã«ç¾ã‚Œã‚‹å¤‰æ•°ã®çµæžœã‚’ã€å¤‰æ•°åã®è¾žæ›¸é †ã«æ”¹è¡ŒåŒºåˆ‡ã‚Šã§å‡ºåŠ›ã—ã€åœæ¢ã—ãªã„ã¨ãã¯ã€Œinfã€ã‚’出力ã™ã‚‹ã€‚変数ã®çµæžœã¯ã€å¤‰æ•°åã¨å¤‰æ•°ã®å€¤ã‚’「=ã€ã§åŒºåˆ‡ã£ã¦å‡ºåŠ›ã™ã‚‹ã€‚
6 10 SET c 1 20 SET i 5 100 ADD s s i 110 SUB i i c 120 IF i 100 200 HALT
c=1 i=0 s=15
入力例1ã¯ã€ï¼‘ã‹ã‚‰ï¼•ã¾ã§ã®æ•´æ•°ã®å’Œã‚’計算ã—ã€ãã®çµæžœã‚’変数sã«æ ¼ç´ã—ãŸã‚ã¨ã€HALTæ–‡ã®å®Ÿè¡Œã§åœæ¢ã™ã‚‹ã€‚
3 10 SET c 1 120 IF c 10 20 HALT
inf
入力例2ã¯ã€è¡Œç•ªå·10ã§cã«1を代入ã—ã€æ¬¡ã®è¡Œç•ªå·120ã®IFæ–‡ã§è¡Œç•ªå·10ã«æˆ»ã‚‹ã“ã¨ã‚’ç¹°ã‚Šè¿”ã™ã®ã§ã€åœæ¢ã—ãªã„。
3 111 SET c 1 12 SUB c c 2 777 SET a 4
a=0 c=1
入力例3ã¯ã€è¡Œç•ªå·111ã§cã«1を代入ã—ã€æ¬¡ã®è¡Œç•ªå·12ã§cã«-1を代入ã—よã†ã¨ã™ã‚‹ã®ã§ã€åœæ¢ã™ã‚‹ã€‚ã“ã®ã¨ãcã®å€¤ã¯-1ã«æ›´æ–°ã•ã‚Œãªã„。行番å·777ã¯å®Ÿè¡Œã•ã‚Œãªã„ã®ã§ã€aã®å€¤ã¯åˆæœŸå€¤0ã®ã¾ã¾ã§ã‚る。