ã¯ããã«
drken ãã㮠粟éžéå»å 10 å ããžã§ãŒã¯èšèªã® Whitespace ã§è§£ããŠã¿ãŸããïŒã³ã³ãã¹ãããŒãžã¯ãã¡ãã§ãïŒ
åããé£è§£èšèªã§ãã Piet ã§ ABS ãè§£ããæ¹ïŒbasemusi ããïŒã«è§ŠçºãããŠãã£ãŠããŸããŸããïŒ
远èš
2018/3/24 14æé ïŒæåºã³ãŒããžã®ãªã³ã¯ã貌ããŸããïŒãœãŒã¹ãèªããªããšçãäžãã£ãŠããŸããïŒCodeforces ã§ Hack 察çã«ããã䜿ããšããããèŠçŽ1ã«åŒã£ãããã®ã§ïŒããªãããã«ããŸããããïŒ
察象
å皮䞻æµèšèªã§ã®ã³ãŒãã£ã³ã°ã«ç²ããŠããŠæ°å転æããããæ¹ïŒãžã§ãŒã¯èšèªã§éãã§ã¿ããæ¹ïŒ äººãšã¯éã£ãããšãããŠæ³šç®ãéããŠã¿ããæ¹ïŒ
åœä»€ãç¹åŸŽçãªèšèªã§ã¯ïŒããã«å¿ããèå¯ããã2ããšã§ïŒæ®æ®µãšã¯éã£ãè§£ãæ¹ãèŠããŠããŠæ¥œãããããããŸããïŒ
TL; DR
å®è³ªã¢ã»ã³ãã©
Whitespace ãšã¯ïŒ
Edwin Brady æ°ãš Chris Morris æ°ã«ãã£ãŠèšèšãããèšèªã§ïŒ2003 幎ã®ãšã€ããªã«ããŒã«ã«çºè¡šãããèšèªã§ã3ïŒååã®éãïŒãœãŒã¹ã³ãŒãã¯ä»¥äžã®äžã€ã®ç©ºçœæåããæããŸãïŒ
-
ïŒã¹ããŒã¹ïŒASCII 32ïŒ -
ïŒæ°Žå¹³ã¿ãïŒASCII 9ïŒ -
ïŒæ¹è¡æåïŒASCII 10ïŒ4
ãããã®æåã®çµã¿åããã«ãã£ãŠåçš®åœä»€ã衚çŸããŸãïŒãããã Brainf*ck ã®æŽŸçå£åèšèªã§ã¯ãããŸããïŒã¹ã¿ãã¯ãšããŒããçšããŠã³ãŒãã£ã³ã°ãè¡ããŸãïŒããã§ããããŒãã¯ãã£ããããããŒãã®ãããªæå³ã§ã®ããŒãã§ã¯ãªãïŒããŒãé åã®æå³ãšæãããŸãïŒå¥œãã«äœ¿ã£ãŠããé åã®ãããªãã®ãšæã£ãŠãããŠåé¡ãªãã¯ãã§ãïŒ
ãŸãïŒä»¥äžã®èª¬æã«ãããŠã¯ïŒæåéãïŒå¯èªæ§ã®ããã«ã¹ããŒã¹ã SïŒæ°Žå¹³ã¿ãã TïŒæ¹è¡æåïŒlinefeedïŒã L ã§è¡šãããšã«ããŸãïŒèšèªã®ã¢ã€ãã³ãã£ãã£ããããïŒïŒ
åœä»€ã«ã€ããŠ5
Whitespace ã®ååœä»€ã¯ IMPïŒInstruction Modification ParameterïŒãšåŒã°ããæååã§å§ãŸããŸãïŒããã«ããåœä»€ãã«ããŽãªåããããŠããŸãïŒ
| IMP | ã«ããŽãª |
|---|---|
S |
ã¹ã¿ãã¯æäœ |
TS |
ç®è¡æŒç® |
TT |
ããŒãæäœ |
TL |
å ¥åºå |
L |
ãããŒå¶åŸ¡ |
IMP ã«ç¶ãæååã«ãã£ãŠçްããåœä»€ã衚çŸããŸãïŒåœä»€ãåŒæ°ããšãå Žåã¯ã³ãã³ãã®çŽåŸã«æŽæ°ãªãã©ã«ãæžããŸãïŒ
æŽæ°ãªãã©ã«
2鲿°ã«åºã¥ã衚çŸãããŸããïŒ2ã®è£æ°è¡šçŸã¯çšããããŸããïŒç¬Šå·ã»çµ¶å¯Ÿå€è¡šçŸãçšããŸãïŒS ã 0 ã«ïŒT ã 1 ã«å¯Ÿå¿ããŠããïŒL ã§çµç«¯ã衚ããŸãïŒä»»æãããé·ã®æŽæ°ãçšããããšãã§ããŸãïŒïŒããšãã° +4 㯠STSSLïŒ-7 㯠TTTTL ãšãªããŸãïŒãŸãïŒæµ®åå°æ°ç¹æ°ã宿°ã¯èŠå®ãããŠããŸããïŒ
ã¹ã¿ãã¯æäœ
| ã³ãã³ã | åŒæ° | åœä»€ã®å 容 |
|---|---|---|
S S |
æ°å€ | ã¹ã¿ãã¯ã«äžããããæ°å€ãç©ã |
S LS |
ãªã | ã¹ã¿ãã¯ã®å é ãšåãå€ãããã«ã¹ã¿ãã¯ã«ç©ã |
S LT |
ãªã | ã¹ã¿ãã¯ã®å é èŠçŽ ãšæ¬¡ã®èŠçŽ ãå ¥ãæ¿ãã |
S LL |
ãªã | ã¹ã¿ãã¯ã®å é èŠçŽ ãåãé€ã |
ããã§ïŒã¹ã¿ãã¯ã®å
é ã¯åŸã«å
¥ããããèŠçŽ ïŒå
ã«åãé€ãããèŠçŽ ïŒïŒC++ ã§ãããšããã® std::stack::top() ã§åŸãããèŠçŽ ïŒãæããŸãïŒ
ç®è¡æŒç®
| ã³ãã³ã | åŒæ° | åœä»€ã®å 容 |
|---|---|---|
TS SS |
ãªã | å ç® |
TS ST |
ãªã | æžç® |
TS SL |
ãªã | ä¹ç® |
TS TS |
ãªã | é€ç® |
TS TT |
ãªã | å°äœç® |
ã¹ã¿ãã¯ã«ç©ãŸããäºã€ã®æ°ã«ã€ããŠæŒç®ãè¡ããŸãïŒå ã«ç©ãŸããèŠçŽ ãå·Šãªãã©ã³ãïŒæ¬¡ã®èŠçŽ ãå³ãªãã©ã³ãã«ãªããŸãïŒæŒç®çµæãã¹ã¿ãã¯ã«ç©ãŸããŸãïŒ
ããŒãæäœ
| ã³ãã³ã | åŒæ° | åœä»€ã®å 容 |
|---|---|---|
TT S |
ãªã | æ ŒçŽ |
TT T |
ãªã | åãåºã |
æ ŒçŽã®éã¯ïŒãŸãæ ŒçŽå ã¢ãã¬ã¹ãïŒæ¬¡ã«æ ŒçŽãããå€ãã¹ã¿ãã¯ã«ç©ã¿ïŒãã®åœä»€ãåŒã³ãŸãïŒåãåºãã®éã¯ïŒåãåºãããã¢ãã¬ã¹ãã¹ã¿ãã¯ã«ç©ã¿ïŒãã®åœä»€ãåŒã³ãŸãïŒåãåºãããå€ã¯ã¹ã¿ãã¯ã«ç©ãŸããŸãïŒïŒ
å ¥åºå
| ã³ãã³ã | åŒæ° | åœä»€ã®å 容 |
|---|---|---|
TL SS |
ãªã | ã¹ã¿ãã¯ã®å é èŠçŽ ãæåãšããŠåºå |
TL ST |
ãªã | ã¹ã¿ãã¯ã®å é èŠçŽ ãæŽæ°ãšããŠåºå |
TL TS |
ãªã | ã¹ã¿ãã¯ã®å é èŠçŽ ãæãã¢ãã¬ã¹ãžæåãšããŠå ¥åãåãåã |
TL TT |
ãªã | ã¹ã¿ãã¯ã®å é èŠçŽ ãæãã¢ãã¬ã¹ãžæŽæ°ãšããŠå ¥åãåãåã |
ãããŒå¶åŸ¡
åçš®ãžã£ã³ããã©ãã«ä»ãïŒé¢æ°åŒã³åºããªã©ãè¡ãããšãã§ããŸãïŒã©ãã«ã¯æŽæ°ãªãã©ã«ãçšããŸãïŒãŸãïŒã©ãã«ã®åå空éã¯äžã€ã®ã¿ã§ããïŒãã¹ãŠã®ã©ãã«ã¯ unique ã§ããå¿ èŠããããŸãïŒ
| ã³ãã³ã | åŒæ° | åœä»€ã®å 容 |
|---|---|---|
L SS |
ã©ãã« | äžããããã©ãã«ãåœä»€ã®çœ®ãããå Žæã«ä»ãã |
L ST |
ã©ãã« | 颿°åŒã³åºã |
L SL |
ã©ãã« | ã©ãã«ã瀺ãå ã«ïŒä»¥äžåæ§ïŒç¡æ¡ä»¶ãžã£ã³ã |
L TS |
ã©ãã« | ã¹ã¿ãã¯ã®å é èŠçŽ ã 0 ãªããžã£ã³ã |
L TT |
ã©ãã« | ã¹ã¿ãã¯ã®å é èŠçŽ ãè² ãªããžã£ã³ã |
L TL |
ãªã | 颿°ãçµäºã㊠caller ã®å ãžåž°ã |
L LL |
ãªã | ããã°ã©ã ãçµäºãã |
以äžã Whitespace ã§äœ¿ããåœä»€åã«ãªããŸãïŒ
ããåºé£
çŸç¶ïŒAtCoder ã§ã¯ Whitespace ãçšããããšãã§ããŸããïŒããŒãïŒïŒãã®ããïŒä»å㯠C++ ã§ã€ã³ã¿ããªã¿ãå®è£ ãïŒWhitespace ã®ãœãŒã¹ãããã«åã蟌ãåœ¢ã§æåºããŸããïŒ
ãããæžããŠããéäžã«ã€ã³ã¿ããªã¿ã®å®è£ ãã¹ã«æ°ã¥ãïŒãWhitespace ãããäœãããæåºããŠããããšã倿ããã®ã§ïŒæ£ããçŽããŠåæåºããŸããïŒãŸã å®è£ ãã¹ããã£ãã仿§ã®åéãããããããããŸããïŒ
è§£æ³
0 åç®ïŒPracticeA - ã¯ãããŠã®ãã£ãšããŒã ãŒïŒWelcome to AtCoderïŒ
æŽæ° $a$ïŒ$b$ïŒ$c$ ããã³æåå $s$ ãäžããããã®ã§ $a+b+c$ïŒ' 'ïŒ$s$ïŒ'\n' ãåºåããŸãïŒ
Brainf*ck ãšã¯éãïŒæŽæ°ã®å ¥åºåã§èŠããããšã¯ãããŸããïŒããã ãã§ãïŒ
practice_1.ws
1 åç®ïŒABC086A - Product
æŽæ° $a$ïŒ$b$ ãäžããããã®ã§ $a\times b$ ã®å¶å¥ãå€å®ããŸãïŒ
ã$a$ ãå¶æ°ãªã 'Even'ãã$b$ ãå¶æ°ãªã 'Even'ãããã以å€ãªã 'Odd'ããšããæ¹éã§ãããã§ããïŒé¢åãªã®ã§æç€ºãããéãæãç®ãããã°ããã§ãïŒ
abc086_a.ws
2 åç®ïŒABC081A - Placing Marbles
æå $s_1s_2s_3$ ãäžããããã®ã§ïŒãããã«å«ãŸãã '1' ã®åæ°ãã«ãŠã³ãããŸãïŒæŽæ°ãšããŠåãåã£ãŠ 9 ã§å²ã£ãããŸããåºåããŠãããã§ããïŒçãã®ãããªæ°ãããã®ã§æç€ºéããããŸãïŒ3 åã®ã«ãŒããåãã°ããã§ãïŒ
abc081_a.ws
3 åç®ïŒABC081B - Shift only
$N$ åã®æŽæ° $A_1$ ãã $A_N$ ãäžããããã®ã§ïŒãããã®äºé²æ°è¡šç€ºã® trailing zero ã®æå°åæ°ãæ±ããŸãïŒ
ãããè§£ãã«ããã£ãŠã¯ $O(1)$ ã®ç©ºéããããã°ååã§ãïŒããªãã¡ãä»ã®å ¥åããšãä»ãŸã§ã® trailing zero ã®æå°åæ°ãã§ãïŒåæ°ãæ°ãã颿°ãšæå°å€ãæŽæ°ãã颿°ãäœããŸããïŒæåã®é£é¢ã§ãïŒ
ä»åã®ããã«ã«ãŒãäžã§ã«ãŒã倿°ã䜿çšããå¿
èŠããªããšãã¯ïŒã«ãŒã倿°ã®æ£è² ããããããé転ããŠãããš += 1 ãš jump if neg ã ãã§ã«ãŒããããããšãã§ããŠæ¥œã§ãïŒ6
abc081_b.ws
4 åç®ïŒABC087B - Coins
æŽæ° $A$ïŒ$B$ïŒ$C$ïŒ$X$ ãäžããããã®ã§ïŒ$500a+100b+50c=X$ ãæºããèªç¶æ°è§£ $(a, b, c)$ ã®åæ°ãæ°ããŸãïŒ$0\in\mathbb{N}$ïŒïŒ $a\le A$ïŒ$b\le B$ïŒ$c\le C$ ã§ãïŒ
äžéã«ãŒããæžããŸãïŒã«ãŒãã®æãå åŽã§å€å®çšã®é¢æ°ãåŒã³åºããŸãïŒã¹ã¿ãã¯ã«è¿ãå€ãç©ããªã©ã㊠caller åŽã§åæ°ãæ°ããã®ã綺éºãªã®ãããããŸãããïŒåŒã³åºãã颿°åŽã§åŠçããŠããŸããŸããïŒ
abc087_b.ws
5 åç®ïŒABC083B - Some Sums
æŽæ° $N$ïŒ$A$ïŒ$B$ ãäžããããã®ã§ïŒ$1$ ä»¥äž $N$ 以äžã®æŽæ°ã®ãã¡ã§ 10 鲿³ã§ã®æ¡åã $A$ ä»¥äž $B$ 以äžã§ãããã®ã®åæ°ãæ°ããŸãïŒ
ã«ãŒããåããŠé¢æ°ãåŒã³åºããŠåºåããŸãïŒãã®èŸºãããèç¡ãæãå§ããŠããŸãïŒ
abc083_b.ws
6 åç®ïŒABC088B - Card Game for Two
$N$ åã®æŽæ° $a_1$ ãã $a_N$ ãããïŒå€ã®å€§ããæ¹ãã亀äºã«äºäººã§åãåãããšãèããŸãïŒãã®ãšãïŒäž¡è ã®åŸãæŽæ°ã®åèšã®å·®ãæ±ããŸãïŒ
ãœãŒãããŠç¬Šå·ãå ¥ãæ¿ãã€ã€è¶³ããŠããã°ããã®ã§ããïŒWhitespace ã§ãœãŒããå®è£ ããæ°ã«ã¯ãªããªãã£ãã®ã§ïŒèå¯ãããŸãïŒ
$N$ åã®æŽæ°ã«éè€ãããå ŽåãèããŸãïŒåãæŽæ°ãäºã€ãã£ãå ŽåïŒäž¡è ã¯äº€äºã«åãåãããšããïŒå·®ãšããŠã¯ç¡èŠããããšãã§ããŸãïŒããªãã¡ïŒåæŽæ°ã®åæ°ã®å¶å¥ããæã£ãŠããã°ããããšã«ãªããŸãïŒ
$a_i$ ã®äžéãå°ããããïŒé
åã§ç®¡çããããšãã§ããŸãïŒå
·äœçã«ã¯ïŒå $i$ ã«å¯Ÿã㊠count[a_i] ã count[a_i] = 1-count[a_i] ã§æŽæ°ããŸãïŒ
å
¥åãåãåã£ãåŸã¯ïŒcount[100] ããéé ã«èŠãŠããïŒcount[j] ã 1 ãªãçãã« j ãè¶³ãåŒãããŸãïŒç¬Šå·ã¯å¥ã§ãã£ãŠãããŠäº€äºã«å€ããïŒïŒ
ããã§ïŒ$O(N+\max a_i)$ ã§è§£ããŸããïŒ
abc088_b.ws
7 åç®ïŒABC085B - Kagami Mochi
$N$ åã®æŽæ° $d_1$ ãã $d_N$ ã®ãã¡ã§ unique ãªãã®ã®åæ°ãæ°ããŸãïŒ7
å®è³ªçã« 6 åç®ãšåãã§ïŒåæ°ãæ°ããŠãããŸãïŒä»åã¯å¶å¥ã§ã¯ãªã OR ã§æŽæ°ããŸãïŒããªãã¡ïŒcount[a_i] = 1 ãšæŽæ°ããŠïŒcount[j] ã 1 ãªãçãã« 1 è¶³ããŸãïŒãšãããçŽæ¥ count[j] ãè¶³ããŠãããã§ãïŒç°¡åã§ããïŒ
abc085_b.ws
8 åç®ïŒABC085C - Otoshidama
æŽæ° $N$ ãš $Y$ ãäžããããã®ã§ïŒ
\left\{\begin{array}{l}
x + y + z = N \\
10000x + 5000y + 1000z = Y
\end{array}\right.
ã®èªç¶æ°è§£ïŒ$0\in\mathbb{N}$ïŒãã²ãšã€åºåããŸãïŒååšããªããã° '-1 -1 -1' ãåºåããŸãïŒ
$Y$ ã 1000 ã®åæ°ã§ããããšã«ãªã£ãŠããã®ã§ïŒY = Y/1000 - N ãšããŠããïŒx ãš y ã«ã€ããŠäºéã«ãŒããåã㊠Y-9*x-4*y ã 0 ããããã x ãš y ãèŠã€ããã°ïŒããããš N-x-y ãïŒããã§ãªããã° -1 ãã¡ãåºåããŸãïŒ
å€éã«ãŒããåãã€ã€ïŒã«ãŒã倿°ã䜿ãããšãããšïŒãã¶ãïŒã¹ã¿ãã¯ã ãã§ã¯äºè¶³ããªããªãã®ã§å€§å€ã§ããïŒ
abc085_c.ws
9 åç®ïŒABC049C - çœæŒå€¢ / Daydream
æ£èŠè¡šçŸã§æ®ŽããŸãïŒã§ããããªãïŒïŒ
arc065_a.ws
10 åç®ïŒABC086C - Traveling
ãã¶ã 9 åç®ã®æ¹ãã€ããã§ãïŒããã $O(1)$ ã®ç©ºéãããã°ååã§ããïŒ
tïŒxïŒy ããã³åã®å€ãšã®å·®åã®çµ¶å¯Ÿå€ dtïŒdxïŒdy ãæã£ãŠãããŸãïŒdt < dx + dy ãŸã㯠(dt+dx+dy)%2 > 0 ã«ãªãããšãããã° 'No'ïŒæåŸãŸã§èãåãã° 'Yes' ã§ãïŒå€§æåå°æåã«æ°ãåãããŠæ¹è¡ãåºåãå¿ã㊠WAïŒãªããŠããšããªãããã«ããŸããããïŒ
ãšããã§ïŒã©ããã dx ãªã©ãèæ
®ããªããŠã AC ã§ããåè§£æ³ãããããã§ãïŒããšïŒ$i=1$ ã®éšåããå€å®ããªãïŒãšæãããïŒãã°ãæåºãããšãã WA ã®ã±ãŒã¹ãäžã€ã ãã ã£ãã®ã§æãã£ãã§ãïŒ
arc089_a.ws
ããšãã
Whitespace ãæžããŠããã¯ããªã®ã«ïŒã³ãŒãã£ã³ã°ãã§ã€ãºã§ã¯ã»ãšãã©å°åå¯èœæåã°ããå ¥åããŠããŸããïŒã¢ã»ã³ãã©é¢šã®ä»£æ¿èšèªãæžããŠïŒããã Whitespace ã«å€æããã¹ã¯ãªããïŒBashïŒã«ããŸããããŸããïŒ
ãã®ã¹ã¯ãªããã«ãã°ããã£ããïŒä»£æ¿èšèªã§ãã¹ãåã蟌ãã ãïŒæ£ã ã§ããïŒçœ°ãåœãã£ãããã§ããïŒïŒ
ããš Whitespace ã®ãœãŒã¹ã貌ãéã«éåžžã® ``` ã§å²ãæ¹æ³ã§ã¯ã¿ããã¹ããŒã¹ã«å±éããããå°åå¯èœæåã®ãªãè¡ã®ç©ºçœãçããããããŠã€ããã£ãã§ãïŒçµå± HTML ãçŽæ¥æžããŸããïŒããæ¹æ³ããã£ããæããŠã»ããã§ããïŒ
-
Can-do's and Can't-do's ã® 4. â©
-
n57577 â©
-
https://esolangs.org/wiki/Whitespace ããã®ãªã³ã¯å ãåèã«ãªããŸãïŒ â©
-
å®éã«ã¯æ°Žå¹³ã¿ããæ¹è¡æåãå ¥åããŠããã®ã«ïŒããã§ã®è¡šç€ºã§ã¯åãã«ãªã£ãŠããŸã£ãŠããŠã€ããïŒããæ¹æ³ãããã°æããŠã»ããã§ãïŒ...ãšæã£ããã©ãã¬ãã¥ãŒãšã¯è¡šç€ºãéã£ãŠããŠå°æïŒ â©
-
https://hackage.haskell.org/package/whitespace-0.4/src/docs/tutorial.html ã http://web.archive.org/web/20150618184706/http://compsoc.dur.ac.uk/whitespace/tutorial.php ãªã©ïŒ â©
-
Human Resource Machine ãšããã²ãŒã ã§åŸãç¥èŠã§ãïŒåžžèãªã®ãããããŸããïŒ â©
-
n575 â©
-
Atcoder ã§ã¯ãªã㊠AtCoder ã§ãïŒééããªãããã«ããŸããããïŒWhiteSpace ã§ã¯ãªã㊠Whitespace ã ãšæãã®ã§ããïŒæ¢åã®ã¿ã°ã«åãããŠããŸããŸããïŒãããïŒïŒ
æååãåŸãããèªãã§ãã£ãŠ'maerd'ïŒ'remaerd'ïŒ'esare'ïŒ'resare'ã®ãããã«ããããããªãéšåãããã°'NO'ïŒå é ãŸã§ãããããç¶ããããã°'YES'ãåºåããŸãïŒcase-insensitive ãªäººé8ã«ãªããªãããã«æ³šæããŸãããïŒ â©