
ã¯ããã«
TimeCoderã®èšäºãTime Travel and Programmingã[
1ã2 ]ãèªãã åŸãåå²äžçã®å®è£
ã«é¢é£ããããã°ã©ãã³ã°ã®ãããããªå®è·µçç ç©¶ãæãåºããŸããã ç§ã®ååãç§ã«è峿·±ãåé¡ãæããããããç§ã¯ãŸã ããã解決ããããšãã§ããŸããã§ããã ã¿ã¹ã¯ã¯ãæ¬çªç°å¢ã§ãã·ã³ãããŒãããæ¹æ³ã§ãã åçŽãªåæãå¿
èŠã§ããããšã¯ããã°ã©ããŒã«ãšã£ãŠãæããã§ã¯ãããŸããã§ããããèšç®ã¢ã«ãŽãªãºã ãæäŸããé©åãªããŒã¿æ§é ãæãä»ãããšãã§ããŸããã§ããã ã¿ã¹ã¯ã¯å®äžçããã®ãã®ã§ãããããã¿ã¹ã¯ã®èšç®ã«å¿
èŠãªéšåã§ããã°ã©ã ã«å®äžçãå®è£
ããããšããããšã«ããŸããã æ¯åããããªãèšç®ã§ã¯ã2ã€ã®ã¢ã¯ã·ã§ã³ããéžæããããŸãããããããã«ç°ãªããœãªã¥ãŒã·ã§ã³ãæã€ã2ã€ã®æ°ããäžçã®äœæãããããŸããã ããã«ãåäžçã¯ç¬èªã®æ¹æ³ãéçºããŸããã
ã«ããã®äžã§ãã¢ã€ãã¢ãã©ã®ããã«çºå±ããã¢ãŒã©ã³ãç§ãã©ã®ããã«å©ãããã説æããŸãã å®è·µã¯çå®ã®åºæºã§ãïŒ
å
容
çšèª-æéã®æšæåã®åé¡ãã§ã«è¡ãããããšãæãåºããŠãã ããäžçã®åææ¹æ³è«ã¹ããã1.äžçã®ããããç¶æ
ã®èšè¿°ãã¿ãã«ã«å
¥ããã¹ããã2.äžçãç®æšã«å°éãããã©ããã倿ãã颿°ã説æããã¹ããã3.äžçãããã«çºå±ããå¿
èŠããããã©ãããæ±ºå®ããæ©èœã説æããŸããã¹ããã4.äžçã®å岿©èœã説æããã¹ããã5.äžçã®HASHèšç®é¢æ°ã説æãããã®ä»ã®æ©èœããŒãžã§ã³1ãã¬ãŒã ã¯ãŒã¯åé¡è§£æ±ºã®ããã®ãã¬ãŒã ã¯ãŒã¯â1ã®é©çšç°ãªãçŽçã§120ã«ãŒãã«ãçºè¡ããããã®ãªãã·ã§ã³ã®èšç®ã©ãããŒãã±ããã®èšç®ã©ãããŒãã±ããã®èšç®ã詊è¡çªå·2ã¿ã¹ã¯ããªãªã«ããã€ã®ããã£ããããŠãŒã¢ã¢ã®ç¬éçµè«äœ¿çšããããœãŒã¹ã®ãªã¹ãçšèª-æéã®æš
ãŽãããã§ãã¯ããã®ãããªäžçå²ã®çºå±ã®è¡šè±¡ããæç³»åã®æšãŸãã¯ãã©ã¯ã¿ã«ãšåŒãã§ããŸã[3]ã ããã«ããã®ã¢ãããŒãã䜿çšããçµææ€çŽ¢ã¡ãœããããTree of Timesã¡ãœããããšåŒã³ãŸãã
äžçã¯ã
äžçã®ããããã£ãšãã®ç¶æ
ãæ±ºå®ããæå³ã®ãªã¹ãã§ãã
åé¡ã®è§£æ±º-Trees of Timesã¡ãœããã«ãã£ãŠ
åé¡ã解決ããŸããçµæããŸãã¯ååŸãããäžçã®ç¹å®ã®ããããã£ã®å€ãäºåã«ç¥ã£ãŠããŸãã ã€ãŸããçµæã¯ããã£ãŠããŸããããããååŸããæ¹æ³ã¯äžæã§ãã åé¡ã®è§£æ±ºçã¯éãèŠã€ããããšã§ãã
æåã®äžçã¯åºæºç¹ã§ãããããããåé¡ã解決ããæ
ãå§ãŸããŸãã
察象ã®äžçãšã¯ãåé¡ã®è§£æ±ºã«åªããäžçïŒãŸãã¯ãã®ç¶æ
ïŒã§ãã
äžçã®çºå±-åæã®äžçãçºå±ãããç®æšã®äžçãéæããããåªããŠããŸãã
è¡ãæ¢ãŸãã®äžçã¯è¡ãæ¢ãŸãã®æã§ã¯ãªããè¡ãæ¢ãŸãã®äžçã§ãã ããã¯ããããªãçºå±ãç®æšäžçã«ã€ãªãããªãäžçã§ãã
æåã®åé¡
æ¹æ³è«ããã¹ãããããã«ãç¹å®ã®éé¡ãŸã§ã®çŽå¹£ã®éžæãã©ãããŒãã±ããã®æ€çŽ¢ãªã©ã®ã¿ã¹ã¯ãéžæããŸããã ããããã®ã±ãŒã¹ã§ã圌ã¯ååž°çãªæ€çޢ颿°ã®çµæãæžããŸããã äžçã®ã€ã³ã¹ã¿ã³ã¹ãšãã®ç¶æ
å
šäœãæ ŒçŽããã¯ã©ã¹ãäœæããŸããã äžçã®ã³ããŒãäœæããæ©äŒãç§ã¯ãŸã ãªã£ãŠããªãã ã¿ã¹ã¯ã¯åçŽã§ãå
¥åãã©ã¡ãŒã¿ãŒã¯æ§ãããªäžçãå®å
šã«èšè¿°ããŠããŸãã ãããããã®ãããªåçŽãªã¿ã¹ã¯ã§ãã£ãŠãããã®ã¢ãããŒãã®æ¬ ç¹ã¯ãã¹ãŠæããã«ãªããŸããã éçºã®ãã©ã³ãã¯éåžžã«è¿
éã«æ¡å€§ããŸãã
倢ã®äžã§ãååçãšãã®äžã®ç²åã®æ žåè£ã«ã€ããŠã®é¡æšãç§ã«æ¥ãŸããã ççºã®çµæãšããŠãåè£ãšé£éåå¿ããããŸãã ççºãé²ãããã«ãåå²ããã»ã¹ãå¶åŸ¡ãããŸãã äžçã®æ°ãããã©ã³ããäœæããããã»ã¹ãå¶åŸ¡ããå¿
èŠããããéåžžã«å³ããããšãæããã«ãªããŸãããäžçãæãŸããçµæããããããªãå Žåããããç Žå£ããäžçããã®éçºç®æšã«å°éããå Žåãçµæãå°ãåºããŸãã çµæã®çµè«ã¯ãçµæãéæããæ¹æ³ã¯ãããŸãã«ãé«äŸ¡ãªäžçïŒ10ã«ãŒãã«çŽå¹£ã§1000ã«ãŒãã«ã®çºè¡ãå¥ã®åé¡ã¯ãããã€ãã®åäžã®çµæã®çºèŠã§ãã£ãã
ãã®ãããTree of Timesã¡ãœããã䜿çšããèšç®ã§ã¯ã次ã®åé¡ã解決ããå¿
èŠããããŸãã
- ãªãœãŒã¹ãéãããŠãããããçŸå®ã®å¿ã®ãªã䞊ååãå¶éãã
- çµæãåŸããŸã§ã®éçãåæããããã«ããããŒãããªæ¹æ³ã§ããŸãã¯å¿
èŠã®ãªãæ¹æ³ã§äžçã«å°éããå Žåããã以äžå
ãžé²ãŸãªãã§ãã ããã
- éè€ããçµæã§äœããããå¿
èŠããããŸãã å®éãããŸããŸãªæ¹æ³ã§ããŸããŸãªäžçãåãç¶æ
ã«ãªãå¯èœæ§ããããŸãã
åœåã®éãTree of Timesã¡ãœãããã䜿çšããŠçµæãèšç®ããé·å¹Žã®æŽå²ã¯ããç§ã®æºã«ã暪ããã£ãŠããŸããã ãã¹ãŠã®ã³ã³ãã¥ãŒãã£ã³ã°ã®åé¡ã解決ãããããã§ã¯ãªãããã§ãã ã¯ãããããŠãç§ãããç¥ã£ãŠããããã°ã©ãã³ã°èšèªãšã¯ç°ãªããæ°ãã䞊åã³ã³ãã¥ãŒãã£ã³ã°ãé©çšããæãæ¥ãããšã¯æããã§ãã ããããç°¡åãªè§£æ±ºçã¯ãããŸããã§ããã
æéãçµã€ã«ã€ããŠãããã°ã©ãã³ã°ã®åéã®æè¡ã¯çºå±ããŠããŸãã ã¡ã¬ãã«ããäžããããšã¯ç¡éã«äžå¯èœã§ããããšãæããã«ãªããŸããã èšç®ã䞊ååããå¿
èŠããããŸãã ãããŠããã®ãããªæ©äŒãçŸãå§ããèšèªã®äžŠååŠçã®ãµããŒããç°¡çŽ åããå§ããŸããã
ããããäžçã®ã¯ããŒã³ã¯ã©ãã§ããïŒ ãããã»ã³ã¿ãŒã·ããã®
TimeCoderèšäºã®ã±ãŒã¹ã äžçã®çºå±ã®æãåé¢ããã ãã§ãªããããããçµã³ä»ããããšãã§ããªããã°ãªããŸããã
æ°ããæ°ããã¢ã€ãã¢ãšããŒã«ãæŠåšã«ãæéã®æšã®æ¢çŽ¢ã«æ»ãããšã«ããŸããã
ãã§ã«è¡ãããããšãæãåºããŠãã ãã
ãã£ã¬ã³ãžã¯ã©ãããŒãã±ããã§ãã æåã®3æ¡ã®åèšãæ®ãã®åèšãšçããå Žåããã±ããã¯ã©ãããŒãšèŠãªãããŸãã
C QT [4]ïŒvoid bilet(int x1, int x2, int x3, int x4, int x5, int x6) {
çµæãåŸ
ã¡ãŸããã§ããã é·ãéã ãããã£ãŠãã³ãŒãã®äžéšãåé€ããŸããã void bilet(int x1, int x2, int x3, int x4, int x5, int x6) {
çµæã¯æ¬¡ã®ãšããã§ãã
000000 200002 100001 200002 200002 100001 200002 200002 200002
ã¢ã«ãŽãªãºã ã¯æé©åãããŠããŸããã ç¹ã«èããããŠããŸããã ãããŠã察å¿ããçµæã¯åã«ãªããŸãã
ä»äºã¯ãéã亀æããããšã§ãã
1000ã500ã100ã50ã10ã«ãŒãã«ã®çŽå¹£ããããšããŸãã çºè¡ã®ãªãã·ã§ã³ãèšç®ããå¿
èŠããããŸãã
Erlangãœãªã¥ãŒã·ã§ã³[5,6]ïŒãã¡ã€ã«<i> we01.erl </ i>ïŒ -module(we01). -export([sum_money/6, sum_money/1]). sum_money(Itog) -> sum_money(Itog, 0, 0, 0, 0, 0). sum_money(Itog, X1000, X500, X100, X50, X10) -> if ((X1000 + X500 + X100 + X50 + X10) > 100) -> ok; (Itog == ((1000*X1000)+(500*X500)+(100*X100)+(50*X50)+(10*X10))) -> io:format("Itog(~w)(~w) = 1000*~w + 500*~w + 100*~w + 50*~w + 10*~w ~n", [Itog,(X1000 + X500 + X100 + X50 + X10), X1000, X500, X100, X50, X10]); (Itog > ((1000*X1000)+(500*X500)+(100*X100)+(50*X50)+(10*X10))) -> sum_money(Itog, 1+X1000, X500, X100, X50, X10), sum_money(Itog, X1000, 1+X500, X100, X50, X10), sum_money(Itog, X1000, X500, 1+X100, X50, X10), sum_money(Itog, X1000, X500, X100, 1+X50, X10), sum_money(Itog, X1000, X500, X100, X50, 1+X10); (true) -> ok end.
ãã®ãã¡ã€ã«ãErlangã§å®è¡ããæ¹æ³ã¯ïŒ- Erlangãèµ·åããŸãã
erl
- ã¢ãžã¥ãŒã«ãã³ã³ãã€ã«ããŸãã
c(we01).
- 120ã«ãŒãã«ã®çºè¡ã®èšç®ãéå§ããŸãã
we01:sum_money(120).
- çµæïŒ
Itog(120)(3) = 1000*0 + 500*0 + 100*1 + 50*0 + 10*2 Itog(120)(4) = 1000*0 + 500*0 + 100*0 + 50*2 + 10*2 Itog(120)(4) = 1000*0 + 500*0 + 100*0 + 50*2 + 10*2 Itog(120)(4) = 1000*0 + 500*0 + 100*0 + 50*2 + 10*2 Itog(120)(8) = 1000*0 + 500*0 + 100*0 + 50*1 + 10*7 Itog(120)(3) = 1000*0 + 500*0 + 100*1 + 50*0 + 10*2 Itog(120)(4) = 1000*0 + 500*0 + 100*0 + 50*2 + 10*2 Itog(120)(4) = 1000*0 + 500*0 + 100*0 + 50*2 + 10*2 Itog(120)(8) = 1000*0 + 500*0 + 100*0 + 50*1 + 10*7 Itog(120)(3) = 1000*0 + 500*0 + 100*1 + 50*0 + 10*2 Itog(120)(4) = 1000*0 + 500*0 + 100*0 + 50*2 + 10*2 Itog(120)(8) = 1000*0 + 500*0 + 100*0 + 50*1 + 10*7 Itog(120)(8) = 1000*0 + 500*0 + 100*0 + 50*1 + 10*7 Itog(120)(8) = 1000*0 + 500*0 + 100*0 + 50*1 + 10*7 Itog(120)(8) = 1000*0 + 500*0 + 100*0 + 50*1 + 10*7 Itog(120)(8) = 1000*0 + 500*0 + 100*0 + 50*1 + 10*7 Itog(120)(8) = 1000*0 + 500*0 + 100*0 + 50*1 + 10*7 Itog(120)(12) = 1000*0 + 500*0 + 100*0 + 50*0 + 10*12 ok ^ | +----
æããã«ãéè€ïŒåäžã®äžçïŒãã©ãã«ãããŠç¡èŠããå¿
èŠããããŸãã é©åãªããã°ã©ãã³ã°ã®ããã«èšç·Žãããé è³ã¯ãã¢ã«ãŽãªãºã ãæé©åãããªãããã«ãæé©åãæé©åãæé©åã®æ¹æ³ãããã«èãå§ããŸã...å®éãããã¯éåžžã«åçŽãªäŸã§ãããããã§ãæé©åãèããã®ã¯é£ãããªããŸãã ãããŠãããè€éãªäžçã§ã¯äœãèµ·ããã§ããããïŒ äžè¬çã«ããã®ãããªæ©äŒãããã°ãæããã«äœèšãªäžçãäœãåºãå¿
èŠã¯ãããŸãããä»ã®ãã¹ãŠã®å Žåã«ã¯ãäžçãåæãããæ¹æ³ãçºæããå¿
èŠããããŸãã
äžçã®åæ
ãã®ãããªãã®ããããã©ããã確èªããŠã¿ãŸãããã ããå Žåã¯ãä»ã«äœãããŸããïŒåã¯ãŒã«ããäœæããªãã§ãã ããïŒã
QTãã¿ã¹ã¯ãåãã§ã-ãã±ããïŒ ç§ãã¡ãã©ããªäžçã«ããã®ããåæããããã«ãèŠã€ãã£ãå ŽåãšèŠã€ãããªãã£ãå Žåã®çµè«ã«ã€ããŠè©±ãåããŸãã ãã¹ãŠã®æ¡ä»¶ã§ãèšç®éãå¶éããã«ã¯ã<10ã<2ã«çœ®ãæããŸãã å§ããŸãã çµæïŒ
çµæ start "00:19:04.394" 0 0 0 0 0 0 * 1 0 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 1 1 1 * 1 1 1 1 0 1 1 1 1 0 1 0 1 1 1 0 1 1 1 1 1 0 0 1 1 1 0 1 0 0 1 1 0 1 1 0 * 1 1 0 1 1 1 1 1 0 1 0 1 * 1 1 0 0 1 0 1 1 0 0 1 1 * 1 1 0 0 0 1 1 0 1 0 0 0 1 0 1 1 0 0 1 0 1 1 1 0 * 1 0 1 1 1 1 1 0 1 1 0 1 * 1 0 1 0 1 0 1 0 1 0 1 1 * 1 0 1 0 0 1 1 0 0 1 0 0 * 1 0 0 1 1 0 1 0 0 1 1 1 1 0 0 1 0 1 1 0 0 0 1 0 * 1 0 0 0 1 1 1 0 0 0 0 1 * 0 1 0 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 1 1 1 1 0 * 0 1 1 1 1 1 0 1 1 1 0 1 * 0 1 1 0 1 0 0 1 1 0 1 1 * 0 1 1 0 0 1 0 1 0 1 0 0 * 0 1 0 1 1 0 0 1 0 1 1 1 0 1 0 1 0 1 0 1 0 0 1 0 * 0 1 0 0 1 1 0 1 0 0 0 1 * 0 0 1 0 0 0 0 0 1 1 0 0 * 0 0 1 1 1 0 0 0 1 1 1 1 0 0 1 1 0 1 0 0 1 0 1 0 * 0 0 1 0 1 1 0 0 1 0 0 1 * 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 end "00:19:04.407"
åèš64è¡ãã€ãŸã2 ^ 6è¡ããããŸãã å
šäœãšããŠãã¢ã«ãŽãªãºã ã¯çŽ155ããªç§ã®é«éã§åäœããŸãã QtConcurectããªããã³ãã§äœ¿çšããŠäžŠååããããšã¯ã§ããŸããã§ããã
ããããErlangã¯ã©ãã§ããïŒ
ã¿ã¹ã¯ã¯åãã§ã-ãã±ããããœãŒãããŸãã ããããErlangã«ã¯ã°ããŒãã«å€æ°ã¯ãããŸããã
ãªããžããªãšããŠããã»ã¹ããããŸãã ä»çµã¿ãµãŒããŒãèµ·åããã«ã¯ã
world_server_start()
颿°ã
world_server_start()
ãŸãã æ°ããã¹ã¬ããã§world_server颿°ãå®è¡ãã
ws
ãšããååã«é¢é£ä»ããŸãã 颿°ã¯ããèªäœãååž°çã«åŒã³åºãããã©ã¡ãŒã¿ãŒãšããŠã¯ãŒã«ãã®ãªã¹ããæž¡ããŸãã æåã«ã
[]
ãæž¡ãããŸããã€ãŸãã空ã®é
åã§ãã äœæ¥äžã颿°ã¯åžžã«ä»ã®ããã»ã¹ããã®ã¡ãã»ãŒãžãåŸ
ã¡ãŸãïŒ
- ã¡ãã»ãŒãžãåä¿¡ããå Žå-
finished
ã¢ãã ã颿°ã¯åæ¢ã¡ãã»ãŒãžã衚瀺ããããèªäœãååž°çã«åŒã³åºããªãããããµãŒããŒã忢ããŸãã - ã¡ãã»ãŒãžãåä¿¡ãããå Žå-atom listãã¯ãŒã«ãã®ãªã¹ãã衚瀺ãããäœæ¥ãç¶è¡ãããŸãïŒãããã°ã«äœ¿çšãããŸãïŒ
- ã¿ãã«
{new_world, PID, New_world, Par}
ãããã¯ãµãŒããŒããªã¹ãã«ãã®ãããªäžçããããã©ããå°ããããããšãæå³ããŸããïŒ ã¯ãŒã«ããããå Žåãã¡ãã»ãŒãžworld_exist
ãŸãã¯world_new
world_exist
ã«è¿ããããªã¹ãã«æ°ããã¯ãŒã«ãã远å ããŠé¢æ°ãããã«å®è¡ãããŸãïŒãã§ã«ã¯ãŒã«ãããªãå ŽåïŒ
äžåºŠæ©èœãããšãç§ãã¡ã¯æ¬è³ªçã«äžçã«è¡ãçããŸãã ãããŠãŸããååšã確èªããŸã-ã¯ãŒã«ããªããžããªãµãŒããŒã«ãªã¯ãšã¹ããéä¿¡ããŸãã çãã
world_exist
å Žåããã以äžäœæ¥ããŸããïŒreturn
ok
ïŒã ãã以å€ã®å Žåã¯ãäžçã«é¢ããæ
å ±ã衚瀺ããŸãïŒã¿ãŒã²ããã®å Žåã¯ã¢ã¹ã¿ãªã¹ã¯ä»ã-ãã±ããã¯å¹žãã§ãïŒã
new_ww(X1, X2, X3, X4, X5, X6) -> ws ! {new_world, self(), X1*10+X2*100+X3*1000+X4*10000+X5*100000+X6*1000000, (X1+X2+X3 == X4+X5+X6) }, receive world_exist -> ok; world_new -> if (X1+X2+X3 == X4+X5+X6) -> io:format("~w ~w ~w ~w ~w ~w *~n", [X1, X2, X3, X4, X5, X6]); true-> io:format("~w ~w ~w ~w ~w ~w ~n", [X1, X2, X3, X4, X5, X6]) end, if ((X1+1) < 10) -> new_ww(X1+1, X2, X3, X4, X5, X6); true -> ok end, if ((X2+1) < 10) -> new_ww(X1, X2+1, X3, X4, X5, X6); true -> ok end, if ((X3+1) < 10) -> new_ww(X1, X2, X3+1, X4, X5, X6); true -> ok end, if ((X4+1) < 10) -> new_ww(X1, X2, X3, X4+1, X5, X6); true -> ok end, if ((X5+1) < 10) -> new_ww(X1, X2, X3, X4, X5+1, X6); true -> ok end, if ((X6+1) < 10) -> new_ww(X1, X2, X3, X4, X5, X6+1); true -> ok end end.
Erlangã®åœ¢ã®æ°ãããã¯ãããžãŒããç§ãã¡ã¯äœã«ãªããŸãããïŒ ãããŸã§ã®ãšããäœããããŸããïŒ
- C ++ QTãããé·ããšèŠãªããã
- 䞊ååãšãã«ããã·ã³ã³ã³ãã¥ãŒãã£ã³ã°ã¯ãããŸãã
- FPã«åºæã®ãšã¬ã¬ã³ãã§ã³ã³ãã¯ããªã³ãŒãã¯ãããŸãã;ãã®ä»£ããã«ãåãã¿ã€ãã®ã³ãŒãã®ã·ãŒã
- å
šäœãšããŠãååž°é¢æ°ã¯å€ã®åçŽãªåæã解決ããŸãããããã¯ãæç¶ãåèšèªã§ã¯ãµã€ã¯ã«ã«ããç°¡åãã€æç¢ºã«è§£æ±ºãããŸãã 誰ããååž°ãçè§£ããæããŠããããã§ã¯ãªã
ã©ãããïŒ æ¹æ³è«ãå¿
èŠã§ãïŒ ã·ã³ãã«ã§ãäžæ©äžæ©ãåŠçã§ãçè§£ã§ããã
æ¹æ³è«

å®éšã®åŸãã³ãŒãã®ç¹å®ã®éšåã¯ã©ã®èšç®ã§ãåãã§ãããæ¡ä»¶ã®ã¿ãå€ãããšããçµè«ã«éããŸããã ãããã£ãŠãã¿ã¹ã¯ãšãã®ããã°ã©ãã³ã°ãèšå®ãããšããååž°ã䞊ååãããã³ãã®ä»ã®æè¡çãªããªãã¯ããå®å
šã«é¢ããèšç®ã®æ¡ä»¶ã®èšå®ã«éäžã§ããŸãã ã€ãŸããèšç®çšã®äœããã®ãã¬ãŒã ã¯ãŒã¯ãäœæããŸãã ã¢ãŒã©ã³æ¹æ³è«ã§ã¯ãããã¯åäœãšåŒã°ããŸãã äžçªäžã®è¡ã¯ãããšãã°ãµãŒããŒãå®è£
ããããã«ããã®åäœãå®è£
ããå¿
èŠããããšããããšã§ãïŒèµ·åæã忢æãªã©ã«ã©ãããã
ããã¯äœãäžããŸããïŒ ååäœã¯1ã€ã®åçŽã§åçŽãªæ©èœã§ãã çµæãå
¥åããŒã¿ã®ã¿ã«äŸåããçŽç²ãªé¢æ°ã ä»ãšã¯ç¬ç«ããŠãã§ãã¯ã§ããŸãã
ãããã£ãŠããã¬ãŒã ã¯ãŒã¯ããŒãžã§ã³1ãç»å ŽããŸããã åé¡ã解決ããã«ã¯ãæé ãå®è¡ããå¿
èŠããããŸã
ã¹ããã1.äžçã®ããããç¶æ
ã®èšè¿°ãã¿ãã«ã«å
¥ãã
Trees of Timeã®ããã°ã©ãã³ã°èšç®ã«ãããéèŠãªãã€ã³ãã¯ãäžçã®èšè¿°ãä¿åããæ¹æ³ã«é¢ããåæã§ãã ãã£ã¯ã·ã§ã³ã§ã¯ãäžçã®ãããªãã¯ã¹ããšåŒã°ãããã®ã äžçã®èšè¿°ã«ã¯ãçŸåšã®äžçã®ç¶æ
ã«é¢ããæ
å ±ãå«ãŸããŠããŸãããå¿
èŠãªãã®ã ããå«ãŸããŠããŸãã
Trees of Timeã«é¢ãã以åã®ç ç©¶ã§ã¯ãã¯ã©ã¹ããã£ãŒã«ãã䜿çšããããšããŸããããåã
ã®ã¿ã¹ã¯ããšã«ããã°ã©ãã³ã°ãè¡ããšãå€ãã®ã³ãŒããå®è¡ããããåŸãªããªããŸããã ãããã£ãŠãäžçãã§ããã ãç°¡åã«èšè¿°ããå¿
èŠããããŸãã
äžçèšè¿°åå®ïŒäžçã¯1ã€ã®ã¿ãã«ã§èšè¿°ãããªããã°ãªããŸãããã¿ãã«ã¯ãå¶éãããé·ãã®å€ã®ã»ããã§ãã ã¿ãã«ã¯äžæ¬åŒ§ã«å¶éãããŠãããã¿ãã«ã®èŠçŽ ã¯ã³ã³ãã§äºãã«åºåãããŠããŸãã ã¿ãã«ã¯äºãã«ãã¹ãã§ããŸãã
äŸ1.ã©ãããŒãã±ããã®ãªãã·ã§ã³ãèšç®ãããšãã®æåã®ç¬éã®äžçã®ç¶æ
ãèšè¿°ããã¿ãã«ã
{0,0,0,0,0,0}
åæ°åã¯ããã±ããçªå·ã®åå¥ã®æ°åã§ãã
æéã¯ç¹å®ã®äžçã«ãšã£ãŠéèŠã§ã¯ãªãããããæåã®ç¬éãã§ã¯ãªããäžçã®åæç¶æ
ã§ããšæžãæ¹ãæ£ããã§ãããã éèŠãªã®ã¯äžçã®ç¶æ
ã ãã§ãã çè§£ã«æ
£ããŠãã圢åŒã®æéãèšç®ã«ãšã£ãŠéèŠã§ããå Žåãã¿ãã«ã®å¥ã®å€ãšããŠè¿œå ãããŸãã
äŸ2.äžçã®ç¶æ
ãèšè¿°ããã¿ãã«ã§ã
1x100rãš
2x10rã®åœ¢åŒã§120ã«ãŒãã«ãçºè¡ããæ¹æ³ãèŠã€ããŸããã 1000ã500ã100ã50ã10ã®5çš®é¡ã®çŽå¹£ããããŸãããããã£ãŠãäžçã«ã¯5ã€ã®ãã©ã¡ãŒã¿ãŒããããŸãã 圌ãã¯å€§ãããã®ããå°ãããã®ãžãšç¶ãããšã«æ±ºããŸãããã€ãŸããæåã®æ°åã¯1000ã«ãŒãã«ãªã©ã®æ°åã§ãã
{0,0,1,0,2}
ã¹ããã2.äžçãç®æšã«å°éãããã©ããã倿ãã颿°ã説æãã
颿°ã¯ãã©ã¡ãŒã¿ãŒãšããŠã¯ãŒã«ãã«æž¡ãããŸãã 圌女ã®ä»äºã¯ãåœŒãæšçã«ãããŠãããã©ããã倿ããããšã§ãã ãã®å ŽåãçµæãåºåããŠ
true
ãè¿ã
true
ã ãã以å€ã®å Žåã¯
false
ã§ãã
äžçããã®ç®æšã«å°éããå Žåããã¬ãŒã ã¯ãŒã¯ã¯æããã«ãããããã«éçºããå¿
èŠã¯ãããŸããã çµã¿åããã®åé¡ã«ãããäžçã®ãããªãçºå±ã¯ãä»ã®è§£æ±ºçã«ã€ãªããå¯èœæ§ããããŸãã
ã¹ããã3.äžçãããã«çºå±ããå¿
èŠããããã©ãããæ±ºå®ããæ©èœã説æããŸãã
颿°ã¯ãã©ã¡ãŒã¿ãŒãšããŠã¯ãŒã«ãã«æž¡ãããŸãã 圌女ã®ä»äºã¯ãããã«éçºãããã©ãããæ±ºå®ããããšã§ãã äžçã®ãããªãçºå±ãç®æšã«ã€ãªããããšãã§ããªãå Žåããããããã«çºå±ãããããšã¯æå³ããããŸããã è¡ãæ¢ãŸãã®ãã©ã³ãã éçºãå¿
èŠãªå Žåã¯ã
true
è¿ã
true
ã ãã以å€ã®å Žåã¯
false
ã§ãã åæã«ãäžçã®ãããªãçºå±ãè¡ãæ¢ãŸãã§ããå Žåãããã¯äžçãæšçã«ã§ããªããšããæå³ã§ã¯ãããŸããã
ã¹ããã4.äžçã®å岿©èœã説æãã
äžçã®çºå±ã¯ããŸããŸãªæ¹åã«é²ãããšãã§ããŸãã 颿°ã¯ãã©ã¡ãŒã¿ãŒãšããŠã¯ãŒã«ãã«æž¡ãããŸãã ããã«å¿ããŠããã®äžçããçºå±ã§ããäžçã®
ãªã¹ããçºè¡ãããŸãã
ã¹ããã5.äžçã®HASHèšç®é¢æ°ã説æãã
ããã©ã«ãã§ã¯ãã¯ãŒã«ãHASHèšç®é¢æ°ã¯æ¬¡ã®ãšããã§ãã
æšæº
erlang:phash2
颿°
erlang:phash2
ãããã·ã¥ïŒéä¿¡ãããã¿ãã«ããã®æ°ïŒã
erlang:phash2
ã ããããããäžçãšå¥ã®äžçãæ£ç¢ºã«å¯Ÿå¿ãããããšã¯å¿
ãããå¿
èŠã§ã¯ãããŸããã ããã¯èšäº[1ã2]ã«æžãããŠããŸãããæçµçã«ã¯ãã©ã®ãããªäžéçãªæ±ºå®ãäžãããŠãã1ã€ã®çµæãåŸãããéçºã®ãã©ã³ããåæãããšããããšã§ãã äžçã¯ãååãŸã§ãåæããã®ã§ã¯ãªããåé¡ã解決ãããšããæèã§åæããŸãã è»ã§ä»äºãããããšãä»äºã®å Žåã¯ãããŸããŸãªéãè¡ãããšãã§ããŸããã12æã«äŒè°ã«åºåžããŸãã ãã¡ãããéãã¯è»ã®èµ°è¡è·é¢ã«ãããŸããããã®ç¬éã¯ç§ãã¡ã«ãšã£ãŠéèŠã§ã¯ãããŸããã
ãã¬ãŒã ã¯ãŒã¯çªå·1ã§ã®äžçã®åæã¯ããã§ã«äœæãããäžçã®ãªããžããªãéããŠå®è£
ãããŸãã ãããããããã®äžçã®ããã·ã¥çªå·ã ãŸãããã©ã³ãã®éçºäžã«å
¥åããäžçããªããžããªã«æ¢ã«ååšããå Žåãäžçã®ãããªãéçºã¯è¡ãããŸããã å®éãäžçã®çºå±ã®2ã€ã®ãã¹ãåãçµæã«ãªããåãæ¹æ³ã§ããã«é²ãã ãããäžçã¯åæããŸãã ãããã£ãŠãã¯ãŒã«ãã®ãã©ã¡ãŒã¿ãŒã®ãããããçµæã«åœ±é¿ããªãå Žåããã®ãã©ã¡ãŒã¿ãŒãtuple->ããã·ã¥çªå·ã®å€æã«é¢äžããªãããã«ãã¯ãŒã«ãã®ããã·ã¥ãèšç®ããæ©èœã調æŽããå¿
èŠããããŸãã
ãã®ä»ã®æ©èœ
åæãã¯ãŒã«ããã¯ãŒã«ãã®åæãªã©ã®æ©èœã¯ãã©ã®ã¿ã¹ã¯ã§ãåãã§ãã ãããã¯ãã¬ãŒã ã¯ãŒã¯ã«å«ãŸãããŠãŒã¶ãŒã¯ãããã倿Ž/çè§£ããå¿
èŠã¯ãããŸããã ãããŠãæ¹æ³è«ãå³å¯ã«å®ãã°ãäžçã®ã«ãŒã«ãå®çŸ©ããæ©èœã倿Žããããšãªãããã¬ãŒã ã¯ãŒã¯ã䞊åã³ã³ãã¥ãŒãã£ã³ã°ã«é¢ããŠæ¹åã§ããŸãã
ããŒãžã§ã³1ãã¬ãŒã ã¯ãŒã¯
wf1.erl -module(wf1). -export([start/0, stop/0, br/1, is_target/1, is_dead/1, ent/1, lib/0]).
åé¡è§£æ±ºã®ããã®ãã¬ãŒã ã¯ãŒã¯â1ã®é©çš
ç°ãªãçŽçã§120ã«ãŒãã«ãçºè¡ããããã®ãªãã·ã§ã³ã®èšç®
ã¹ããã1-ã¿ãã«ã«äžçã眮ãäžçã¯5æ¡ã§èšè¿°ãããŸãã
{0,0,0,0,0}
ã¹ããã2.äžçãç®æšã«å°éãããã©ããã倿ãã颿°ã説æãã
Erlangæ§æã«é¢ããå°ããªã¡ã¢ã æåã®æäœã¯å²ãåœãŠã§ã¯ãªããäžèŽã§ãã
Wrld
倿°ã«
Wrld
5ã€ã®èŠçŽ ã
Wrld
ã¿ãã«ã
Wrld
ãŸãã æäœãå®è¡ããããšãã¿ãã«å
ã®èŠçŽ ã®å€ã倿°
X1000, X500, X100, X50, X10
å²ãåœãŠãããŸãã Erlangã§ã®è©Šåã®è©³çްã«ã€ããŠã¯ããèªèº«ã§ãèªã¿ãã ããã ãŸãã¯ãã¿ãã«ããå€ãååŸããæ¹æ³ãªã©ã®æ§æããã®ãŸãŸåãå
¥ããŸãã
ã¹ããã3.äžçãããã«çºå±ããå¿
èŠããããã©ãããæ±ºå®ããæ©èœã説æããŸãã
ã¹ããã4.äžçã®å岿©èœã説æãã
èšç®éå§
ãã®çµæã次ã®ãã®ãåãåããŸããã
1> c(wf1). {ok,wf1} 2> wf1:start(). start <0.455.0> 120 (3) = 1000x0 500x0 100x1 50x0 10x2 120 (4) = 1000x0 500x0 100x0 50x2 10x2 120 (8) = 1000x0 500x0 100x0 50x1 10x7 120 (12) = 1000x0 500x0 100x0 50x0 10x12
ã©ãããŒãã±ããã®èšç®
ã¹ããã1-ã¿ãã«ã«äžçã眮ãäžçã¯6æ¡ã§èšè¿°ãããŸãã
{0,0,0,0,0,0}
ã¹ããã2.äžçãç®æšã«å°éãããã©ããã倿ãã颿°ã説æãã
ã¹ããã3.äžçãããã«çºå±ããå¿
èŠããããã©ãããæ±ºå®ããæ©èœã説æããŸãã
ã¹ããã4.äžçã®å岿©èœã説æãã
ããããŒãã±ããã®æ°ãèšç®ããããã«ãèŠã€ãã£ãã¯ãŒã«ãã®æ°ãæ ŒçŽãå¢å ããè¯å®çãªçµæãäžããå¥ã®ãµãŒããŒãäœæããŸãã
èšç®ãéå§ãããšããããéå§ããŸãã
ãã ãããã®æ¹æ³ã§ã«ãŒã«ãèšå®ãããšãçµæãåºããŸã§é·æéåŸ
ããªããã°ãªããŸããã éåžžã«å€ãã®ããã»ã¹ãäœæããããããErlangããŒãã¯å€ãã®ããã»ã¹ã®åŠçã忢ããæ°ããããã»ã¹ã®äœæã忢ããŸãã ãããŠããã®åé¡ã®è§£æ±ºçãïŒè©ŠããŠã¿ãŠïŒèŠã€ããªããã°ãªããªãã£ãã®ã§ãããã¯è¯ãããšã§ãã
æããã«ãäžçã®åå²ã¯æè¯ã®æ¹æ³ã§èšå®ãããŠããããåãäžçãè€æ°åäœæããããã§ãã¯ãçµ¶ããé²è¡ããŠãããäžçããã§ã«ååšããŠããããšãããããŸãã ããã¯ããã®ãããªèŠæ±ã®å³ããã¿ã¹ã¯ã§ã¯ããŸã è³ã䜿çšããå¿
èŠãããããšã瀺åããŠããŸãã
ã©ãããŒãã±ããã®èšç®ã詊è¡çªå·2

幞ããªãã±ããã®åé¡ã解決ããããšã¯éåžžã«æçšã§ããããšã倿ããŸããã 解決ã®éçšã§ãåã¹ãããã§å€æ°ã®éåžžã«éèŠãªãã¥ã¢ã³ã¹ãèŠã€ãããäžçãåŠçããã¡ã€ã³ãµã€ã¯ã«ã«ã¯èª¿æŽãå¿
èŠã§ããã ãŸããã¹ããã5ïŒæ¬æ¥ã¯ãªãã£ãïŒã®å¿
èŠæ§ãæããã«ãªããŸããã
ãã±ããã®åé¡ã解決ããããã®ä»¥åã®è©Šã¿ã¯ãç§ãã¡ã广çã«äžçãåå²ãããªãã£ãããšã瀺ããŠãããããã¯å€ãã®ãã€ã¯ããããããŸããã ããããåæç¶æ
ããçŽã¡ã«äžçã®çºå±ã®ããã®ãã¹ãŠã®ãªãã·ã§ã³ãèšç®ããããšã«åé¡ã¯ãããŸããã ããããErlangãããã®ã§ãã»ã°ã¡ã³ããååã«åå²ããŠååž°çã«å®è¡ããŸãã ã»ã°ã¡ã³ãã¯0ãã999999ãŸã§ã§ãç¯å²ã®å¢çãäžèŽãããŸã§åå²ããŸãã ãããã£ãŠãäžçã®ããããã£ã¯ããã«2ã€ã«ãªããŸããå·Šå³ã®å¢çç·ã远å ãããŸãã åæã«ããããã®å¢çã¯ãã¯ãŒã«ãã®ãªã¹ããèšç®ããååž°çãªæ©èœã«ã®ã¿å¿
èŠã§ãããçµæã®åœ±é¿ãåããŸããã ããã«ãã»ã°ã¡ã³ãã®ååã®åå²ã¯æŽæ°ã§ãããã¢ã«ãŽãªãºã ã®ã©ããã§ãç°ãªãã»ã°ã¡ã³ãã§åãäžçãæäŸãããã¹ãç¯ããŸããã ãããã£ãŠãäžçã®ããã·ã¥ã®èšç®ã調æŽããå¿
èŠããããŸãã
ã¹ããã1-ã¿ãã«ã«äžçã眮ãæåã®2ã€ã®ãã©ã¡ãŒã¿ãŒã¯ç¯å²ã§ãã æ®ãã¯ä»¥åãšåãã§ãã
{0,999999,0,0,0,0,0,0}
ã¹ããã2.äžçãç®æšã«å°éãããã©ããã倿ãã颿°ã説æãã
ã¹ããã3.äžçãããã«çºå±ããå¿
èŠããããã©ãããæ±ºå®ããæ©èœã説æããŸãããã®ããŒãžã§ã³ã®èšç®ã§ã®äžçã®éçºã¯æ³å®ãããŠããŸããããªããªãããã¹ãŠã®éçºãªãã·ã§ã³ãããã«ãããããã§ãã ã€ãŸããéçºã«ã¯1ã€ã®ã¹ããããããããŸãã-ç¯å²0ã999999ãæå®ãããŠããå Žåã®æåã®ã¹ãããã§ãã äžçã¯ãæåã®äžæ©ãé€ããŠãåžžã«è¡ãæ¢ãŸãã§ãã
ã¹ããã4.äžçã®å岿©èœã説æãã
ã¹ããã5.äžçã®HASHã®æ©èœã説æãã
ãŸãã¯ãã¿ãã«ãçµã¿ç«ãŠãããšãã§ããŸãããç¯å²ã¯ãããŸãã
æã¡äžã
ãŸãšãå®è¡ã®éçšã§ãããã°ã©ã ã¯ã©ãããŒãã±ããã®ãªã¹ããçºè¡ããŸãããããã¯55252ã§ããããšã倿ããŸãããåäžè¡ã®æ¹è¡ length([ [A,B,C,D,E,F] || A <- [0,1,2,3,4,5,6,7,8,9], B<-[0,1,2,3,4,5,6,7,8,9], C<-[0,1,2,3,4,5,6,7,8,9], D <- [0,1,2,3,4,5,6,7,8,9], E <- [0,1,2,3,4,5,6,7,8,9], F <- [0,1,2,3,4,5,6,7,8,9], (A+B+C==D+E+F)]).
çµæãèšç®ããæéã¯å¹žãã§ã¯ãããŸããã16ïŒ49ã«èšç®ãéå§ãã17ïŒ23ã«çµäºããŸãããããã¯30å以äžã§ãããããããã±ããã®åé¡ã®è§£æ±ºçã¯äœã§ãããäœãå
æããå¿
èŠããã£ãã®ã§ããããïŒãŸã第äžã«ãããã¯100äžã®ã¹ãã¬ãŒãžã®äžçã§ããæåã¯ããªããžããªã«ã¯ãŒã«ãããã·ã¥ãèšé²ããŸããã§ããããã¯ãŒã«ãã®ã¿ãã«ãçŽæ¥èšé²ããŸããããšã³ããªãéåžžã«å€ããªã¹ããæ€çŽ¢ãããšããã§ã«å€§ããªé
å»¶ã«çŽé¢ãå§ããŠããŸããããã·ã¥ã䜿çšãããšé床ãåäžããŸãããŸããã¹ããã5ã®èããããããã·ã¥ã®äœ¿çšãæ£ããããšã確èªãããŸãããååãšããŠãäžçã®ã¿ãã«ãä¿åã§ããŸãããããããéèŠã§ãªãæ
å ±ãåé€ããŸããããã«ãçŸåšã®ã¢ãŒããã¯ãã£ã¯ãèšç®ãå¿
èŠãªäžçã¯é
åã§äžããããäžçã®é
åã®èŠçŽ ã¯è€æ°ã®ã¢ãŒã©ã³ããŒãã§äžŠåã«èšç®ã§ãããããçç£æ§ã®èгç¹ãã質çæé·ã®äœå°ãããããšã瀺ããŠããŸãããã¹ãŠã®ã¯ãŒã«ãã®èšç®ã¯ãæ°ããããã»ã¹ã§æ¯åèµ·åãããŸãããããŠçè«çã«ã¯ããšã©ãŒã«ã€ãªããã¯ãã®Erlangä»®æ³ãã·ã³ã§æå€§æ°ã®ããã»ã¹ãéæã§ããŸããå¶éã®ãå®è¡ããèš±å¯ããããã±ããã®èšç®ããšã©ãŒã®åŠçãããã³çµæãæ£ããããšã®ç¢ºèªãã¿ã¹ã¯ããªãªã«ããã€ã®ããã£ããã
ã蟲æ°ã¯ãªãªã«ããã€ã®ããã£ãããå·ãæž¡ã£ãŠéã¶å¿
èŠããããŸããããããããŒãã¯å°äœäººã ããããã«åãããšãã§ããŠãããã§1å¹ã®ãªãªã«ãããŸãã¯1å¹ã®ã€ã®ããŸãã¯1å¹ã®ãã£ããã§ãããããããªãªã«ããã€ã®ãšäžç·ã«é¢ãããšããªãªã«ãã¯ã€ã®ãé£ã¹ããã£ãããšäžç·ã«ã€ã®ãé¢ãããšãã€ã®ã¯ãã£ãããé£ã¹ãŸãã蟲æ°ã¯ã©ã®ããã«åœŒã®è²šç©ã茞éããã®ã§ããïŒãã¿ã¹ã¯ã®è©³çްãšãããã解決ããããã®2ã€ã®ãªãã·ã§ã³ã«ã€ããŠã¯ãããã§èŠã€ããããšãã§ããŸã [7]ãã¹ããã1.äžçã®ããããç¶æ
ã®èª¬æãã¢ãŒã¿ãŒã«ãŒãã«å
¥åããŸãå ŽæïŒr
-å³ãl
-å·ŠïŒ-ç¥ç¶ãã€ã®ããªãªã«ãããã£ãããããã³åã®ãã¹ïŒ[]ã¯ãªã¹ãïŒã®æµ·å²žããªã¹ãã¯äœã§ããïŒçµå±ã®ãšãããçµæã«å°éããæ¹æ³ãç¥ãå¿
èŠããããŸãã {{ded,r},{koza,r},{volk,r},{kapusta,r},[]}
ã¹ããã2.äžçãç®æšã«å°éãããã©ããã倿ãã颿°ã説æãã
ã€ãŸãããã¹ãŠãé©åãªéè¡ã«ããã°ãåé¡ã¯è§£æ±ºããŸããã¹ããã3.äžçãããã«çºå±ããå¿
èŠããããã©ãããæ±ºå®ããæ©èœã説æããŸãã
ç¥ç¶ãããŸãã«ãé·ãéèµ°ãå Žåãããã¯è¡ãæ¢ãŸãã§ããã€ã®ãšãªãªã«ãã®æµ·å²žãäžèŽããè¿ãã«ç¥ç¶ãããªãå ŽåïŒå察åŽã®ç¥ç¶ïŒããªãªã«ãã¯ã€ã®ãé£ã¹ãŸããã€ã®ãšãã£ããã®æµ·å²žãäžèŽãããããã®è¿ãã«ç¥ç¶ãããªãå ŽåïŒå察åŽã®ç¥ç¶ïŒãã€ã®ã¯ãã£ãããé£ã¹ãŸãããã以å€ã®å Žåãããªãã¯çãç¶ããå°æ¥ãæåŸ
ããããšãã§ããŸããã¹ããã4.äžçãåå²ãããæ©èœã説æããããã§ã¯ãã¹ããŒãã§åçŽåããããšã«æ±ºãããããããã«ã¯æ©èœããŸããã§ããããããŠãäœãåçŽåããå¿
èŠã¯ãããŸããããã®ãŸãŸè¡ãå¿
èŠããããŸããæåã«ãæž¡ãããéè¡ãšã¯å察ã®éè¡ãè¿ã颿°ãäœæããŸãïŒä»¥äžã§åœ¹ç«ã¡ãŸãïŒã na_drugoi_bereg(l) -> r; na_drugoi_bereg(r) -> l.
移管ãããäžçã®éçºãªãã·ã§ã³ã®ãªã¹ããäœæããŠããŸããããããã®åã«ãç§»ãããäžçããªã¹ãã«è¿œå ããŸã-æŽå²ãçµå±ã®ãšãããçµæã«å°éããæ¹æ³ãç¥ãå¿
èŠããããŸãã
ã¹ããã5.äžçã®HASHãèšç®ããæ©èœã説æããäžçã®æšæºHASHã¯ãç§ãã¡ã«éåžžã«é©ããŠããŸãã
ãããŠãçµæã®äžçã®ããã·ã¥ãèšç®ããã ããªãïŒã¯ãã圌ã¯äžè¬ã«å¿
èŠãããŸãããç§ãã¡ããã§ã«ç¥ã£ãŠããçµæ-ãã¹ãŠãæ£ããéè¡ã«ãããŸãããã¹ã¯ç§ãã¡ã«ãšã£ãŠéèŠã§ã-å±¥æŽã®é
åã®å€ããããã£ãŠãäžçã®ããã·ã¥ãèšç®ããåã«ãããããäœããåé€ããŠãæå³ããããŸãããæã¡äžã
çµæã®åæå·ãæž¡ãäžå®æ°ã®ç¥ç¶ã®åãã§ãåé¡ã解決ããããã®ããã€ãã®ãªãã·ã§ã³ããããŸãããã®äžã§ãæãçãæ±ºå®ã¯7ã€ã®åãã«ãããŸããèšäº[ 7 ]ã«æžãããŠããããã«ããã®ãããªãœãªã¥ãŒã·ã§ã³ã2ã€ãããŸãã 1) movs=7 [ {{ded,l},{koza,l},{volk,l},{kapusta,l}}, - {{ded,r},{koza,r},{volk,l},{kapusta,l}}, - {{ded,l},{koza,r},{volk,l},{kapusta,l}}, - {{ded,r},{koza,r},{volk,r},{kapusta,l}}, - {{ded,l},{koza,l},{volk,r},{kapusta,l}}, - {{ded,r},{koza,l},{volk,r},{kapusta,r}}, - {{ded,l},{koza,l},{volk,r},{kapusta,r}}] - ,
5) movs=7 [ {{ded,l},{koza,l},{volk,l},{kapusta,l}}, - {{ded,r},{koza,r},{volk,l},{kapusta,l}}, - {{ded,l},{koza,r},{volk,l},{kapusta,l}}, - {{ded,r},{koza,r},{volk,l},{kapusta,r}}, - {{ded,l},{koza,l},{volk,l},{kapusta,r}}, - {{ded,r},{koza,l},{volk,r},{kapusta,r}}, - {{ded,l},{koza,l},{volk,r},{kapusta,r}}] - ,
ä»ã®ãªãã·ã§ã³ã§ã¯ããå€ãã®åããå¿
èŠã§ããããããã®äœã®åããç¡æå³ã§ããããšã¯æããã§ãã 2) movs=9 [ {{ded,l},{koza,l},{volk,l},{kapusta,l}}, - {{ded,r},{koza,r},{volk,l},{kapusta,l}}, - {{ded,l},{koza,r},{volk,l},{kapusta,l}}, - {{ded,r},{koza,r},{volk,r},{kapusta,l}}, - {{ded,l},{koza,l},{volk,r},{kapusta,l}}, - {{ded,r},{koza,l},{volk,r},{kapusta,r}}, - {{ded,l},{koza,l},{volk,r},{kapusta,l}}, - {{ded,r},{koza,l},{volk,r},{kapusta,r}}, - {{ded,l},{koza,l},{volk,r},{kapusta,r}}] -
ãŠãŒã¢ã¢ã®ç¬é
åç-Trees of Timesã¡ãœããã®å³ã
ãªãªã«ããã€ã®ããã£ããã«é¢ããåé¡ã®ã¢ã¡ãªã«çã
çµè«
ãŸãšãããšããã®ã¡ãœããã¯å®éã«èšç®ã«äœ¿çšã§ããããŒã«ãšããŠã®ã¢ãŒã©ã³èšèªã¯ãã¡ãœãããå®éã«å®è£
ããããã«å¿
èŠãªãã¹ãŠã®æ©èœãæäŸããŠãããšèšããŸãããã®æ¹æ³ã«ããèšç®ã®ããã°ã©ãã³ã°ãç°¡çŽ åããããã®ææ³ãšãã¬ãŒã ã¯ãŒã¯ãéçºãããŸãããã¡ãœããã®æ¹å€ããã®æ¹æ³ã¯ãæ°åŠçãªèгç¹ããã¯éç§åŠçã§ããããšãã°ãçç£ããŒãã®åé¡ã解決ããããã«ããã¹ãµãŒãã¹çè«ãªã©ãé©çšã§ããŸãããã®ã¡ãœããã®æ¬è³ªã¯ãªãã·ã§ã³ã®åæïŒããã«ãŒããã©ãŒã¹ãã¡ãœããïŒã§ãããããã¯ç¡æå³ã«èšå€§ãªèšç®ãªãœãŒã¹ãæ¶è²»ããèšç®ãã¡ã€ã³ã®å¶éãäžååãªå Žåã«ã¯è§£æ±ºçãèŠã€ããããªãå¯èœæ§ããããŸãããããããŠã£ãããã£ã¢ã¯ãã«ãŒããã©ãŒã¹ãæ°åŠçåé¡ã解決ããæ¹æ³ãšèããŠããŸãããããªãéçºã¯ã©ã¹ã¿ãŒã³ã³ãã¥ãŒãã£ã³ã°ãã¢ãŒã©ã³ããŒã«ã®å®éšãããªãŒãæåã«æ§ç¯ããããšãã«å¥ã®ã¯ã©ã¹ã®åé¡ã解決ããããã®ãã¬ãŒã ã¯ãŒã¯No. 2ã®éçºãããã³ãã®ãœãªã¥ãŒã·ã§ã³ãèŠã€ãããŸãããããšãã°ãäžç®äžŠã¹ã®å®è£
ã®ããã®AIã圌女ã«ãšã£ãŠã¯ãåã€ããã®ã²ãŒã å
ã®å¯èœãªçµã¿åããããããªãŒãæ§ç¯ãããŸããã²ãŒã ã®ã¿ãŒã³ãå§ãŸããšãAIã¯ããªãŒå
ã®äžçãèŠã€ããéçºãã©ã³ãã®1ã€ãéžæããŸããããã«ãããäžçãåå©ã®ã¿ãŒã²ããäžçã«å°ããé©åãªã¹ããããèžã¿ãŸãã䜿çšããããœãŒã¹ã®ãªã¹ã
1.ã¿ã€ã ãã©ãã«ãšããã°ã©ãã³ã°-habrahabr.ru/post/1503002.ã¿ã€ã ãã©ãã«ãšããã°ã©ãã³ã°2ïŒãã©ããã¯ã¹-habrahabr.ru/post/1789593. Vasiliy Golovachev-å®è¡è
4. qt-project.org5.éå§-ã¢ãŒã©ã³ãšä»äºrsdn.ru/article/erlang/GettingStartedWithErlang.xml6. www.erlang.org7.ã¿ã¹ã¯ããªãªã«ããã€ã®ãšãã£ããã - suhin.narod.ru/mat4.htmå¶çŽããã°ã©ãã³ã°ã®8 - en.wikipedia .org / wiki / Constraint_programming9. å¶çŽã§ã®ããã°ã©ãã³ã°-en.wikipedia.org/wiki/Programming in Constraints10.ææMats Karlsson-å¶çŽã§ã®ããã°ã©ãã³ã°ãå
¬éãããªè¬çŸ©11.æãšããŒããŒã®æ¹æ³-ja.wikipedia.org/wiki/MetodPSãé¢çœãã¿ã¹ã¯ãæ¢ããŠããŸãïŒ-ããã€ã®å¡-æ°ç¬- ãªã€ã©ãŒéЬ