ã‚ãŸã—ãŸã¡äººé¡žãŒã‚†ã‚‹ã‚„ã‹ãªè¡°é€€ã‚’è¿Žãˆã¦ï¼Œã¯ã‚„数世紀. ã™ã§ã«åœ°çƒã¯â€ã·ã‚ãらã¾ãƒ¼â€ã®ã‚‚ã®ã ã£ãŸã‚Šã—ã¾ã™ï¼Ž å¹³å‡èº«é•·170センãƒã§7é 身,高ã„知能をæŒã¡ï¼Œã“ーã§ãƒã‚“ããŒå¤§å¥½ããªã·ã‚ãらã¾ãƒ¼ã•ã‚“ãŸã¡ï¼Ž ã‚ãŸã—ã¯ï¼Œãã‚“ãªã·ã‚ãらã¾ãƒ¼ã•ã‚“ã¨äººã¨ã®é–“ã‚’å–ã‚ŠæŒã¤é‡è¦ãªè·ï¼Œå›½éš›å…¬å‹™å“¡ã®â€ ãˆã™ã„ー â€ã¨ãªã‚Šï¼Œæ•…郷ã®ãƒ‹ãƒ–ンã‚ã®é‡Œã«å¸°ã£ã¦ãã¾ã—ãŸï¼Ž 祖父ã®å¹´é½¢ã§ã‚‚ç¾å½¹ã§ã§ãる仕事ãªã®ã ã‹ã‚‰ï¼Œã•ãžã‚„楽ãªã®ã ã‚ã†ã¨ã“ã®è·ã‚’é¸ã‚“ã ã®ã§ã™ãŒâ€¦ï¼Ž
ã‚る日,ã·ã‚ãらã¾ãƒ¼ã•ã‚“ãŸã¡ãŒæ¸¡ã—ã¦ãã‚ŒãŸã®ã¯ï¼Œ2æžšã®è¨è¨ˆæ›¸ã®ã‚ˆã†ãªã‚‚ã®ï¼Ž ãã®ã·ã‚ãらã¾ãƒ¼ã•ã‚“æ›°ã,テã‚ストã¨ã‚¹ã‚¯ãƒªãƒ—トを利用ã—ã¦ï¼Œæ§˜ã€…ãªæƒ…å ±ã‚’å®¹æ˜“ã«äº¤æ›ã§ãã‚‹ã®ã ã¨è¨€ã„ã¾ã™ï¼Ž
1æžšç›®ã®è¨è¨ˆæ›¸ã¯ï¼Œæ–‡ç« æ§‹é€ ã‚’è¡¨ã™ãƒ•ã‚¡ã‚¤ãƒ«ã®èª¬æ˜Žã§ã—ãŸï¼Ž ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã®ãƒ•ã‚¡ã‚¤ãƒ«åãŒ.dmlã§çµ‚ã‚り,DMLファイルã¨å‘¼ã°ã‚Œã¾ã™ï¼Ž
DMLファイルã®ä¸ã¯ï¼Œã‚¿ã‚°ã¨å‘¼ã°ã‚Œã‚‹æ–‡å—列ã§æŒŸã‚€ã“ã¨ã§æ–‡ç« ã®æ§‹é€ を表ã—ã¦ã„ã¾ã™ï¼Ž ã‚¿ã‚°ã¯ï¼Œé–‹å§‹ã‚¿ã‚°ã¨çµ‚了タグãŒå˜åœ¨ã—,
<開始タグå>内容</終了タグå>
ã®è¦ç´ ã§è¡¨ã•ã‚Œã¾ã™ï¼Ž ã“ã®ã¨ã,開始タグåã¨çµ‚了タグåã¯åŒã˜æ–‡å—列ã§è¡¨ã•ã‚Œã¾ã™ï¼Ž
ã‚¿ã‚°ã¯å…¥ã‚Œåæ§‹é€ ã«ã™ã‚‹ã“ã¨ãŒã§ã,<tagA><tagB></tagB></tagA>ã®ã‚ˆã†ã«ã—ã¦ã‚‚構ã„ã¾ã›ã‚“. ã¾ãŸï¼Œ<tagA><tagB></tagA></tagB>ã®ã‚ˆã†ãªæ§‹é€ ã¯è¨±ã•ã‚Œã¾ã›ã‚“.
DMLファイル内ã®ã‚¿ã‚°åã¯ã„ãã¤ã‹ç‰¹æ®Šãªã‚‚ã®ã‚’除ã„ã¦ä»»æ„ã®æ–‡å—列ã§ã™ï¼Ž 特殊ãªã‚¿ã‚°ã¯ä»¥ä¸‹ã®5ã¤ã§ã™ï¼Ž
ã‚¿ã‚°åã¯ï¼Œã‚¢ãƒ«ãƒ•ã‚¡ãƒ™ãƒƒãƒˆã®å¤§æ–‡å—,å°æ–‡å—ã®ã¿ã§è¡¨ã•ã‚Œã¾ã™ï¼Ž ã‚¿ã‚°åã«ã‚¹ãƒšãƒ¼ã‚¹ãŒç¾ã‚Œã‚‹ã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“. DMLファイルä¸ã«ç¾ã‚Œã‚‹æ–‡å—列ã¯ï¼Œã‚¢ãƒ«ãƒ•ã‚¡ãƒ™ãƒƒãƒˆã®å¤§æ–‡å—,å°æ–‡å—,スペース,'<','>','/'ã¨ãªã‚Šã¾ã™ï¼Ž ã¾ãŸï¼ŒåŒåã®ã‚¿ã‚°ãŒå˜åœ¨ã™ã‚‹ã“ã¨ã‚‚ã‚ã‚Šãˆã¾ã™ï¼Ž
scriptタグ以外ã§å›²ã¾ã‚ŒãŸã‚¿ã‚°ä»¥å¤–ã®æ–‡å—列ã¯ï¼Œç”»é¢ã®å·¦ä¸Š(0, 0)ã‹ã‚‰å·¦è©°ã‚ã§å‡ºåŠ›ã•ã‚Œï¼Œ ç”»é¢ç«¯ã‹brã‚¿ã‚°ãŒå‡ºç¾ã™ã‚‹ã¾ã§æ”¹è¡Œã•ã‚Œã¾ã›ã‚“.
2æžšç›®ã®è¨è¨ˆæ›¸ã¯ï¼ŒDMLファイルä¸ã®ãƒœã‚¿ãƒ³ã‚’押ã—ãŸæ™‚ã®å‹•ä½œã‚’表ã™DSファイルã®èª¬æ˜Žã§ã—ãŸï¼Ž DSファイルã¯ï¼Œã‚µãƒ–ルーãƒãƒ³ãŒä¸¦ã¹ã‚‰ã‚Œã¦ã„ã¾ã™ï¼Ž
サブルーãƒãƒ³å { å¼; å¼; ...; }
セミコãƒãƒ³ã¯å¼ã®çµ‚ã‚りを表ã—ã¾ã™ï¼Ž
例ãˆã°ï¼ŒDMLファイルä¸ã«ï¼Œ<title>?</title>ã§å›²ã¾ã‚ŒãŸæ–‡ç« ãŒã‚ã‚‹ã¨ã—ã¾ã™ï¼Ž ãã®ã¨ãå¯èƒ½ãªå¼ã¯ä»¥ä¸‹ã®4ã¤ã®ä»£å…¥å¼ã§ã™ï¼Ž
title.visible = true; title.visible = false; title.visible != true; title.visible != false;
visibleã¸ã®çœŸå½å€¤ã®ä»£å…¥ã¯ï¼Œãã®ã‚¿ã‚°ã®å†…容を表示ã™ã‚‹ã‹ã—ãªã„ã‹ã‚’変更ã—ã¾ã™ï¼Žè¡¨ç¤ºã•ã‚Œç„¡ããªã£ãŸå ´åˆã«ã¯ï¼Œãれ以é™ã®æ–‡ç« ã¯å·¦ã«è©°ã‚られã¾ã™ï¼Ž 最åˆã‚„linkã‚¿ã‚°ã®ã‚¯ãƒªãƒƒã‚¯ã«ã‚ˆã£ã¦ç¾åœ¨è¡¨ç¤ºã—ã¦ã„ã‚‹DMLファイルãŒæ›¸ã変ã‚ã£ãŸæ™‚,åˆæœŸå€¤ã¯å…¨ã¦trueã«ãªã£ã¦ã„ã¾ã™ï¼Ž
'!='ã¯å¦å®šã®ä»£å…¥ã‚’表ã—ã¾ã™ï¼Ž 上ã®ä¾‹ã§ã¯ï¼Œ1行目ã¨4行目,2行目ã¨3行目ã¯ãã‚Œãžã‚Œç‰ä¾¡ã§ã™ï¼Ž
ã¾ãŸå¼ã¯ï¼Œä»¥ä¸‹ã®ã‚ˆã†ã«è¤‡æ•°ã®å€¤ã‚’åŒæ™‚ã«å¤‰æ›´ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ï¼Ž
titleA.visible = titleB.visible = true;
ã“ã®æ™‚,å³ã‹ã‚‰é †ã«å‡¦ç†ãŒè¡Œã‚ã‚Œã¾ã™ï¼Ž ã™ãªã‚ã¡ï¼Œ
titleB.visible = true; titleA.visible = titleB.visible;
ã®2è¡Œã¨ç‰ä¾¡ã§ã™ï¼Ž ãŸã ã—,ã“ã®è¡¨ã—æ–¹ã¯ä¾¿å®œä¸Šã§ã‚ã£ã¦ï¼Œã‚¹ã‚¯ãƒªãƒ—ト内ã§æ–‡ã®æœ€ã‚‚å³ã«ãŠã„ã¦ï¼Œã‚¿ã‚°ã«ã‚ˆã‚‹æŒ‡å®šãŒè¡Œã‚れるã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“. ã¾ãŸï¼Œ
titleA.visible != titleB.visible = true;
ã¯
titleB.visible = true; titleA.visible != titleB.visible;
ã¨ç‰ä¾¡ã§ã™ï¼Ž
ã‚¿ã‚°ã®æŒ‡å®šæ–¹æ³•ã¯ï¼Œ'.'ã§çµžã‚Šè¾¼ã‚€ã“ã¨ã«ã‚ˆã£ã¦è¡Œã‚ã‚Œã¾ã™ï¼Ž 例ãˆã°ï¼Œ
dml.body.title
ã¯ï¼Œdmlã‚¿ã‚°ã«å›²ã¾ã‚ŒãŸï¼Œbodyã‚¿ã‚°ã«å›²ã¾ã‚ŒãŸï¼Œtitleタグを指ã—ã¾ã™ï¼Ž ãŸã ã—,scriptã‚¿ã‚°ã¨brã‚¿ã‚°ãŒçµžã‚Šè¾¼ã¿ã«ã¤ã‹ã‚ã‚ŒãŸã‚Šï¼ŒæŒ‡å®šã•ã‚Œã‚‹ã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“.
ã“ã®ã¨ã,絞り込ã¾ã‚Œã‚‹è¦ç´ ãŒç›´æŽ¥å›²ã¾ã‚Œã¦ã„ã‚‹ã¨ã¯é™ã‚‰ãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ä¸‹ã•ã„. 例ãˆã°ï¼Œ <a><b><c></c></b></a> ã¨ã‚ã‚‹ã¨ã,a.b.cã§ã‚‚a.cã§ã‚‚cを指ã™ã“ã¨ãŒã§ãã¾ã™ï¼Ž
ã¾ãŸï¼ŒåŒåã®ã‚¿ã‚°ãŒå˜åœ¨ã™ã‚‹å ´åˆã«ã¯ï¼ŒæŒ‡å®šã•ã‚ŒãŸã‚¿ã‚°ãŒ1ã¤ã¨ã¯é™ã‚Šã¾ã›ã‚“. 指定ã—ãŸã‚¿ã‚°ãŒå˜åœ¨ã—ãªã„å ´åˆã«ã¯ï¼Œè¡¨ç¤ºã«å½±éŸ¿ã¯ä¸Žãˆã‚‰ã‚Œã¾ã›ã‚“ãŒï¼Œè¤‡æ•°ã®å€¤ã‚’åŒæ™‚ã«å¤‰æ›´ã™ã‚‹éš›ã«ç¾ã‚ŒãŸå ´åˆã«ã¯ï¼Œå˜åœ¨ã—ã¦ã„ã‚‹å ´åˆã¨åŒæ§˜ã«è©•ä¾¡ã•ã‚Œã¾ã™ï¼Ž
BNFã¯ä»¥ä¸‹ã®ã‚ˆã†ã«ãªã‚Šã¾ã™ï¼Ž
<script_file> :: = <subroutine> | <script_file> <subroutine> <subroutine> ::= <identifier> '{' <expressions> '}' <expressions> ::= <expression> ';' | <expressions> <expression> ';' <expression> ::= <visible_var> '=' <visible_exp_right> | <visible_var> '!=' <visible_exp_right> | <visible_var> '=' <expression> | <visible_var> '!=' <expression> <visible_exp_right> ::= 'true' | 'false' <visible_var> ::= <selector> '.visible' <selector> ::= <identifier> | <selector> '.' <identifier> <identifier> ::= <alphabet> | <identifier> <alphabet> <alphabet> ::= 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z' | 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K' | 'L' | 'M' | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'X' | 'Y' | 'Z'
é ãŒç—›ããªã‚Šãã†ã§ã™ã.ãªã‚‰ãªã„ã§ã™ã‹ï¼Ÿãã†ã§ã™ã‹ï¼Ž
ユーザã¯ï¼Œæœ€åˆã®DMLファイルãŒè¡¨ç¤ºã•ã‚ŒãŸå¾Œï¼Œç”»é¢ä¸Šã®åº§æ¨™(x, y)をクリックã—ã¾ã™ï¼Ž ã™ã‚‹ã¨ï¼Œãã®å ´æ‰€ã®linkã‚„buttonã«å¿œã˜ã¦ï¼Œç”»é¢ãŒå¤‰åŒ–ã—ã¾ã™ï¼Ž ãれ以外ã®å ´æ‰€ã‚’クリックã—ãŸã‚‰ã§ã™ã‹ï¼Ÿãªã«ã‚‚èµ·ã“ã‚Šã¾ã›ã‚“よ.æµçŸ³ã«ï¼Ž
ã•ã¦ï¼Œã©ã‚“ãªã‚‚ã®ãŒã§ãã‚‹ã®ã§ã—ょã†ï¼Ÿ 大好物ã®ãˆãªã˜ãƒ¼ã©ã‚Šã‚“ãã§ã‚‚渡ã—ã¤ã¤ï¼Œè¦‹å®ˆã‚‹ã“ã¨ã«ã—ã¾ã™ï¼Ž
入力ã¯ï¼Œæ¬¡ã®å½¢å¼ã§ä¸Žãˆã‚‰ã‚Œã‚‹ï¼Ž
N filename1 file1 filename2 file2 ... filenameN fileN M w1 h1 s1 startfile1 x11 y11 ... x1s1 y1s1 ... wM hM sM startfileM xM1 y11 ... xMsM yMsM ...
N(1 <= N <= 20)ã¯ï¼Œãƒ•ã‚¡ã‚¤ãƒ«ã®æ•°ã‚’表ã—,ãã®å¾Œï¼Œãƒ•ã‚¡ã‚¤ãƒ«åã¨ãƒ•ã‚¡ã‚¤ãƒ«ã®å†…容ãŒäº¤äº’ã«ä¸Žãˆã‚‰ã‚Œã‚‹ï¼Ž filenameã¯ï¼Œä»»æ„ã®ã‚¢ãƒ«ãƒ•ã‚¡ãƒ™ãƒƒãƒˆ16æ–‡å—ã«'.dml'ã¾ãŸã¯'.ds'ãŒåŠ ãˆã‚‰ã‚ŒãŸå½¢ã§è¡¨ã•ã‚Œã‚‹ï¼Ž '.dml'ã§çµ‚ã‚ã‚‹å ´åˆã¯DMLファイルã§ã‚り,'.ds'ã§çµ‚ã‚ã‚‹å ´åˆã¯DSファイルã§ã‚る. ファイルã®æ–‡å—列ã¯ä¸€è¡Œã§ä¸Žãˆã‚‰ã‚Œï¼Œ500æ–‡å—以下ã§ã‚る.
M(1 <= M <= 50)ã¯è¨ªã‚ŒãŸãƒ¦ãƒ¼ã‚¶ã®æ•°ã‚’表ã™ï¼Ž ユーザ1人ã«ã¤ã,画é¢ã®å¹…w,高ã•h(1 <= w * h <= 500),æ“作数s(0 <= s <= 50),開始DMLファイルåã¨ï¼Œsè¡Œã®ã‚¯ãƒªãƒƒã‚¯ã—ãŸåº§æ¨™x, y(0 <= x < w, 0 <= y < h)ãŒä¸Žãˆã‚‰ã‚Œã‚‹ï¼Ž
DSファイルã«ç©ºç™½ã¯å«ã¾ã‚Œãªã„. ã¾ãŸï¼Œä¸Žãˆã‚‰ã‚Œã‚‹DMLファイルä¸ã®ã‚¿ã‚°ã¯å¿…ãšé–‰ã˜ã‚‰ã‚Œã¦ã„る. 入力ã®å…¨ä½“を通ã—ã¦ï¼Œã‚¹ã‚¯ãƒªãƒ—ト内ã«åŒåã®ã‚µãƒ–ルーãƒãƒ³åãŒç¾ã‚Œã‚‹ã“ã¨ã¯ãªã„.
ユーザ1人ã«ã¤ã,最終的ãªç”»é¢ã‚’å¹…w, 高ã•hã§å‡ºåŠ›ã—ã¦ä¸‹ã•ã„. ç”»é¢ã®å³ä¸‹ã‚’超ãˆãŸåˆ†ã«ã¤ã„ã¦ã¯å‡ºåŠ›ã—ã¾ã›ã‚“. ã‚ã‚‹è¡Œã«ãŠã„ã¦ï¼Œå‡ºåŠ›ã™ã‚‹æ–‡å—ãŒç„¡ããªã£ãŸå ´åˆã«ã¯ï¼Œãã®è¡ŒãŒwæ–‡å—ã«ãªã‚‹ã¾ã§'.'を出力ã—ã¦ä¸‹ã•ã„.
1 index.dml <dml><title>Markup language has Declined</title><br>Programmers world</dml> 1 15 3 0 index
Markup language has Declined.. Programmers wor
2 hello.dml <dml><link>cut</link></dml> cut.dml <dml>hello very short</dml> 1 10 2 1 hello 1 0
hello very short....
2 index.dml <dml><script>s</script>slip<fade>akkariin</fade><br><button>on</button> <button>off</button></dml> s.ds on{fade.visible=true;}off{fade.visible!=true;} 2 15 3 0 index 15 3 3 index 3 1 1 1 3 1
slipakkariin... on off......... ............... slip........... on off......... ...............