Jã¯ãç§ãç¥ã£ãŠããæãç°åžžã§å¹æçãªèšèªã§ãã ããã¯ããªããè¿ éã«éçºããããšãå¯èœã«ãããŸãããã«äžæ £ãã§ã³ãŒããèŠãŠãã人ã ã«åãšããåŒãèµ·ããããšãã§ããŸãã
Jã¯ããŸãã«ãçããã§ãã ãããŠåŠã¶ã®ã¯é£ããã Jã«çŽé¢ããŠãã人ã ã¯ããããåŠã¶æ欲ã«æ¬ ããŠããŸãã æ§æã¯ç°åžžã§ãã
ãã®æçš¿ã§ã¯ãããªãããããç 究ããå Žåã«äœãèµ·ããã®ãããããŠããããªãèå³æ·±ãã®ããããã«è©³ãã調ã¹ãããšæããŸããã ç§èªèº«ã®çµéšããããã®èšèªã®å©ç¹ã¯ããã«ã¯æããã«ãªããªãããšãããã£ãŠããŸãã æçš¿ã§ã¯ããã¶ã€ã³ã®åæãåæ¢ããã€ããã¯ãããŸããã ã¬ãã¥ãŒã®ã¿ã äŸã«çªã£èŸŒã¿ãèšèªã®åãæããŠã¿ãŠãã ããã åŠç¿ããã«ãèšèªã®çŸãããåŠã³ãŸãããã ããã«ã€ããŠããã°ã©ãã³ã°ãæããèšäºãæžãã®ã¯é£ãããç§ã¯ããã¯å¿ èŠãªããšæãã ãããç°¡åã«è¡ãã®ã¯ããã»ã©ç°¡åã§ã¯ãªããå ¬åŒWebãµã€ãã®ãã¬ãŒãã³ã°è³æã«åé¡ã¯ãããŸããã äž»ãªãã®ã¯æ¬²æã§ãã ãããããŸãã
ã¡ãã£ãšããæŽå²
Jã®åã¯APLã§ããã APLèšèªã¯ãããŒããŒãèšç®æ°åŠã§50幎代ã«æããªããã ã±ãã¹ã¢ã€ããŒãœã³ã«ãã£ãŠéçºãããŸããã ç¹ã«æè²ã®ããã«ã圌ã¯èšæ³ãéçºããŸããã ãã®åŸããã®èšèªã¯ãã·ã³ã«è»¢éãããAPLïŒæ§ããïŒããã°ã©ã èšèªïŒãšããŠç¥ãããããã«ãªããŸããã APLã¯é åãåŠçããé åãåŠçããããã«æé©åãããŠããŸãã
APLã«ã¯ããããªæ¬ é¥ããããŸãã æäœã¯éæšæºã®èšå·ã§ç€ºãããŸãã ããã䜿çšããã«ã¯ãç¹å¥ãªããŒããŒããå¿ èŠã§ãã ãããã£ãŠãæšæºå ¥åããã€ã¹ã«ããé©ããæ°ããèšèªãäœæããå¿ èŠããããŸãã ã¢ã€ããŒãœã³ã¯ãASCIIæåã䜿çšããAPLæ¹èšã®äœæãéå§ããŸããã ããã§ãã±ãã¹ã»ã¢ã€ããŒãœã³ã¯ã90幎代ååã«ããžã£ãŒã»ãã¢ã€ãšãšãã«èšèªJãäœæããŸããããã®æç¹ã§ãã¢ãŒãµãŒã»ãã€ããããŒã¯ã¢ã€ããŒãœã³ã»ããŒã ãããåé¢ãããŸããã 圌ã¯Jãäœæããæ¹æ³ã«ã€ããŠæèŠã®çžéããããç¬èªã®èšèªKã®äœæã«åãæãããŸããã ãããæåããèšèªã«ãªããŸããã
ã·ã§ãŒãã¬ãã¥ãŒJ
Jã¯www.jsoftware.comããããŠã³ããŒãããŠã€ã³ã¹ããŒã«ã§ããŸãã ãã¬ãŒãã³ã°è³æãšããŸããŸãªããã¥ã¡ã³ãããããŸãã
Jã¯é¢æ°åèšèªã§ãã ããããèšèªã¯æ®éã§ã¯ãªããå€å žçãªæ©èœçã§ããããŸããã ãªããŸããã ããŒã¿ã®åäœã¯ãªã¹ãã§ã¯ãªããn次å ã®é åã§ãã
Jã¯ã€ã³ã¿ãŒããªã¿ãŒã§ãïŒãã®å®è£ ã§ã¯ïŒã åçãªã¿ã€ãã³ã°ã
åŒã¯ãåè©ãåè©ãå¯è©ãååè©ãé£åãªã©ããæ§ç¯ãããŸãã ãã®æçš¿ã§ã¯ãåè©ïŒé¢æ°/æäœã®ã¢ããã°ïŒãšåè©ïŒããŒã¿ïŒã«èå³ããããŸãã åè©ã¯ãåœä»€åèšèªã®ããã«å®å šãªããŒã¿ã§ã¯ãããŸããã ãããã¯äžå€ã§ãã ãããã£ãŠãJã§å²ãåœãŠãšåŒã°ãããã®ã¯ãããããåœåèŠåãã§ãã
åè©ã¯n次å ã®é åã§ãã ããšãã°ã次ã®ããã«åè©ãäœæã§ããŸãã
3 5 $ 0
ãŒããããªã3 x 5ã®2次å é åãååŸããŸãã ä»»æã®æ¬¡å ã®é åãååŸã§ããŸãã ç¹æ®ãªã±ãŒã¹ã¯ããŒã次å ã®é åã§ã-ããã¯ã¹ã«ã©ãŒã§ãã 1次å é å-ãã¯ãã«ã ãããã£ãŠãJã®ããŒã¿åäœã¯n次å é åã§ãã ãŒãã§ã¯ãªããå¿ èŠãªæ°åã§æºããããé åãäœæããã«ã¯ã$èšå·ã®åŸã«ãã¹ããŒã¹ãä»ããŠæååã«å¿ èŠãªããŒã¿ãæžã蟌ãããšãã§ããŸãã ããšãã°ã次ã®è¡ïŒ
3 5 $ 1 2 3
3 x 5ã®é åãäœæããŠåºåããé çªã«ç¹°ãè¿ãã·ãŒã±ã³ã¹1 2 3ã§åããŸãã
1 2 3 1 2
3 1 2 3 1
2 3 1 2 3
ã¹ã«ã©ãŒãäœæããã«ã¯ã1ã€ã®æ°åã§ååã§ãã
a =ïŒ 4
ããã§ãååã®å²ãåœãŠæ¹æ³ããã§ã«ç€ºããŸããã ã€ãŸã ãã§ã«4ã€ãããŸãã ãã¯ãã«ãäœæããã«ã¯ãã¹ããŒã¹ã空ããŠè¡ã«æ°åãæžãã ãã§ååã§ãã
4 5 3 6
4 5 3 6
*ãæ³åã®ãšãããJã¯ã€ã³ã¿ã©ã¯ãã£ãã¢ãŒãã§åäœããããã«çµæã衚瀺ããŸã
次ã«ã¿ã€ãã«ã€ããŠèª¬æããŸãã Jã§ã¯ãé åã®æ¬¡å ã«å ããŠããã®èŠçŽ ã®ã¿ã€ãããããŸãã ã€ãŸã èŠçŽ ã¯åžžã«åãã§ãã ããã€ãã®æ°å€ã¿ã€ãããããŸãïŒè«çïŒ0ã1ïŒãæŽæ°ãä»»æã®æ°ã®æåãå«ãæŽæ°ãæçæ°ãå®æ°ãè€çŽ æ°ã ãŸããæ°å€ã¿ã€ãã«å ããŠãç¹å¥ãªæ°å€ããããŸãïŒãã€ãã¹ç¡é倧ãç¡é倧ãäžç¢ºå®æ§ã Jã®åçãªåæå®ã¯ãæ°åŠçãªæäœã«æé©ã§ããJã«å«ãŸããæ°å€ãåæäœã§æ±ºå®ããŸãã ããšãã°ãæŽæ°ã®è¡åã«å¹³æ¹æ ¹ãé©çšãããšãå®æ°ãŸãã¯è€çŽ æ°ãååŸã§ããŸãã å ã®é åã®èŠçŽ ã«å¿ããŠã
ãŸããJã§ã¯ãæ°å€åã«å ããŠã
1ïŒã·ã³ãã«ïŒãªãã©ã«ïŒã Jã§ã¯ãããã¹ããåŠçã§ããŸãã ã±ãŒã¹Jã®ããã¹ãã¯æåã®ãã¯ãã«ã§ãã æåãæå®ããã«ã¯ãåäžåŒçšç¬Šã§å²ã¿ãŸãã æåã®ãã¯ãã«ãæå®ããã«ã¯ãããã¹ããäžéåŒçšç¬Šã§å²ãã ãã§ååã§ãã
2ïŒãã¯ã·ã³ã°ã¯ããã±ãŒãžåãããã¿ã€ãã§ãã ã€ãŸã ä»»æã®ãããªãã¯ã¹ãããã±ãŒãžåããŠãããã¯ã¹ãååŸã§ããŸãã ãããŠãããã¯ã¹ããé åãäœæã§ããŸãã ãã®ããã«ãããã¯ã¹ã®å©ããåããŠãããªãŒãäœæã§ããŸãã
ããã«ãããã€ãã®ç¹å¥ãªã¿ã€ãã«ã€ããŠã¯èæ ®ããŸããã
åè©ãæ±ããŸããã ããŠãåè©ãšã¯äœã§ããã
åè©ã¯ãä»ã®èšèªã®æ°åŠçšèªã§ã®æäœã®ãããªãã®ã§ãã Jã®åè©ã«ã¯ãã¢ããïŒmonadïŒãšãã€ã¢ãïŒdyadïŒã®2ã€ã®ã¿ã€ãããããŸãã ããã¯åé ããã³äºé æŒç®ã«äŒŒãŠããŸãã ãããŠãããã¯çŽ æŽãããæ©äŒãäžããŠãããŸããåè©ãäœæããããã«ãå ¥åã«ååã¯å¿ èŠãããŸããã å ¥åã¯åžžã«1ã€ãŸãã¯2ã€ïŒå·Šå³ïŒã§ãã
å€æ°åã䜿çšããã«1è¡ã§ä»ã®åè©ããåè©ã圢æããæ¹æ³ã«ã¯ãç¹å¥ãªèŠåããããŸãã
ãããã£ãŠãæåã®æšæºçãªäŸïŒ
å¹³å =ïŒ + / ïŒ ïŒ
åè©avgã¯ããã¯ãã«ã®ç®è¡å¹³åã§ãã 圌ã®äœã«æ³šæããŠãã ãã-4æåã®ã¿ã ããã«ã¯3ã€ã®åè©ãããããŸãã-æ°åïŒ + / ïŒãè¿œå ãããã¯ãã«ã®é·ãïŒ ïŒ ïŒãååŸããæåã®åè©ã2çªç®ã®åè©ïŒ ïŒ ïŒã«åå²ããŸãã
*èšå·+ããã³/ã§ç€ºããããã¯ãã«ã«æ°å€ãè¿œå ããŸãã 1ã€ç®ã¯2ã€ã®æ°åã®åèšã§ã2ã€ç®ã¯ãã¹ãŠã®èŠçŽ ã®éã«æäœã眮ãããšã§ãïŒã€ãŸããå·ŠæãïŒã ã¹ã©ãã·ã¥ã¯ããžãŒãªã®ã§ãJã®é€ç®æäœã¯ïŒ èšå·ã§ç€ºãããŸãã
ãã¯ãã«ãäœæããåè©ãé©çšããŸãã
a =ïŒ 5 3 7 0 2 4
å¹³å
3.5
ãã¯ãã«ã®ç®è¡å¹³åãåãåããŸããã
ãã®éæ³ã¯ã©ã®ããã«èµ·ãããŸããïŒ Jã¯ãã®ãããªåçŽãªã«ãŒã«ã䜿çšããŸãã ãŸããJã®æäœã«ã¯åªå é äœããªããå³ããå·Šã«å®è¡ãããŸãã åŒãæžãå ŽåïŒ
2 * 3 + 4
14
10ã§ãªã14ãååŸããŸããããã«ãããäžè¬ã«ãåŒã®æ§ç¯ãç°¡åã«ãªããŸãã é åºãå€æŽããå¿ èŠãããå Žåã¯ãæ¬åŒ§ã䜿çšãããŸãã
ïŒ 2 * 3 ïŒ + 4
10
å¿é ããªãã§ãã ããããããã¯å€ãçŽæ¥èšç®ããåãªãåŒã§ããã avg =ïŒ + / ïŒ ïŒãæžãããšããåè©ãçµã¿åãããŠåè©ãèšå®ããŸããã
次ã«ãç®è¡å¹³åãèšç®ããåè©ãã©ã®ããã«æ©èœããããåæããŸãã
åè©ãé£ç¶ãã3ã€ã®åè©ã§æ§æãããŠããå Žåãæåã®åè©ãåè©ã«é©çšããã次ã«å³ãšå·Šã®äžå€®ã®åè©ãåè©ã«é©çšãããŸãã
ãã®ããã«ïŒ
åè©ã5ã€ã®åè©ã§æ§æãããŠããå Žåãäžèšã®ããã«æåã«å³ã®3ã€ãå®è¡ããã次ã«å·Šãã2ã€åãããåãé åºã§ããã«å®è¡ãããŸãã ããšãã°ãæ倧2ã€ã®èŠçŽ ããšãåè©ïŒ ">ã"ã ãããã£ãŠããªã¹ãã®æ倧å€ïŒ "> ./"
ãããŠãæ倧å€ãšç®è¡å¹³åã®åèšãèŠã€ããåè©ãæžããŸãã
d =ïŒ >ã / ++ / ïŒ ïŒ
ãã¯ã¿ãŒã«é©çšïŒ
ã
10.5
ä»çµã¿ïŒ
ãã©ã®ããã«æ©èœãããããæžããšãããããã®åè©ãJãå®è¡ããé åºãç¥ã£ãŠããããã§ã¯ãªãããšã«æ³šæããŠãã ããããã®ãããªåè©ã®ã¹ããªã³ã°ãç解ããæ¹æ³ã®æå³ã®ã¿ã説æããŸãã åè©ã®è¡ã«ãã£ãŠãç§ãã¡ãæããã®ãèšããŸãã ãããŠã ã©ã®ããã« -Jã決å®ããŸã
äžèšã§ã¯ãåŒãæ§ç¯ããããã®ã«ãŒã«ã®1ã€ã®ã¿ã説æããŸããã ã§ããéãæ¬è³ªãã€ããããã«ãè€éãªã¢ã«ãŽãªãºã ãç°¡æœã«äžåã«ç°¡åã«èª¬æããŠãã ããããããŠãlaconicism Jã®ç§å¯ã¯äœã§ãããåœç¶ãJã説æããæå³ã¯ãããããŸããã
åè©ãåŒæ°ãšããŠ2ã€ã®åçŽãªé åïŒå·Šãšââå³ïŒã®ã¿ãåãå ¥ããããã«ãã¿ã¹ã¯ãèšè¿°ããããšãã§ããªãå ŽåããããŸãã æã«ã¯åè©ãããå€ãã®åŒæ°ãæã€é¢æ°ã®é¡äŒŒäœãæžãå¿ èŠããããŸãã ããã¯ãã¯ã·ã³ã°ã«ãã£ãŠåé¿ã§ããŸãã ã€ãŸã ä»ã®èšèªã®é¢æ°ã®å ¥åãã©ã¡ãŒã¿ãŒãšåæ§ã«ãå®éã«ã¯å€æ°ã®ç°ãªãå€ãååšããããã¯ã¹ã®ãã¯ãã«ãæå®ã§ããŸãã ãããŠåè©ã§ã¯ãããããåãåºããŠããããå±éããããšãã§ããŸãã ååž°ã¯åè©ã§ãå®è£ ãããŸãã
äžèšã®Jã§ã®åè©ã®èšè¿°åœ¢åŒã¯æé»çãšåŒã°ããŸãã
ããã§ãããã€ãã®äŸããããããã©ã®ããã«æ©èœãããã説æããã«ã
äŸ
1.ã€ã³ããŒãžã§ã€ã³
SQLã®ãã®ãããªäŸãèããŠãã ããã 2ã€ã®ããŒãã«ããããŸãã
CREATE TABLE Customers (ID INT, Name TEXT, Age INT, Salary INT) CREATE TABLE Orders (OID INT, Date DATETIME, CustomerID INT, Amount INT)
ã©ããããããç§ãã¡ã¯ããããåããŸãã ãããŠããã®ãããªèŠæ±ïŒ
SELECT * FROM Orders o INNER JOIN Customers c ON o.CustomerID = c.ID AND o.Amount < 2000
æå³çã«ããŒãã«ãçµåããã®ã¯å¹³çã§ã¯ãªããã¿ã¹ã¯ãå°ãè€éã«ããããã«ãããè€éãªè¿°èªã䜿çšããŠçµåããŸãã
Jã§ãåãããšãããããšããŸãã
createTable =ïŒ [ïŒ|ïŒãã ïŒ aïŒ
union =ïŒ ïŒ [ïŒ{ã[ ïŒ ãïŒ[ïŒ ïŒ [ïŒ<[:;]ïŒ ããïŒ ïŒ a :) " 1 ïŒ [ïŒ{ïŒ[ ïŒ ãã ïŒ [ïŒ{ïŒ] ïŒ { ã ïŒ [ïŒ{ã] ïŒ iã[ïŒ{ã[
insert =ïŒ [ union [ïŒ ïŒ {ããïŒ ïŒ [ïŒ ïŒ [ïŒ<[ïŒïŒ ] $ ã [ïŒ 1 ïŒïŒ ïŒ ïŒ > ïŒ " 0 {: )ïŒ [ïŒ|ïŒ[ïŒ>]
è¡ =ïŒ {ã ïŒ [ïŒ<ã:) " 1 1 [ïŒ|ïŒ[ïŒ ïŒ [ïŒ< " 1 [ïŒãã> ïŒ " 0 {ïŒ
å€ =ïŒ [ïŒïŒ ] ` {ã @ã ïŒ [ïŒ 1 ïŒ =ïŒ ïŒïŒ [ïŒã[ïŒ> [ ïŒïŒïŒ [ïŒ<[ ïŒ = [ïŒ{ã] ïŒ ïŒ[ïŒ{ïŒ] ïŒ [ïŒ>]
pr =ïŒ [ïŒã[ïŒ ïŒïŒ [:: [ ïŒïŒïŒ [ïŒ< ïŒ [ïŒ> [ ïŒ ãã[ïŒ>] ïŒ " 0 0 ïŒ " 0 1 [ïŒ>] ïŒ / [ïŒ ïŒ [ ïŒ<[ïŒ rows > ïŒ " 0 ]
join =ïŒ 1 ïŒ 'ïŒïŒïŒ[[ïŒ{ã[ïŒ> {ãïŒ,: [ïŒïŒ[ïŒ<ïŒ> " 0ïŒïŒ " 1 [ïŒ{ïŒ[ïŒ1 2 0ïŒ|ïŒ[ïŒ>ïŒ [ïŒãu " 0ïŒïŒ]ïŒïŒpr yïŒïŒ '
äžè¬ã«ãããã¯ãã®åé¡ã解決ããããã®ãã¹ãŠã®ã³ãŒãã§ãã å¿ èŠãªåè©ã¯æ¬¡ã®ãšããã§ãã ããŒãã«ãäœæããŠããŒã¿ãå ¥åããŸãã
顧客 =ïŒ createTable 'ID' ; ' ååã ;ã 幎霢 ' ;' çµŠäž '
Orders =ïŒ createTable 'OID' ; ' æ¥ä» ' ;' CustomerID ' ;' éé¡ '
顧客 =ïŒ é¡§å®¢ãæ¿å ¥ ïŒ <' ID' ; 1 ïŒ ã ïŒ <' åå' ; ' ã©ã¡ã·ã¥' ïŒ ã ïŒ <' 幎霢' ; 32 ïŒ ã ïŒ <' 絊äž' ; 2000 ïŒ
顧客 =ïŒ é¡§å®¢ãæ¿å ¥ ïŒ <' ID' ; 2 ïŒ ã ïŒ <' åå' ; ' ãã©ã³' ïŒ ã ïŒ <' 幎霢' ; 25 ïŒ ã ïŒ <' 絊äž' ; 1500 ïŒ
顧客 =ïŒ é¡§å®¢ã®æ¿å ¥ ïŒ <' ID' ; 3 ïŒ ã ïŒ <' åå' ; ' kaushik' ïŒ ã ïŒ <' 幎霢' ; 23 ïŒ ã ïŒ <' 絊äž' ; 2000 ïŒ
顧客 =ïŒ é¡§å®¢ã®æ¿å ¥ ïŒ <' ID' ; 4 ïŒ ã ïŒ <' åå' ; ' ãã£ã€ã¿ãª' ïŒ ã ïŒ <' 幎霢' ; 25 ïŒ ã ïŒ <' 絊äž' ; 6500 ïŒ
顧客 =ïŒ é¡§å®¢æ¿å ¥ ïŒ <' ID' ; 5 ïŒ ã ïŒ <' åå' ; ' Hardik' ïŒ ã ïŒ <' 幎霢' ; 27 ïŒ ã ïŒ <' 絊äž' ; 8500 ïŒ
顧客 =ïŒ é¡§å®¢æ¿å ¥ ïŒ <' ID' ; 6 ïŒ ã ïŒ <' åå' ; ' Komal' ïŒ ã ïŒ <' 幎霢' ; 22 ïŒ ã ïŒ <' 絊äž' ; 4500 ïŒ
顧客 =ïŒ é¡§å®¢ãæ¿å ¥ ïŒ <' ID' ; 7 ïŒ ã ïŒ <' åå' ; ' ããã£ãŒ' ïŒ ã ïŒ <' 幎霢' ; 24 ïŒ ã ïŒ <' 絊äž' ; 10000 ïŒ
Orders =ïŒ æ³šæã®æ¿å ¥ ïŒ <' OID' ; 102 ïŒ ã ïŒ <' Date' ; ' 2009-10-10 08' ïŒ ã ïŒ <' CustomerID' ; 3 ïŒ ã ïŒ <' Amount' ; 3000 ïŒ
Orders =ïŒ æ³šæã®æ¿å ¥ ïŒ <' OID' ; 100 ïŒ ã ïŒ <' Date' ; ' 2009-10-10 08' ïŒ ã ïŒ <' CustomerID' ; 3 ïŒ ã ïŒ <' Amount' ; 1500 ïŒ
Orders =ïŒ Orders insert ïŒ <' OID' ; 101 ïŒ ã ïŒ <' Date' ; ' 2009-11-11-20' ïŒ ã ïŒ <' CustomerID' ; 2 ïŒ ã ïŒ <' Amount' ; 1560 ïŒ
Orders =ïŒ Orders insert ïŒ <' OID' ; 103 ïŒ ã ïŒ <' Date' ; ' 2008-05-20 ' ïŒ ã ïŒ <' CustomerID' ; 4 ïŒ ã ïŒ <' Amount' ; 2060 ïŒ
ããŒãã«ã§ç¢ºèªããŠã¿ãŸãããã
ã客ããŸ
ID | ãåå | 幎霢 | 絊æ |
1
2 3 4 5 6 7 | ã©ã ã·ã¥
ãã©ã³ ã«ãŠã·ã¯ ãã£ã€ã¿ãª ããŒãã£ã¯ ã³ãã« ãã㣠| 32
25 23 25 27 22 24 | 2000幎
1500 2000幎 6500 8500 4500 10,000 |
ã泚æ
ãªã€ã | æ¥ä» | CustomerID | éé¡ |
102
100 101 103 | 2009-10-08
2009-10-08 2009-11-20 2008-05-20 | 3
3 2 4 | 3000
1500 1560 2060 |
ãããŠãè¿°èªãæã€ã¯ãšãªïŒ
ïŒïŒ [ïŒ 2000 ïŒ > 'Amount' ïŒ value ïŒ *ã 'CustomerID' ïŒ value = 'ID' ïŒ value ïŒ join Customers ; < 泚æ
ID | ãåå | 幎霢 | 絊æ | ãªã€ã | æ¥ä» | CustomerID | éé¡ |
2
3 | ãã©ã³
ã«ãŠã·ã¯ | 25
23 | 1500
2000幎 | 101
100 | 2009-11-20
2009-10-08 | 2
3 | 1560
1500 |
ãšãŠãç°¡åã§ãã Jã¯äžè¬çãªèšèªã§ããããªã¬ãŒã·ã§ãã«ããŒã¿ãåŠçããããã®ããŒã«ããªãããšã«æ³šæããŠãã ããã äžèšã®ã³ãŒãã¯ãããŒãã«ãäœæããã³èšå®ããåã®ãã¹ãŠã®ããžãã¯ã§ãã joinã¯ä»»æã®è¿°èªãåãå ¥ããããšãã§ããŸãã
ãã®äŸã¯å®éã«ã¯è€éã§ã¯ãããŸããã é åã¯ããŒãã«ã«å€å°äŒŒãŠãããJã¯åè§åœ¢ã§ããã¯ã¹ïŒããã¯ã¹ïŒãæç»ããŸããããã«ãããããŒãã«ãããã«è¡šç€ºã§ããŸãã
2.æ°ç¬ãœã«ããŒ
i = :, ïŒïŒ ã| :) iã9 9 ïŒ ,,ã /ãã / iã 4 $ 3
c =ïŒ ïŒ ïŒ= [ïŒïŒãã ïŒ @ -ã ïŒ 0
t =ïŒ [ïŒ ïŒïŒ [[ïŒ* / _9ïŒ c \ ] ïŒ " 1 ïŒ] ïŒ i ïŒ {+ " 1 1 ïŒ >ïŒ iã9 ïŒ * / [ïŒ i ïŒ = iã ïŒ 0
r =ïŒ [ ïŒã ` $ïŒ @ã ïŒ 0ïŒeãã ïŒ [ïŒ; ïŒ < @ t ïŒ " 1
s =ïŒ 9 9 ïŒ $ @ r @ ã
ããããã¹ãŠã®ã³ãŒãã§ãã å ¥åè¡åãäœæããŸãã
] m =ïŒ 9 9 $ "ã " 0 '200370009009200007001004002050000800008000900006000040900100500800007600400089001'
2 0 0 3 7 0 0 0 9
0 0 9 2 0 0 0 0 7
0 0 1 0 0 4 0 0 2
0 5 0 0 0 0 8 0 0
0 0 8 0 0 0 9 0 0
0 0 6 0 0 0 0 4 0
9 0 0 1 0 0 5 0 0
8 0 0 0 0 7 6 0 0
4 0 0 0 8 9 0 0 1
åè©ãé©çšããŠè§£æ±ºçãååŸããŸãã
sm
2 8 4 3 7 5 1 6 9
6 3 9 2 1 8 4 5 7
5 7 1 9 6 4 3 8 2
1 5 2 4 9 6 8 7 3
3 4 8 7 5 2 9 1 6
7 9 6 8 3 1 2 4 5
9 6 7 1 4 3 5 2 8
8 1 3 5 2 7 6 9 4
4 2 5 6 8 9 7 3 1
ããçããœãªã¥ãŒã·ã§ã³
äžèšã®ã³ãŒãã¯ãã¹ããŒã¹ãšæ¹è¡ãå«ã148æåã§æ§æãããŠããŸãã ããçã解決çããããŸãã äŸïŒ
http://nsl.com/k/sudoku/aw3.k
ãã®ãœãªã¥ãŒã·ã§ã³ã§ã¯ã72ïŒ!!!ïŒæåããå¿ èŠãããŸããã ããããããã¯K.èšèªã®äœæè ã§ããArthur Whitneyã®æ±ºå®ã§ãããKãArthur Whitneyã®æ±ºå®ã¯ããã°ã©ãã³ã°ã®ç¥ã§ããã圌ãšç«¶äºããæå³ã¯ãããŸããã
ç§ã®ãœãªã¥ãŒã·ã§ã³ã«ã¯ãå²ãåœãŠã®åšãã«ããããªã¹ããŒã¹ïŒãã€ãã¹10æåïŒãå«ãŸããŠãããåè©ããã€ã³ã©ã€ã³åãããããšãã§ããŸããããã¯ãããã€ãã®æåãç²åŸããã®ã«ã圹ç«ã¡ãŸãã ããããç°¡æœã«ããããã«ãçŸããæ確ãªã³ãŒããç ŽããããããŸããïŒïŒ
Jã«ã¯çãæç« ãæžãæ¹æ³ããããçµéšäžè¶³ãç§ã«åœ±é¿ãäžãããšç¢ºä¿¡ããŠããŸãã
http://nsl.com/k/sudoku/aw3.k
ãã®ãœãªã¥ãŒã·ã§ã³ã§ã¯ã72ïŒ!!!ïŒæåããå¿ èŠãããŸããã ããããããã¯K.èšèªã®äœæè ã§ããArthur Whitneyã®æ±ºå®ã§ãããKãArthur Whitneyã®æ±ºå®ã¯ããã°ã©ãã³ã°ã®ç¥ã§ããã圌ãšç«¶äºããæå³ã¯ãããŸããã
ç§ã®ãœãªã¥ãŒã·ã§ã³ã«ã¯ãå²ãåœãŠã®åšãã«ããããªã¹ããŒã¹ïŒãã€ãã¹10æåïŒãå«ãŸããŠãããåè©ããã€ã³ã©ã€ã³åãããããšãã§ããŸããããã¯ãããã€ãã®æåãç²åŸããã®ã«ã圹ç«ã¡ãŸãã ããããç°¡æœã«ããããã«ãçŸããæ確ãªã³ãŒããç ŽããããããŸããïŒïŒ
Jã«ã¯çãæç« ãæžãæ¹æ³ããããçµéšäžè¶³ãç§ã«åœ±é¿ãäžãããšç¢ºä¿¡ããŠããŸãã
3.ããããŒã°
ãããªãã¯ã¹/é åã«è¿ããªããããå®çšçãªã¿ã¹ã¯ã®ããã«Jã³ãŒãã瀺ããããšæããŸãã ãã¯ãã«ã¢ãããŒãã解æã«é©ããŠãããšããçåãèããŸããã æçš¿ã®ããã®ç°¡åãªã¿ã¹ã¯ãéžæãããšããã¢ã€ãã¢ãæµ®ãã³ãŸãããããã®è§£æ±ºçã¯è§£æã«é¢é£ããŠããŸãã Prologãå®è£ ããŸãã ããæ£ç¢ºã«ã¯ããã¹ãŠã®ããããŒã°ã§ã¯ãããŸããã ã¿ã¹ã¯ã¯å®çšçã§ã¯ãªããå€ãã®æéãšåŽåãè²»ããå¿ èŠã¯ãããŸããã ããã¯ãååãšããŠæé»ã®é²é³åœ¢åŒããã®ãããªã¿ã¹ã¯ã«é©ããŠããããšã瀺ãããã«ãPrologã®ãµãã»ããã«ãªããŸãã ãã®ããããŒã°ã§ã¯ããããåŒã³åºãããšãã§ããã°ãã¯ãªããã³ã°ãããããŸããã åçŽãªäºå®ãšã«ãŒã«ãæäœãandãããorãã®ã¿ã ã ããã³ãŒãïŒ
frq =ïŒ [ïŒ-ã[ïŒïŒ 2ïŒ| + / ïŒ \ '' '' ïŒ =
sp =ïŒ ïŒ ïŒ @ [ ïŒïŒ [ïŒ<[}ã[ïŒ>] ïŒ " 0 0 [ ïŒ ] < /ã ã [ïŒ+ / \ E. *ã[ïŒ frq ] ïŒ ã
spf =ïŒ [ïŒ<[ïŒ ïŒ [ïŒ 'ã' ïŒ sp [ïŒ-ã ïŒ 'ïŒ' = ïŒ 'ïŒ' { " 0 1 ãã ïŒ 'ã' ïŒ >
cl =ïŒ ïŒ ã [ïŒ-ãeã ïŒ ïŒ 33 { ãA. ïŒ *ã frq
parse =ïŒ [ïŒ ïŒ [ïŒ<[ïŒ ïŒïŒ spf @ {ã ïŒ ã ïŒ }ã ` ïŒ [ïŒ<[ïŒ ïŒ [ïŒ<[ïŒ spf " 0 [ïŒ 'ïŒã' ïŒ sp > ïŒ " 0 [ïŒ 'ïŒ;' ïŒ sp [ïŒ> {:) @ã ïŒ 2ïŒ=ïŒ ïŒïŒïŒ [ïŒ 'ïŒ-' ïŒ sp > ïŒ " 0 _1ïŒ}ã[ïŒ 'ã' ïŒ sp cl
isVar =ïŒ [ïŒïŒ 91 ïŒ > * ã64 ïŒ < ïŒ [ïŒ aã ïŒ iã[ïŒ{ã>
replace =ïŒ ïŒïŒ ] iãã [ïŒ{ã[ ïŒ { ïŒ [ïŒ{ïŒ[ ïŒ ã] ` ïŒ [ïŒ<[$ïŒ[ïŒ>] ïŒ @ã ïŒ [ïŒ 32 ïŒ = [ïŒ 3 ïŒ ïŒ 0 [ïŒ>] ïŒïŒ " 2 0
gp =ïŒ [ïŒ> [ïŒ{ã>
gv =ïŒ [ïŒ ïŒ ïŒ ã [ïŒ+ã / " 1 isVar " 0 ïŒ ãã
suit =ïŒ ïŒ [ ïŒ 0ïŒ ` ïŒ [[ ïŒïŒ ïŒ= [ïŒïŒ[ïŒãã[ïŒ{ã| :) [ïŒãã[ïŒ ïŒ ïŒ ã [ïŒ-ã[ïŒ isVar " 0 [ïŒ {ïŒ| :) gv ïŒ *ã ïŒ [ïŒ*ã / [ïŒ+ã / [ïŒ ïŒ isVar " 0 ã= /ïŒã:)ïŒ@ãïŒïŒ[ïŒïŒ[ïŒ= [ïŒïŒ] ïŒïŒ [ïŒ gp ] ïŒ " 1 0 ïŒ]
sr =ïŒ [ ïŒ ] ïŒ replaceã [ïŒ|ïŒ] ïŒ " 2 [ïŒ ïŒïŒ [::ã[ïŒ isVar {:) " 1 ïŒ] ïŒ [ gvã [ïŒ gp ] ïŒ " 1 0 ã¹ãŒã
groupVars =ïŒ [ïŒ ïŒ [ïŒ<] $ ã2 ïŒã ã [ïŒ-ïŒïŒ ïŒ " 1 [ïŒ> [ïŒ ïŒ [ïŒ<[:; ïŒ > @ [ ïŒïŒ [ïŒ<ã " 1 1 ïŒ " 1 2 ïŒ > @ ] ïŒïŒ / ] < / ã ã [ïŒ{ã|ïŒ
isRuleTrue =ïŒ ïŒ [ïŒ+ã / ïŒ [ïŒ*ã / ] ïŒ isTrueã [ïŒ>] ïŒ " 1 0 [ïŒ> [ ïŒ " 0 1 ïŒ ` ïŒ 0ïŒ<[ïŒïŒ getVarsFromRule ïŒ @ã ïŒ 0ïŒ<ïŒ @ gv @ ; @ ; @ [ ïŒ
isTrue =ïŒ ] ïŒïŒ aïŒ ïŒ eã @ ] ïŒ +ã[ïŒ+ã / [ ïŒ isRuleTrueã [ïŒ>] ïŒ " 1 0 [ïŒ-ã ïŒ aïŒ ] ïŒ [ïŒ{ïŒ[ïŒ|ïŒ [ïŒ-ã ïŒ ïŒ a :, a :) [ïŒ ïŒ 0 2 $ a :) ïŒ ã[ïŒ> sr
getVars = ïŒ; ïŒïŒ [ïŒ<[ïŒãã ïŒ > @ {ã @ [ ïŒ gv [ïŒ gp ] ïŒ ` ïŒïŒ > @ {ã @ [ ïŒ $ïŒ ïŒ < @ < @ gp @ ] ïŒïŒ [ ããã 眮æ |ïŒ[ïŒ>] ïŒ " 0 0 ïŒ }ã @ [ ïŒ GetVarsFromRuleã [ïŒ> [ïŒ{ïŒ[ïŒ>] ïŒ @ã ïŒ [ïŒ<ïŒ[ïŒïŒ[ïŒ>] ïŒïŒ " 1 0 sr
getVarsFromRule =ïŒ ] ïŒïŒ [ïŒ{ã] ïŒ ïŒ ã [ ïŒ isRuleTrueã [ïŒ>] ïŒ " 1 0 [ïŒ{ïŒ] ïŒ [ïŒ|ïŒ[ ïŒ ]ã[ïŒ<[ replaceã [ïŒ|ïŒ [ïŒ>] ïŒ " 1 0 [ïŒ] ` groupVars @ã ïŒ 0ïŒ<ïŒ ïŒ [ïŒãã [ ïŒ; [ïŒ;] ïŒ [ïŒ<[ getVarsã [ïŒ>] ïŒ " 1 0 [ïŒ; [
ç®æš =ïŒ ïŒ [ïŒ< SïŒ 0 [ïŒ{ã[ïŒ parse [ïŒã ïŒ 'ã' ] ïŒïŒ [ïŒ{ ïŒ ïŒ > 'No' ; 'Yes' ïŒ isTrue ïŒ ` ïŒ [ïŒïŒ ] ` ïŒïŒ > @ {ã ïŒ ã[ïŒ '=' ïŒ ã[ïŒ> {:) @ã ïŒ 2ïŒ=ïŒ ïŒïŒ " 1 [ïŒ> getVars ïŒ @ã ïŒ [ïŒ+ã / [ïŒ IsVar " 0 [ ïŒïŒ [ïŒ è§£æ [ ïŒ
ããããã¹ãŠã®ã³ãŒãã§ãã å®éãããŒãµãŒã¯ãœãªã¥ãŒã·ã§ã³ã®æåã®éšåã«ãããŸãã ãã®ãããªåçŽãªããããŒã°ã解æããã¿ã¹ã¯ã¯ããã¡ããåå§çã§ãã ããã§ããJã¯è§£æã«äœ¿çšã§ããŸãã ãŸããããè€éãªè§£æã¿ã¹ã¯çšã
ããŒãµãŒã®å¯äžã®ãè€éãã-ããããŒã°ã§ã¯ãåäžåŒçšç¬Šã§å²ãŸããä»»æã®æåããã¢ãã ãäœæã§ããŸãã ãã以å€ã®å ŽåãããŒãµãŒã¯ã¯ããã«çããªããŸãã ããã§ããç§ã¯ç¹ã«ã©ã€ãã©ãªåè©ã䜿çšããŠããŸããã ããªããèšèªèªäœã®åãç解ããããã«ãã©ãã ãæ©ããŒãããäœããæžãããšãã§ãããã ããã¹ããæäœããããã®ã©ã€ãã©ãªããããŸãã æ£èŠè¡šçŸãæäœããããã®ã©ã€ãã©ãªããããŸãã
Prologã§ã³ãŒããèšå®ããŸãããïŒ
prolog_code =ïŒ 0 ïŒ 0
ç·æ§ïŒãžã§ãïŒã
ç·æ§ïŒãã¬ããïŒã
女æ§ïŒã¡ã¢ãªãŒïŒã
芪ïŒãžã§ãããã³ã¹ããžã§ãŒã³ïŒã
芪ïŒã¡ã¢ãªãŒããã³ã¹ããžã§ãŒã³ïŒã
sister_ofïŒXãYïŒïŒ-女æ§ïŒXïŒã
芪ïŒXãFãMïŒã
芪ïŒYãFãMïŒã
ïŒ
ãããŠããã€ãã®è³ªåã
ãã¡ã¢ãªãŒã«ã¯ãã¬ããã®åŠ¹ãããŸããïŒãïŒ
prolog_codeãŽãŒã« 'sister_ofïŒmaryãfredïŒ'
ãã
ãã¡ã¢ãªãŒãå§åŠ¹ã«ããå¿ èŠãããã®ã¯èª°ã§ããïŒãïŒ
prolog_codeãŽãŒã« 'sister_ofïŒmaryãXïŒ'
X =ãžã§ã
X =ã¡ã¢ãªãŒ
ãããã«
Jã§è€éãªåé¡ãç°¡åã«è§£æ±ºããæ¹æ³ã«è§Šçºãããããšãé¡ã£ãŠããŸãã 軜ããç ç²ã«ããŠãçåãæ±ããããããŸããã
äŸã®ç®çã¯ãæé»ã®åœ¢åŒã§ã³ãŒãã衚瀺ããããšã§ãã ã³ãŒãã«éæšæºã®ã©ã€ãã©ãªåè©ãå®è³ªçã«ãªãããšã«æ°ä»ããŸãããïŒ ãã¹ãŠã®ã³ãŒãã¯ã»ãŒå¥èªç¹ã§æ§æãããŠããŸãã ãããã¯åæ©çãªåè©Jã§ãããã¡ãããåè©ãå ¥åããã«æå³ã®ããååãä»ããã«ããã®ããã«æžãããšã匷å¶ãã人ã¯ããŸããã ããããé«ã¬ãã«ã®Jã¯ãã³ãŒãã®ç°¡æœãã«ãããæ°ããååãå°å ¥ããªãåŸåããããŸãã æ°ããã³ãŒããäœæããããã®åªåã®ã³ã¹ãã¯å°ãããååã®åŸãã«ã³ãŒããé ããããªããšããäºå®ã«ã€ãªãããŸãã äžè¬çã«ãããã¯æéã®çµéãšãšãã«ãJã®ããã°ã©ããŒãåãåè©ãèªããšããäºå®ã«ã€ãªãããŸãã ã³ãŒãã¯ãŸããŸãæ確ã«ãªã£ãŠããŸãã
äž»æµã®OOPèšèªã§äœæ¥ããŠãããã¹ãŠã®ããã°ã©ãã¯ãæ²ããããšã«ãã©ã€ãã©ãªãšãã¬ãŒã ã¯ãŒã¯ã®çŸç¶ãæ²ããã«åæãããšæããŸãã åªããããã°ã©ãã³ã°æ £è¡ã§ã¯ãæå³ã®ããååã®åŸãã«é ããŠã³ãŒããã«ãã»ã«åããå¿ èŠããããŸãã ã³ãŒããäœæããåªåãååã«å€§ããå Žåãããå€ãã®ååã衚瀺ãããŸãã ãããŠãããšãã°ããããžã§ã¯ãã§äœæ¥ããããã«æ°ããããŒã ã«æ¥ããšããã³ãŒãå ã®èšèªã¯ã»ãšãã©æ®ã£ãŠããŸãããæ°ãããšã³ãã£ãã£ã以åã®ããã°ã©ããŒãååãä»ãããã®ãã¹ãŠãåŠã¶å¿ èŠããããŸãã æ°ããèšèªãåŠã¶ããšã¯åžžã«å³æžé€šãåŠã¶ããšãè ããããã®æ°ã¯æ¥éã«å¢å ããŠããŸãã Jã¯ãã®åé¡ã解決ããŸããããå éãããŸãã
èšèªãšããŠã®Jã®ãšã³ããªãããå€ã¯ããªãé«ããªã£ãŠããŸãã æåã¯ãå®éã«ã¯èªããŸããã ãã¹ãŠã®åè©ãå匷ããã®ã§ãã»ãšãã©æžãããšã¯ã§ããŸããããã³ãŒããèªãããšããã§ããŸããã ããããæéãçµã€ã«ã€ããŠãããªãã¯ãããããç°¡åã«è¡ãããšãã§ããŸãã ããã¯ä»ã®èšèªã§ã¯èµ·ãããŸããã
ãŸããããã¯ãJã®ãµããŒããäžååã§ãããJã«ååãªã©ã€ãã©ãªããªãããšãæå³ãããã®ã§ã¯ãªãããšã«æ³šæããŠãã ããã Excelãã¡ã€ã«ãããŒã¿ããŒã¹ã®æäœãããããªã®æäœãŸã§ããã§ã«å€ãã®éçºãè¡ãããŠããŸãã ãŸããJã¯ãã«ããã©ãã€ã ã§ãããæé»ã®åœ¢åŒã ãã§ãªããåœä»€åœ¢ã§ãèšè¿°ã§ããŸãã ã«ãŒããšåå²ããã ãšã©ãŒåŠçããã Jã¯OOPããµããŒãããŸãã
Jã§ã®äœæ¥ã¯ã³ãŒãã£ã³ã°ãšã¯ç°ãªããåŒã®æŽŸçã§ãã æåã¯ãã³ãŒãããã£ãšèŠããšãã¿ã€ãã³ã°é床ããã£ãšé ããªããŸãã ããããããããã¹ãŠã«ãããçµæã¯ãæåã§ãã£ãŠããä»ã®èšèªãããéããªããŸãã éåžžã«å€§ããªçµéšãšã³ãŒãã®å¯èªæ§ããªããŠããæéãçµã€ã«ã€ããŠãJã®åé¡ã解決ããããã«åº§ã£ãŠããããšã¯ãä»ã®ãã銎æã¿ã®ããèšèªã§è§£æ±ºãããããã¯ããã«ç°¡åã«æããŸãã Jã§ã®äœæ¥ã¯ãããã°ã©ãã³ã°èšèªã§ã¯ãªãã匷åãªèšç®æ©ã§ã®äœæ¥ã«äŒŒãŠããŸãã äœäžçŽã«ãããã£ãŠäœããäœæããŠãããšããæèŠã¯ãããŸããã çµæãåŸãé床ã¯ã³ãŒãã£ã³ã°ã®åæ°ãäžããããŸããŸãªãªãã·ã§ã³ãç°¡åã«è©Šãããšãã§ããŸãã
ããã®ãããã§ãJã«ã¯ãããããããŸã-ç¹ã«éèã»ã¯ã¿ãŒã§ã®ããŒã¿åŠçã Jã§ã¯ãããŒã¿ãç°¡åã«ãå転ããããããŸããŸãªä»®èª¬ããã¹ãããŸãã ãŸããå¿ èŠã«å¿ããŠãã¹ã¯ãªãããä¿åããŠããã°ã©ã ãšããŠäœ¿çšããŸãã Jã¯ããŒã¿åŠçãããžã§ã¯ãã§äŸ¿å©ã§ãã è€éãªã¢ã«ãŽãªãºã ãå¿ èŠãªå Žåã ããã«ãã¢ã«ãŽãªãºã ã®è€éãã«ãã£ãŠããæçšãªè€éãããã€ãŸã æé©åã®ããã®ã¢ã«ãŽãªãºã ã§ã¯ãªããããŒã¿å€æã®è€éãã ããããã¹ãŠã«ãããJã¯éåžžã«çç£çã§ãã 圌ãéèš³ã§ããããšãæããªãã§ãã ããã 圌ã¯è¡šçŸãè¡ããšã«å®è¡ãããšããæå³ã§ã®ã¿éèš³ã§ãã ãã ããè¡ã«åè©åŒãèšè¿°ãããŠããå Žåã¯ãããã1åå®è¡ããŠèšæ¶ããããŒã¿ã«åè©ãé©çšãããšããã«æ©èœããŸãã ãªããªã éåžžã倧éã®ããŒã¿ãåŠçããããããJã§ã®æé©åã¯è¯å¥œãªããã©ãŒãã³ã¹ã瀺ããŸãã Jã¯ãä»ã®èšèªã§æžãããã©ã€ãã©ãªã§ãåäœããŸãã ããã«ãããåé¡ã®ããé åãæé©åã§ããŸãã
ãã®èšèªã¯ããã®ç¹æ§ã«ããããããã¿ã€ãã³ã°ã«é©ããŠããŸãã ããã«ããããã¿ã€ãã¯æžãæããããªãå¯èœæ§ãé«ããªããŸãã ãŸãã¯çç£æ§ãé©åããããåé¡é åã®ã¿ã®æé©åãå®è¡ããããšãå¯èœã§ãã
ããã¯ãã¹ãŠè¯ãããšã§ãããããŒã ãããžã§ã¯ãã§Jã䜿çšããããšã«ã¯1ã€ã®åé¡ããããŸããå°é家ã¯ã»ãšãã©ããŸããã ãããžã§ã¯ãã§Jã䜿çšããããšã«ããå Žåã人ãèŠã€ãããªãå¯èœæ§ãé«ããªããŸãã
ããã«ãããããããJã¯ããŒã ã¯ãŒã¯ã ãã§ãªã䜿çšã§ããŸãã ããã¯åŒ·åãªåŠç¿å¹æããããããŸãã Jãæäœãããšãã¢ã«ãŽãªãºã å šäœã®èŠæ¹ãå€ããããæ°ãå€ãããŸããã ä»ã®èšèªã§ã®äœæ¥ã«ãã©ã¹ã®å¹æããããŸãã
ãŸãããã®èšèªã¯ãè£å©èšèªãšããŠãä»äºã«éåžžã«äŸ¿å©ã§ãã ç§ã®ç°å¢Jã¯åžžã«éããŠãããé»åããšã¯ã»ã«ã䜿çšããŠããŸããã äœãã解æããããå¥ã®èšèªã®ã³ãŒããçæãããããå¿ èŠãããå Žå-Jã¯çŽ æŽãããããŒã«ã§ãã
åç §è³æ
1.å ¬åŒãŠã§ããµã€ãïŒ www.jsoftware.com
2.åªããèšäºãèªãããšããå§ãããŸã- ããã°ã©ãã³ã°èšèªJã玹ä»