ããã«ã¡ã¯ãHabrïŒ
ãã®æçš¿ã¯ãçŽ3é±éåã®Ludum Dare 34ã³ã³ãã¹ããžã®ç§ã®åå ã«é¢ãããã®ã§ãã
ãã®çµæãGrowing Sakuraãšããããºã«ãã§ããŸããããã®ã²ãŒã ãã¬ã€ã¯GIFã§èŠãããšãã§ããŸãïŒå¿é
ããªãã§ãã ãããééã¯300Kbã ãã§ãïŒã

ã²ãŒã ã®ã«ãŒã«ã«ã€ããŠç°¡åã«èª¬æãããšãæåã¯å
è§åœ¢ã®ãã£ãŒã«ããšããã€ãã®æ ¹èœïŒãŸãã¯äžèšã®GIFã®ããã«1ã€ïŒããããŸãã ãããã3ã€ã®ãã©ã³ããéå§ã§ããŸãïŒ2ã€ã®æ¹æ³-ããŠã¹ã®å·ŠãŸãã¯å³ãã¿ã³ãã¯ãªãã¯ããŠïŒã ãã©ã³ãã®å·Šã®åèœã䜿çšããŠãããŠã¹ã®å·Šã¯ãªãã¯ã§Yãã©ã³ããäœæããããã«ãã©ã³ããããã«å³ã«ç¶ããããšãã§ããŸãïŒIãã©ã³ãïŒã ãã©ã³ããã©ã®æ¹åã«ãæé·ã§ããªãå ŽåïŒå¯Ÿå¿ããã»ã«ãããžãŒã§ããããæ£ããæ¹åã«ã»ã«ããªãå ŽåïŒããã©ã³ãã¯æé·ããŸããã æåŸã®æ¡ä»¶ã«åŸã£ãŠããã©ã³ãã®ãå±éãã®é åºãæ£ããéžæããå¿
èŠããããŸãã çµæã¯ã2ã€ã®é£æ¥ããæã®éã«éãè§ããªããããªããªãŒïŒãŸãã¯è€æ°ã®ããªãŒïŒã§ãã ã²ãŒã ã®ç®çã¯ãç«¶æå Žã®ãã¹ãŠã®ã»ã«ãã«ããŒããããšã§ãã
ã«ããã®äžãèŠãªãã§ã10ç§éèããŠããã®ã²ãŒã ãã©ãã»ã©é£ããããèããŠã¿ãŠãã ããã
Ludum Dareãšã¯äœã§ããïŒ
ãã®ã³ã³ãã¹ãã¯4ãæã«1åéå¬ãããä»åã¯ãã§ã«34åç®ã®ã€ãã³ãã§ããã ç«¶äºã®æ¬è³ªïŒã³ã³ãæåïŒïŒç¹å®ã®ãããã¯ã«é¢ããã³ã³ãã¥ãŒã¿ãŒã²ãŒã ãäœæããã®ã«48æéããããŸãã ãã®ãããã¯ã¯ãã³ã³ãã¹ãã®æåã®æ°åã§ç¥ãããããã«ãªããŸãã ã²ãŒã ã¯åç¬ã§ãŒãããäœæããå¿
èŠããããŸãïŒãã¹ãŠãŒãããïŒã³ãŒããã°ã©ãã£ãã¯ããµãŠã³ããªã©ïŒããã ãããµãŒãããŒãã£ã®ããã°ã©ã ãšã³ãŒãéçºã䜿çšããããšã¯èš±å¯ãããŠããŸãããäºåã«çºè¡šããå¿
èŠããããŸãïŒããšãã°ãLudum Dare Webãµã€ãã®ããã°ã«æžã蟌ã¿ãŸãïŒ PaintãUnityãC ++ãDelphiã䜿çšããŸããã¹ã¿ãŒã¿ãŒãããžã§ã¯ããã³ãã¬ãŒããžã®ãªã³ã¯ã¯ãã¡ãã§ãïŒã ãŸããåçŽåããããªã©ãã¯ã¹ãžã£ã ããããŒãããããŸãã72æéãã®ã²ãŒã ãããŒã ã«ããããå€ãå®çžŸã䜿çšããããã²ãŒã ã®æåŸã«ãœãŒã¹ã³ãŒããå
¬éãããããå¿
èŠã¯ãããŸããã ããããç§ã¯å人çã«ãžã£ã ã®ããããŒãã«ã¯èå³ããããŸããã48æéãæºããæéããªãå Žåã«ã®ã¿åå ããããšããããŸãã
ã³ã³ãã¹ãã®ããŒãã¯æç¥šã«ãã£ãŠæ±ºãŸããŸããä»åã¯ããæé·äžããšã2ã€ã®ãã¿ã³ã³ã³ãããŒã«ããšãã2ã€ã®ãããã¯ãäžåºŠã«æå€§ã®æç¥šæ°ãç²åŸããŸããã ãããã®ãããã¯ã®ããããããŸãã¯äž¡æ¹ãäžåºŠã«äœ¿çšã§ããŸãã ãããã¯ã®è§£éã¯åå è
ã®è£éã«çãŸããŸããããšãã°ãæåã®ãããã¯ã¯ãæé·ãããæé·ããŸãã¯ãæé·ããšè§£éããã2çªç®ã¯ã2ã€ã®ãã¿ã³ã®ç®¡çããŸãã¯ã2ã€ã®ãã¿ã³ã®åããšè§£éãããŸãã äžèšã®ã²ãŒã ã®èª¬æãããããããã«ãããæå³ã§äž¡æ¹ã®ããŒããçµã¿åãããŸããã
忥
ç§ãç®ãèŠãŸãããšããç«¶äºã¯ãã§ã«æ°æéç¶ããŠããŸããã æãããªè§£æ±ºçã®ãããã¯ã¯æäŸããŸããã§ããã ãã£ãããšæé£ããšããã³ãŒããŒã泚ãã§ãç§ã¯ãã®ãããã¯ã«èå³ããããã»ã©é¢çœããã®ãèããŠããŸããã ãã¡ãããç§ã¯äž¡æ¹ã®ãããã¯ãäžç·ã«ãããã£ãã§ãã ããã€ãã®æŠå¿µãæµ®äžããŸããïŒ
- ãŠã£ã³ããŠãããŒãžã£ãŒããšãã¥ã¬ãŒãããããºã«ïŒç»é¢ã«ã¯å€æ°ã®ãŠã£ã³ããŠãããïŒãããã2ã€ã®ãã¿ã³ããããŸãïŒïŒãéããå¿
èŠããããŸããã䜿çšå¯èœãªäž¡æ¹ã®ãã¿ã³ãéåžžã«é£ããæäœãå®è¡ããããšãããããããã¹ãŠãè€éã§ãïŒããšãã°ããã®ãã¿ã³ã®å³åŽã®ãŠã£ã³ããŠãéããŸãïŒã ãžã§ãŒã¯ãšããŠããåæããšããèŠåºãã®ãŠã£ã³ããŠãäœæãããåæããããšãåæããªããã®2ã€ã®ãã¿ã³ãåãããBla-bla-bla-blaãã®ãããªããã¹ãã§ãŠã£ã³ããŠãéããããšã§ããã
- ããŒã°ã«æŠç¥ïŒå°äžåºå°ã®éçºã ããŒã¹ã¯æ£æ¹åœ¢ã®ã¿ã€ã«ã§æ§æãããåã¿ã€ã«ã§2ã€ã®ã¢ã¯ã·ã§ã³ã®ãããããå®è¡ã§ãããããããŒã¹ãæ¡åŒµïŒæé·ïŒããŸãã
- ãŠãããã®æã§æ§æãããå¥åŠãªã¡ã«ããºã ã«ã¯ãåãŠãããã«ããªã³ããšããªããã®2ã€ã®ãã¿ã³ããããŸãã
- ç¹°ãè¿ããŸãããä»åã¯å
¥æ€è
IIã®æå°éã®ã¯ããŒã³ã§ãã ã¿ã€ã«ã¯å
è§åœ¢ã§ã2ã€ã®ã¢ã¯ã·ã§ã³ïŒéè·¯ã®è¿œå ãŸãã¯å®¶ã®å»ºèšïŒã®ãããããè¡ãããšãã§ããŸãã æ¥åŸé
ã®å»ºç©ã建èšããã«ã¯ãã¿ã€ã«ã«è€æ°ã®éè·¯ãèšçœ®ããå¿
èŠããããšããèãã§ããã ããããäžæã®çŽã§ã®å®éšã¯ãéè·¯ãã©ããããããããã«çµãããéèœã®æé·ãæ¢ããããšã瀺ããŸããã
ãããã®æŠå¿µã¯ãã¹ãŠéå±ã§ããããå®è£
ããã«ã¯è€éãããŸãïŒãããŠããã®ç«¶äºã®åã«1ãæã®ä»äºãšå匷ã®ã©ãã·ã¥ããã£ãã®ã§ããããç·åŒµãããããããŸããã§ããïŒã ã¹ãŒããŒãããµãŽã³ã¯ããŒã³ãäœæãããšããã¢ã€ãã¢ããããŸããïŒ2ã€ã®ãã¿ã³ã³ã³ãããŒã«ããããŸãïŒïŒãããæé·ãããªãã£ãããããã®ã¢ã€ãã¢ãæ¡ç¹ããŸããã æ¥äžã«ã¯ãå
¥æ€è
ã®æŠå¿µãç°¡çŽ åããããšã§åŸãããæ¬¡ã®æŠå¿µãçŸããŸããã
- ããã€ãã®ã»ã«-ç³ãããã€ãã®è±-ã«å
è§åœ¢ã®ãã£ãŒã«ãããããŸãã ãããŠãè±ããããã€ãã®æ€ç©ã®æ ¹ãè²ãŠãªããã°ãªããŸããã æ ¹ã¯ããã®æçš¿ã®åé ã§èª¬æããã«ãŒã«ã«åŸã£ãŠæé·ããŸãã Beanããšã«ãBeanããªãŒã倧ããå¥å
šã«æé·ããããã«ã«ãŒãã·ã¹ãã ãã«ããŒããå¿
èŠãããã»ã«ã®æ°ãããã£ãŠããŸãã ãã¬ãŒã€ãŒã®ä»äºã¯ããã¹ãŠã®è±ãæé·ããããã«æ ¹ãæé·ãããããšã§ãã
ã²ãŒã ã®ã«ãŒã«ã¯ãæ¬¡ã®æ°åŠçåé¡ããçããŸããã
æ°åŠã®åé¡å¹³é¢ã¯ãçããæ£äžè§åœ¢ã§èè£
ãããŠããŸãïŒã€ãŸãã
äžè§åœ¢ã®å¯ãæšåŒµããäžããããŠããŸãïŒã äžè§åœ¢ã®é ç¹ãåæãããã€ã³ãã¯ããŒããšåŒã°ãã6ã€ã®ãšããžãåããŒãããçºããããŸãã äžéšã®Some骚ã¯èµ€ãå¡ãããŠãããäžéšã«é£æ¥ãã2ã€ã®èµ€ãçžã®éã¯120床ãŸãã¯180床ã§ãïŒéè§ã¯ãããŸããïŒã 2ã€ã®ããŒããããããšã蚌æããŸãã1ã€ã®ããŒãããä»ã®ããŒãã«ã¢ã¯ã»ã¹ã§ãããèµ€ããšããžã«æ²¿ã£ãŠç§»åããŸãã
ãã®ããããã®ãããªã«ãŒã«ã«åŸã£ãŠãããªãè€éãªããºã«ãäœæã§ãããšæããŸããã
ã²ãŒã ã®ä»çµã¿ã®ãããã¿ã€ããããã«ã¹ã±ããããŸããã

ãããŠãç§ã¯ãããè¯ãã£ãã®ãèŠãŸããïŒ
1æ¥ç®ã®çµããã«ãæ ¹ã®æé·ã®ã¢ã€ãã¢ã¯ãæ¡ã®æã®æé·ã®ã¢ã€ãã¢ã«å€æãããŸããïŒãã ããã²ãŒã ã³ãŒãã§ã¯ããã¹ãŠã®ãªããžã§ã¯ãã¯ãŸã æ ¹ã«åŸã£ãŠåœåãããŠããŸãïŒïŒã ã²ãŒã ãç°¡çŽ åããããã«ããã¹ãŠã®æ°åãæšãŠããããŽãŒã«ã¯æãåçŽãªå®åŒåã«çž®å°ãããŸãããç«¶æå Žå
šäœãã«ããŒããã ãã§ãã ã²ãŒã ã®ãããã¿ã€ãã¯æ¬¡ã®ããã«æé·ããŸããã

æãé ãèãŸã§ã®è·é¢ã«å¿ããŠæšã®æã倪ããããšããã¢ã€ãã¢ããããŸããïŒããã¯gifã§èŠãããšãã§ããŸãïŒã ããããé·ãæã®å Žåã䌞ã³ãéåžžã«å€§ãããªããå€èŠ³ãæªåããŸããã ç§ã¯ãã¹ãŠãçŸããä»äžããããã«å€ãã®æéãè²»ãããŸããã ãã®çµæã圌ã¯åŸç¹ããŸãã-ããã«å€ãã®ããšãããªããã°ãªããŸããã§ããã ãã以éããã¹ãŠã®æã¯åãåãã®ãŸãŸã§ããã
ããã§ãç§ã¯æåã®æ¥ãçµããããšã決ããŠãå¯ãŸããã
äºæ¥ç®
ãã€ãã®ããã«ãæåã®æ¥ã®åŸã®å€¢ã§ãç§ã¯æãããšã決ããªãã£ããã代ããã«äºå€ç®ã¯ç ããªãã ååäžãã¬ãã«ãèããŠåº§ã£ãŠããŸããã 圌ã¯Wordã§å
è§åœ¢ã®ã°ãªãããã¹ã±ããããŠå°å·ããéçãšæ¶ããŽã ã§ããã«æ¯ãåããŸããã èªåãœã«ããŒããªããã°ç¶ç¶ããã®ã¯é£ããããšãæããã«ãªããŸããã
ããã«èšã£ãŠãã£ãã C ++ã§ç°¡åãªããºã«ãœã«ããŒãã¹ã±ããããŸããã ãã¬ãŒã€ãŒã®å¯èœãªãã¹ãŠã®ã¢ã¯ã·ã§ã³ãååž°çã«å埩ãã解決ãããããºã«ã確èªããŸãã åæã®åå埩ã§ãã²ãŒã ã®çŸåšã®ç¶æ
ã¯std :: setã«ä¿åãããŸãã åŸã§åãç¶æ
ã®ã²ãŒã ãããå Žåãæ€çŽ¢ã¯ããŒã«ããã¯ãããŸãã ãããã£ãŠããœã«ããŒã¯åãã·ããªãªã100åèæ
®ããããšã¯ãããŸããã
äžèšã®2ã€ã®GIFã®ããºã«ïŒããºã«AãšåŒã³ãŸãããïŒã«ã¯ã47çš®é¡ãã®ãœãªã¥ãŒã·ã§ã³ããããŸãã 10810046ã®ã²ãŒã ç¶æ
ãèæ
®ãããŠããéãå®å
šã«æ€çŽ¢ããã®ã«93ç§ããããŸããã ãã®ãœã«ããŒã¯å°æ¥çã«å€§ãã«åœ¹ç«ã¡ãŸããã
ç°ãªãã¬ãã«ã®ãœã«ããŒã®äŸïŒ

ãã®ã¬ãã«ã¯7ç§ã§è§£æ±ºããã7111211ã®ç¶æ
ã¯std :: setã«ä¿åãããæ£ç¢ºã«1ã€ã®ãœãªã¥ãŒã·ã§ã³ãèŠã€ãããŸããã äžçªäžã®å¥åŠãªç·ã¯ãã²ãŒã èªäœã«ãã§ã«æ¿å
¥ãããŠããã¬ãã«ã®èª¬æã§ãã
å°ãåŸããœã«ããŒã¯ãã¥ãŒãªã¹ãã£ãã¯ãªãå€ç¬ãªã»ã«ãã«ãã£ãŠæé©åãããŸããã ã€ãŸããããã¹ãããã§ã空ãã»ã«ã®1ã€ãå æã»ã«ïŒãå£ããŸãã¯æ¡ã®æããã§ã«æé·ããŠããã»ã«ïŒã«å²ãŸããŠããããšã倿ãã飿¥ããã»ã«ãããã®ã»ã«ã«æãå
¥ããããšãäžå¯èœãªå Žåã解決çããªãããšãæããã«ãªããŸãããããŠããã¹ãã¯ããŒã«ããã¯ããŸããã ãã®ãã¥ãŒãªã¹ãã£ãã¯ã远å ãããšãããºã«Aã¯5ç§ã§åŠçããå§ããç¶æ
ã®æ°ã¯723225ã«ãªããŸãã
2æ¥ç®ã®çµãããŸã§ãç§ã¯é¢çœãã²ãŒã ã°ãªãããæã§æããããã°ã©ã ã§ãããã解決ããŸããã ãã®éã«ãã²ãŒã ã«ã¡ãã¥ãŒã远å ããŸããïŒãŸãããœã«ããŒããœãªã¥ãŒã·ã§ã³ãåæãããšãã«ä»ã«äœãããŸããïŒïŒãã¢ã€ã³ã³ãåæç»ããŸããã ã²ãŒã ã¯æ¬¡ã®ããã«ãªãå§ããŸããã

gifãããããããã«ã40ãã®ããºã«ãéçºãããšãããããªãéå¿çãªã¿ã¹ã¯ãèšå®ããŸããã gifã®äœææãŸã§ã«ã¯ã40ã®ãã¡17ã¬ãã«ããæºåãã§ããŠããŸããã§ããããã³ã³ãã¹ããçµãããŸã§ããŸã 10æéã»ã©ã®å€ããããŸããã
ããã€ãã®ã¬ãã«ã¯æ¬¡ã®ããã«çæãããŸãããããçš®ã®å¯Ÿç§°çãªå³ãæãããæ ¹èœããã®ã©ã³ãã ãªã»ã«ã«çªã£èŸŒãŸããŸããã ãã®åŸããœã«ããŒãèµ·åããŸããã åŸããããœãªã¥ãŒã·ã§ã³ãå€ãããããŸã£ãããªãããšã倿ããå Žå-ã¬ãã«ããããã«å€æŽãïŒåœ¢ç¶ãå°ã倿Žããããã«ãŒãã¹ãã©ãŠããå¥ã®å Žæã«ç§»æ€ããŸãïŒããœã«ããŒãåã³èµ·åããé©åãªã¬ãã«ãæ§ç¯ããããŸã§ç¶ããŸãã
ä»ã®ã¬ãã«ã§ã¯ãå³ã¯æå³çã«é察称ã§ãããéåžžãæ¡ã®ããã€ãã®æãå
±éã®ãå¡ãã«åæããŸãããã®åŸãããããæ
éã«ç·šãå¿
èŠããããŸããã ãããã®ã¬ãã«ããœã«ããŒã䜿çšããŠäœæãããŸããã
次ã«ãããã€ãã®æ ¹èœãæã€ã¬ãã«ã远å ãå§ããŸããã ã²ãŒã ã¯ããã«ããã«å€æ§ã«ãªããŸããïŒ ããã€ãã®èœãããã¬ãã«ã®äŸïŒ

ã¯ãã1ã€ã®ã»ã«ã ããã«ããŒããŠã¬ãã«ãéæã§ããªãå ŽåããããŸã...
å€ã«ãªããšãã²ãŒã ã®ã«ãŒã«ãå«ãç»é¢ãã²ãŒã ã«è¿œå ããçŽ æŽãããBosca Ceoilããã°ã©ã ã䜿çšããŠããã€ãã®ãµãŠã³ããäœæããæçµçã«40ã®ã¬ãã«ïŒ40ãKarlïŒïŒããã¹ãŠä»äžããŸããã æåŸã®ã¬ãã«ã¯éåžžã«è€éã§ãããããç§ã®ãœã«ããŒã«ã¯å®å
šã«ã¯åãå
¥ããããŸããã圌ã¯ç®ã®åã§ããã€ãã®è§£æ±ºçãèŠã€ããèšæ¶ãã©ã®ããã«çµãããã¯ã©ãã·ã¥ããŸãã ãããã£ãŠãã²ãŒã å
ã®ãã¹ãŠã®ããºã«ã«ã¯è§£æ±ºçããããšèªä¿¡ãæã£ãŠèšããŸããããœãªã¥ãŒã·ã§ã³ã®æ°ã¯æ£ç¢ºã«ã¯ããããŸããã
ã²ãŒã ã¯æåŸã®1æéã§çµäºãããã§ã«ã³ã³ãã¹ããŠã§ããµã€ãã«æ®ã£ãŠããæã匱ããŠããŸããã
ã³ã³ãã¹ãã®åŸãäž»å¬è
ã¯æç¥šã«3é±éãäžããŸãã Ludum Dareã¡ã³ããŒã¯ãä»ã®ã¡ã³ããŒã®ã²ãŒã ãããŠã³ããŒãããŠè©äŸ¡ããŸãã ç§ããããçŽ1é±éè¡ããŸããããåæã«ãGrowing Sakuraã²ãŒã ãã©ãã»ã©é£ããããèããŠããŸããã ãã®çµæããã¹ãŠã次ã®ããã«ãªããŸããã
æé·ããŠããæ¡ã¯NPå°é£ã§ã
ããã§ã蚌æ ãè¿°ã¹ãããšããŸãïŒã©ããã§ãããå°ç¡ãã«ããªãã§ãã ããïŒïŒã
ãã®èšäºã§ã¯ãå¹³é¢ç«æ¹3é£çµã°ã©ãã®ããã«ããã¢ã³ãµã€ã¯ã«ã®ååšããã§ãã¯ããåé¡ãNPå®å
šã§ããããšã®èšŒæ ãèŠã€ããããšãã§ããŸãïŒç°¡æœã«ããããã«XãšåŒã³ãŸãããïŒã ããã«çè§£ã§ããªãåèªããã¹ãŠè§£èªããŸãã
ã°ã©ãã¯ããã€ãã®ãã€ã³ãïŒé ç¹ãšåŒã°ããŸãïŒã§ããããã®ããã€ãã®ãã¢ã¯ç·ã§çµã°ããŠããŸãïŒãšããžãšåŒã°ããŸãïŒã ã°ã©ãã¯ããšããžã亀差ããªãããã«å¹³é¢ã«é
眮ã§ããå Žåã
å¹³é¢ãšåŒã°ããŸãã ã°ã©ãã¯ãé ç¹ã®ããããããæ£ç¢ºã«3ã€ã®ãšããžãåºãŠããå Žåã
ãã¥ãŒããã¯ãšåŒã°ããŸãã ã°ã©ãã®å°ãªããšã2ã€ã®éšåã®ããã«å°ãªããšã3ã€ã®ãšããžãåé€ããå¿
èŠãããå Žåãã°ã©ãã¯
3æ¥ç¶ãšåŒã°ããŸãã ã°ã©ãã®
ããã«ããã¢ã³ãµã€ã¯ã«ã¯ããã¢ããšã«ç°ãªãé ç¹v
1 ãv
2 ã...ãv
nã®ã·ãŒã±ã³ã¹ã§ãããv
iãšv
i + 1ã¯1 <= i <nã®ãšããžã§æ¥ç¶ãããé ç¹v
nãšvã¯ãšããžã§æ¥ç¶ãããŸã
1 ãããã§nã¯ã°ã©ãå
ã®é ç¹ã®æ°ã§ãã ããšãã°ã次ã®å³ã¯ãå¹³é¢ç«æ¹3é£çµã°ã©ãã®ããã«ããã¢ã³ãµã€ã¯ã«ã瀺ããŠããŸãã
NPé£æåºŠãšNPå®å
šæ§ã®å®çŸ©ã¯ããã»ã©åçŽã§ã¯ãããŸããã ããããç§ã¯ãã¿ãã¬ã®äžã§åé¡ãç°¡åã«èª¬æããããšããŸãã
ããããçš®é¡ã®NPã®éå±ã決å®åé¡ã¯ãäœããã®æ£åŒãªã·ã¹ãã ã®ãã¬ãŒã ã¯ãŒã¯å
ã§å®åŒåããã質åã§ããããã¯ãããŸãã¯ãããããã§çããããšãã§ããŸãã ããšãã°ããxãšyãäžããããå Žåãxãyã§å²ãåãããšããã®ã¯æ¬åœã§ããïŒããšããåé¡ã¯ã解決å¯èœæ§ã®åé¡ã§ãã ãããããA + Bã¯ãããã«ãªãã§ããããïŒããšãã質åã¯ã解決å¯èœæ§ã®åé¡ã§ã¯ãããŸããã
åœŒå¥³ïŒæ£çŽã«çããŠãã ãããã¯ããŸãã¯ãããã倧äžå€«ã§ããïŒ
圌ïŒèããŠ
圌女ïŒãªãç·æ§ã¯é髪ãç¬ãã®ã§ããïŒ
圌ïŒã¯ã
ïŒ æ±ºå®åé¡ã«é¢ããbash ïŒ
ã¯ã©ã¹NPã¯ãè¿œå æ
å ±ïŒãããã
èšŒææž ïŒãããå Žåãå€é
åŒæéã§çããã¯ããããã§ãã¯ã§ãããã®ãããªå¯è§£æ§ã®åé¡ã®ã»ããã§ãã ããã«ããã¹ãŠã®å
¥åãã©ã¡ãŒã¿ãŒã«ã€ããŠãçãããã¯ããã®å ŽåãèšŒææžãååšããå¿
èŠããããŸãïŒçãããã¯ããã®å
¥åããŒã¿ã«ã€ããŠã¯ããã§ã¯ãããŸããããããã§ãªãå ŽåããããŸãïŒã ããšãã°ããããã«nåã®é ç¹ãæã€ã°ã©ãGããããŸãããããã«ããã¢ã³ãµã€ã¯ã«ãããã®ã¯æ¬åœã§ããïŒããšããèšŒææžã®åé¡ã§ãã ãããã£ãŠãã¯ã©ã¹NPã«ãããŸãã
ãããã
co-NPã¯ã©ã¹ã¯
NPã¯ã©ã¹ãšéåžžã«ãã䌌ãŠããŸãã远å ã®æ
å ±ïŒãããã
åäŸ ïŒãããå Žåãå€é
åŒæéã§çã "no"ããã§ãã¯ã§ããå€ãã®è§£æ±ºå¯èœæ§ã®åé¡ããããŸãã ããšãã°ããããã«æ°XãããããããçŽ æ°ã§ãããšããã®ã¯æ¬åœã§ããïŒããšããå¯è§£æ§ã®åé¡ã®å ŽåãåäŸã¯1ãšXãšã¯ç°ãªãæ°Xã®çŽæ°ã§ãããããã£ãŠããã®åé¡ã¯ã¯ã©ã¹co-NPã«ãããŸãã ç¹°ãè¿ããŸããããããããããšã«ãå¿
ãåäŸãå¿
èŠã§ãã
ã¯ã©ã¹P-å€é
åŒæéã§è§£ãããšãã§ãããã¹ãŠã®å¯è§£æ§åé¡ã®ã»ããããããŸãã Pã§æ£åŒã«è§£ãããšãã§ããããšã«æ³šæããŠãã ããã ãA + Bã¯ãããã«ãªãã§ããããïŒããšãã質åã¯ããã«ã¯å
¥ããŸããïŒ ïŒãããã«ç°ãªã
FPã¯ã©ã¹ã«å
¥ããŸã ïŒã ãããããã®çš®ã®åé¡ã¯ãå¥ã®ãã©ã¡ãŒã¿ãŒkã远å ããããšã«ãããåžžã«äžé£ã®å¯è§£æ§ã®åé¡ã«åå®åŒåã§ããŸãããåŒA + Bã®kçªç®ã®ãããã1ã§ããããšã¯æ¬åœã§ããïŒã ãã®ãããªäžé£ã®ã¯ãšãªãäœæããåŸãå®éã
ã¯ãã¯ã«ãããšã ãA + Bã¯ãããã«ãªãã§ããããïŒããšããåé¡ã解決å¯èœæ§ã®åé¡ã«å¯ŸããŠ
å€é
åŒçã«åæžããŸãã ããããããã«ã€ããŠã¯ä»¥äžã§è©³ãã説æããŸãã
ã¯ã©ã¹Pã®ã¿ã¹ã¯ã¯ãã¹ãŠã¯ã©ã¹NPã«ãããŸããçããã¯ããã¯äžè¬çãªèšŒææžã䜿çšããŠå€é
åŒæéã§ãã§ãã¯ã§ããããã§ãïŒããšãã°ãã
æ¯ãèªãïŒ ããšããèšŒææž
ã¯äœ¿çšããŸã ïŒã æ€èšŒã¢ã«ãŽãªãºã ã¯æ¬¡ã®ãšããã§ããèšŒææžãç Žæ£ããå€é
åŒæéã§å
ã®è³ªåã«å¯ŸããçãããŒãããèŠã€ããã ãã§ãã åæ§ã®çç±ã§ãã¯ã©ã¹Pã®åé¡ãã¯ã©ã¹co-NPã«ãããŸãã
ããäžåºŠãã¯ã©ã¹ã¡ã³ããŒã·ããã®è€éãã«ã€ããŠã ãæ°XãçŽ æ°ã§ããããšã¯æ¬åœã§ããïŒããšãã質åã¯co-NPã«å±ãããæ°Xãåææ°ã§ãããšããããšã¯æ¬åœã§ããïŒããšãã質åã¯NPã«å±ããŸãã
3ã€ã®ã€ã³ãã£ã¢ã³ã¢ã«ãŽãªãºã ã«ããã°ããããã®è³ªåã®äž¡æ¹ã«å€é
åŒæéã§çããããšãã§ããŸãã ãããã£ãŠããããã®è³ªåã®äž¡æ¹ã¯ãä»ã®ãã¹ãŠã®ãã®ã«ãã¯ã©ã¹Pã«å±ããŠããŸãïŒ ãã ãããããã®2ã€ã®è³ªåã¯ã次ã®éåžžã«é¡äŒŒãã
質åãšã»ãšãã©å
±éç¹ããããŸããããXã®1ãã倧ããæå°ã®é€æ°ã¯äœã§ããïŒãïŒNPãŸãã¯co-NPã®ãããã«ãå«ãŸããŠããããå€é
åŒæéïŒããã³
RSAæå·åã¯åªããŠããŸãïŒïŒïŒã ã€ãŸã èŠãŠããæ°XãåæãããŠããã®ã¯æ¬åœã§ããïŒããšãã質åã¯NPã«ãããŸãããªããªããçããã¯ããã«ã¯èšŒææžãããã1ãšXã®éã®é€æ°Xã§ãçããæ¬åœã«ãã¯ããã§ããããšãå€é
åŒæéã§ãã§ãã¯ã§ããããã§ãã ãããã3人ã®ã€ã³ã人ã®ã¢ã«ãŽãªãºã ã®ãããã§ãé©åãªèšŒææžã¯ã
æ¯ã«èªãïŒ ããã€ãŸã åé¡ã解決ããã¢ã«ãŽãªãºã ã¯ãã¿ã¹ã¯ãã¯ã©ã¹NPã«å±ããŠããããšã瀺ãèšŒææžãæäŸãã¹ãã§ã¯ãããŸããïŒ
ãšããã§ãPãNPããŸãã¯co-NPã®ãããã«ãå±ããªã解決å¯èœæ§ã®åé¡ããããŸãã ããšãã°ãå€å
žçãª
ã·ã£ããããŠã³ã®åé¡ ïŒãããã°ã©ã ã³ãŒããèãããšãæéæéã§å®è¡ãããã®ã¯æ¬åœã§ããïŒã ããããããã¯å
šãç°ãªã話ã§ã...
次ã«ãå€é
åŒã®å¯çŽæ§ã«ã€ããŠã äºãã«åé¡ãæžããããã®ããã€ãã®ã¹ããŒã ããããŸãã
Karpã«
ããã° ãåé¡Uã¯ãåé¡Uã®å
¥åããŒã¿uã«ã€ããŠãããããå€é
åŒæéã§åé¡Vã®å
¥åããŒã¿vã«å€æãããããã«VãäŸçµŠããåçïŒãã¯ãããŸãã¯ãããããèŠããŠããŸããïŒïŒããããå
ã®åé¡Uã®çãã«ãªããŸãã
Cookã«
ããã° ãåé¡Uã¯ãåé¡Vã
oracleãšããŠäœ¿çšããªãããåé¡Uã解決ããã¢ã«ãŽãªãºã å€é
åŒãæéå
ã«ååšããå Žåãåé¡Vã«å¯ŸããŠå€é
åŒçã«éå
å¯èœãšèŠãªãããŸãã ã¢ã«ãŽãªãºã ã¯ãåé¡Vã®å
¥åããŒã¿ã®ã»ããïŒãã ããå€é
åŒæ°ïŒïŒãäœæãã1åã®å埩ã§çããèŠã€ããããšãã§ããŸãã
ãããã®ããŒã¿ã¯äž¡æ¹ãšããããæå³ã§ãã¿ã¹ã¯Uã¯ã¿ã¹ã¯Vããè€éã§ã¯ãªãããšã瀺ããŠããŸãã ããæå³ã§Vããã°ããè§£ãããšãã§ããã°ãããæå³ã§Uããã°ããè§£ãããšãã§ããŸãã ãããŠãããæå³ã§Uããã°ããè§£ãæ¹æ³ãããããªãå Žåãããæå³ã§Vãè§£ããšãããã«è§£ãæ¹æ³ãããããŸããã ãããã£ãŠãäžèšã®ãA + Bã¯ãããã«ãªããããšãã質åã¯ããåŒA + Bã®kçªç®ã®ãããã1ã§ããããšã¯æ¬åœã§ããïŒããšãã質åãããè€éã§ã¯ãããŸããã2çªç®ã®è³ªå
㯠Pã§ãã
ãã ãæåã®è³ªåã«
ç°¡åã«çãã
ããšãã§ããŸãïŒå€é
åŒæéã§ïŒïŒãããã¯Pã«ãããŸããã
å®éãã«ãŒãåæžã¯ã¯ãã¯æ
å ±ã®ç¹æ®ãªã±ãŒã¹ã§ãã Karpã«é¢ããæ
å ±ã®å Žåããªã©ã¯ã«ã¯æåŸã«1åã ãåŒã³åºããã倿Žãªãã§ã®åçã¯å
ã®åé¡ã«å¯ŸããåçãšèŠãªãããŸãã ããã§ããã¯ãã¯ã«é¢ããæ
å ±ã®å Žåãã¿ã¹ã¯UãšVã¯è§£æ±ºå¯èœæ§ã®åé¡ã§ããå¿
èŠã¯ãããŸããã
ã¯ã©ã¹NPããã®åé¡ã¯ãã¯ã©ã¹NPããã®åé¡ïŒã€ãŸãããŸã£ããïŒïŒãå€é
åŒçã«æžå°ããå Žåã
NPå®å
šãšåŒã°ããŸãã
å
è¶³å¯èœæ§åé¡ïŒSATïŒ -ãããæåã®ã¿ã¹ã¯èšŒæã®NPå®å
šã¯ãªã¢ãªããã¯ã¹ã«ä»»æã® SATã«ã¯ã©ã¹NPã«åé¡ããã€ãŸã SAT , ,
,
NP. , NP NP-! , - NP- ( , SAT, , ) .
NP-, - NP- . NP- NP, , , NP- . NP- , NP â
« ?», NP-
« ?».
: - NP- ? â P=NP NP .
圢åŒçã«ã¯ãåé¡Xãšã²ãŒã Growing Sakuraã解決å¯èœæ§ã®åé¡ãšããŠå®åŒåããŸããåé¡XïŒãç«æ¹å¹³é¢3é£çµã°ã©ãGãèãããšããã®äžã«ããã«ããã¢ã³ãµã€ã¯ã«ãååšããã®ã¯æ¬åœã§ããïŒãGame Growing SakuraïŒãGrowing Sakuraã®ã¬ãã«ãèããã°ã圌ã«è§£æ±ºçãããã®ã¯æ¬åœã§ããïŒãããŠãNPå®å
šåé¡Xãã²ãŒã Growing Sakuraã«éå
ããŸããã€ãŸã
ã¿ã¹ã¯Xã®å
¥åã䜿çšããŠãGrowing Sakuraã®ã¬ãã«ãæ§ç¯ãããã®ãœãªã¥ãŒã·ã§ã³ãå
ã®åé¡Xã®çããæäŸããããã«ããŸããããã«ãããã¿ã¹ã¯Xã¯ã²ãŒã Growing Sakuraã»ã©è€éã§ã¯ãªãããšãããããŸãããããè¡ãã«ã¯ã次ã®èšèšãå¿
èŠã§ããANDã¬ãžã§ãã
ããã§ã¯ãã¹ãŠãã·ã³ãã«ã§ãã3ã€ã®åŽé¢ã®ããããããæ¥ãæ¡ã®æã¯ãåæã«äž¡æ¹åã«ããã«æé·ã§ããŸãã

ORã¬ãžã§ãã
ãã®èŠçŽ ã®å Žåãsakuraãã©ã³ãã¯2ã€ã®ãã¡æ£ç¢ºã«1ã€ã®æ¹åãéžæããå¿
èŠããããŸãïŒå®éã1ã€ã ãã§ããããã®ã¢ã¯ã·ã§ã³ã¯ç¡æå³ã§ãïŒã2çªç®ã®æ¹åã«ã€ããŠã¯ãåŸã§èª¬æããå¿
èŠããããŸãã

çéã¬ãžã§ãã
ãã®èšèšã¯äžçš®ã®ãã€ãªãŒãã§ãã圌女ã¯äžæ¹åã®æ¡ã®æãéããŸãã

ã€ãŸã
ãã®æ¹åã«ã¹ãããããŸãïŒ
ãããããã®æ¹åã§ã¯ããã§ã¯ãããŸããïŒ
远å ã®ã«ãŒããã€ã³ããªãã§ã¯åããã¶ã€ã³ãæãä»ãããšãã§ããŸããã§ãããã§ããŸããïŒããã¯ã¬ãžã§ãã
æãè€éãªèŠçŽ ã§ãããã®æ§ç¯ã«ã¯ãããªãã®æéãããããŸããã
ãã®èŠçŽ ã®æ¬è³ªã¯æ¬¡ã®ãšããã§ããæ¬¡ã®æ§æã§ã®ã¿è§£æ±ºçããããŸããaïŒ
bïŒ
ãã®å Žåãæ¬¡ã®æ§æã«ã¯è§£æ±ºçããããŸããã
ããã«ããå€ç¬ãªã»ã«ãç¶æ³ãåä¿¡ããã«ã¯ãã¹ãã«ããŒããããšããã§ããŸãããããããã¹ãŠãã€ãªããŸãããïŒ
ORã¬ãžã§ãããããå¹³é¢ç«æ¹3é£çµã°ã©ãã®æåã®è¿äŒŒãåéããããšã¯ãã§ã«å¯èœã§ããããããã²ãŒã ã®ã«ãŒã«ã§ã¯ãç¹ã«ããã«ããã¢ã³ãµã€ã¯ã«ã«å«ãŸããªããšããžãã«ããŒããå¿
èŠããããŸããããã確å®ã«è¡ãã«ã¯ãããããã°ãèšèšãå¿
èŠã§ããããã¯
次ã®ãšããã§ãããã®æ§é ã¯ã3次ã°ã©ãã®1ã€ã®é ç¹ã«å¯Ÿå¿ããŸããããã§ã¯ããã®ä»çµã¿ãèŠãŠã¿ãŸããããäžè¬æ§ã倱ãããšãªããæ¡ã®æãå·Šäžããæ¥ãããã«ããŸãïŒäžåºŠã«2ã€ã®ãã¹ã«æ²¿ã£ãŠïŒã次ã«ãã¹ããŒã ã®æ¬¡ã®éšåã«ã€ããŠèª¬æããŸãïŒ
ããã§ãéžæãã2ã€ã®ãªãã·ã§ã³ã®ã©ã¡ãã«å¿ããŠã次ã®éçºãè¡ãããŸãïŒ
ã©ã¡ãã®å Žåãã2ã€ã®æ¡ã®æã1ã€ã®æ¹åã«éä¿¡ãããã®ãã¡ã®1ã€ãå¥ã®æ¹åã«éä¿¡ããŸããã€ãŸã
äžæ¹ã®æ¹åã§ã¯ã°ã©ãã®ãšããžããã€ã³ãããããäžæ¹ã®æ¹åã§ã¯-ããããä»ãç§ãã¡ã®æã
ã¯ãšããžãå¡è£
ãããŠããªããã°ã©ããã®ããŒã¯ã®ãã¹ããã«ãã³çµè·¯ã«å°éããLOCK-ã¬ãžã§ããã®ããã¯ãè§£é€ããã«ããŒã«ããªããå¿
èŠãªãã¹ãŠãã«ããŒããŸãïŒç·è²ã§äžã«ç€ºãããŠããïŒå¥ã®ãã©ã³ãããããã«æ¥ããšãïŒ
æã
ã®ã±ãŒã¹ç§ãã¡ã®æ¹æ³ã§ãã§ã«1ã€ãŸãã¯2ã€ã®è¿é£ã®ããŒã¯ã«ã¢ã¯ã»ã¹ããŠããããŒã¯ã«éããå Žåãèªè
èªèº«ã確èªããããšãææ¡ããŸããããŠãä»ã§ã¯å¹³é¢ç«æ¹äœ3é£çµã°ã©ãå
šäœã«ã€ããŠå·šå€§ãªã¬ãã«ãæ§ç¯ãã解決çããããã©ããã確èªããŸããååšããå Žåãå
ã®ã°ã©ãã®ãµã€ã¯ã«ã埩å
ããããšã¯é£ãããããŸãã-æ¡ã®æãORã¬ãžã§ããã§ã©ã®ããã«æé·ããããèŠãŠãã ããïŒæ£åŒã«ã¯ãæç€ºçã«åŸ©å
ããå¿
èŠã¯ãããŸããïŒããã®ãããªã¬ãã«ã¯ãã€ã§ãäœæã§ããŸãããã¹ãŠã®ã¬ãžã§ããã¯ãååãªé·ãã®ã»ã«ã®ãã§ãŒã³ã§å転ããã³æ¥ç¶ã§ããŸããã°ã©ãã¯æåã¯å¹³é¢ã§ããããããã¹ã®äº€å·®ã®åé¡ã解決ããå¿
èŠã¯ãããŸããããã¹ãŠã蚌æãããããã«æããŸããïŒãããã蚌æãããŠããŸãããæ§ç¯ãããã¬ãã«ã«ã¯ãŸã£ãã解決çããããŸãã-ãé£éåå¿ãã®ããã»ã¹ãéå§ããŠããŸãã-ããã«ããã¢ã³ãã¹ã«ã¯éå§ããå ŽæããããŸãããããã¯éåžžã«ç°¡åã«è§£æ±ºãããŸããä»»æã®ãšããžïŒãŸãã¯ã察å¿ããLOCKã¬ãžã§ããïŒã䜿çšããŠããããå®è¡ããŸãã
èµ€ãåã¯ããã©ã³ãã®æé·ãéå§ããå Žæã§ãããããŠãããã«ããã¢ã³ãµã€ã¯ã«ãéããããããã«ãå¿
ããã¬ãŒã¯ãšã³ããã«ããŒããå¿
èŠããããŸãïŒä»ãããªãã¯ããã蚌æããŸãããïŒããããïŒã°ã©ãã«ã¯çªç¶ãããã«ããã¢ã³ãµã€ã¯ã«ããããŸããã©ãããïŒ
ããäžæ¹ã®ç«¯ããã«ãŒããæ¢ããŠã¿ãŠãã ãããæããã«ãåãé ç¹ããåºçŸãã2ã€ã®ãšããžã®å°ãªããšã1ã€ã¯ãç®çã®ããã«ããã¢ã³ãã¹ïŒååšããå ŽåïŒãééããŸãããããã£ãŠãåé¡Xã解決ããã«ã¯ãGrowing Sakuraã®2ã¬ãã«ä»¥äžã®ã²ãŒã ãå¿
èŠã§ãããLet meïŒããšèšããŸãããGrowing Sakuraã®1ã¬ãã«ã®ã¿ã解決ããããšãããå°ãäžã«æžããã®ã§ããããã¯åé¡Xã®ã°ã©ãã«çžåœããŸãïŒãããã§ããç§ã¯ããªããbraããŸããïŒãã ãããã®èšŒæ ã¯æªåããŸãããç§ã¯ã¯ãã¯ã«é¢ããæ
å ±ã®ã¿ã䜿çšããã«ãŒãã«é¢ããæ
å ±ã¯äœ¿çšããŸããã§ãããçŸåšãGrowing Sakuraã®NPé£æåºŠã蚌æãããŠããŸãïŒã»ãã仲éïŒ

æé·ãããããã¯NPå®å
šã§ã
æ¢ç¥ã®ããã«ãNPå°é£ã§ã¯ã©ã¹NPã«ããå Žåãåé¡ã¯NPå®å
šã§ããæåã®ç¹ãããå°ãé«ã蚌æããŸããããã®åé¡ã®NPãžã®åž°å±ã¯æããã§ãããã®åé¡ã®è§£æ±ºçããã¯ãããŸãã¯ãããããã®ããããã®çãã§ããå Žåãã¿ã¹ã¯ã¯NPã¯ã©ã¹ã«å±ããçããã¯ããã«ã¯ãçããå€é
åŒæéã§æ¬åœã«ãã¯ããã§ããããšã確èªã§ããèšŒææžããããŸããå®éãGrowing Sakuraã®ã²ãŒã ã§ã¯ãèšŒææžãé·ãOïŒnïŒã®æååãšããŠèšè¿°ãã察å¿ããã»ã«ãã¯ãªãã¯ããé åºãšãã¿ã³ãä¿åã§ããŸãïŒnã¯ãã£ãŒã«ãäžã®ã»ã«ã®æ°ã§ãïŒãããŠãOïŒnïŒã®å ŽåãèšŒææžããæå¹ãã§ããããšã確èªã§ããŸã-èšŒææžãšã²ãŒã ã®ã«ãŒã«ã«åŸã£ãŠãã©ã³ããå±éããã ãã§ãããããGrowing Sakuraã¯NPå®å
šã ïŒçªç¶ãå€é
åŒæéã§åäœãããã®ã²ãŒã ã®ãœã«ããŒã誰ããæžããå Žåã100äžãæŸãããšãã§ããŸãããããã«
Growing SakuraãNPå®å
šã§ãããšããäºå®ã¯ããã®ã²ãŒã ã®ãã¹ãŠã®ã¬ãã«ãéåžžã«é£ããããšãæå³ããŸããããã®ãããªã¬ãã«ãäœæã§ããããšãæå³ããã ãã§ãããããŠãæ®ãã¯ãã§ã«ã¬ãã«èšèšã«äŸåããŠããŸããå€ãã®å€å
žçãªä»»å€©å ã®ã²ãŒã ã¯NPããŒãã§ããããšãç¥ãããŠããŸãããããã¯ããããæ¥œããããšã劚ãããã®ã§ã¯ãããŸããããã£ã³ãã£ãŒã¯ã©ãã·ã¥ã®ãããªã«ãžã¥ã¢ã«ã§ããNPããŒãã§ããããããªã¹ããµãããŒããã®ä»ã®æ°ç¬ã¯èšããŸã§ããããŸãããLudum Dareã§ã®æç¥šã¯ææ¥çµäºããŸããæŽæ°ã§ã¯ãååŸããå Žæãå
¬éããŸããããã100ã²ãŒã ã«åå ããããšèããŠããŸãããªã³ã¯ïŒLudum Dareã®ã²ãŒã ããŒãžãDropboxãItch.io ãUPDã
ããŠãããã§çµæã倿ããŸãããåèšã§ã1232ã®äœåãã³ã³ãã«ããããŒããããŸãããæé·ãããããã¯åèªãã10äœã«ãªããŸããïŒãããåè³è
ïŒããã®ä»ã®å
·äœçãªåŽé¢ïŒïŒ4ããŒããïŒ5ã€ãããŒã·ã§ã³ãïŒ22 Funã