
å ±éãã¹ããæ å ±â ãã§ãã䜿ããªãè¬ããã°ã©ãã³ã°èšèªDNCLãšã¯ïŒ
å ±éãã¹ããæ å ±â ãã®å匷ãå§ãããšãå€ãã®åéšçãæåã«ã€ãŸãããã®ããããŸãã
ããã¯å€§å3ãããã°ã©ãã³ã°ã
ãããŠããã®ããã°ã©ãã³ã°ã§äœ¿ãããŠããããåãããªãæ¥æ¬èªé¢šã®ããã°ã©ãã³ã°èšèªã
ãããDNCLã§ãã
å ¬åŒããã¥ã¡ã³ãã¯ãã¡ãã
ãããã°ã©ãã³ã°èšèªãªã®ïŒããPythonãšã¯äœãéãã®ïŒããããã£ãŠåéšãçµãã£ãŠã圹ã«ç«ã€ã®ïŒã
åããŠèŠã人ãªãããããªçåãæ±ãã®ãåœç¶ã§ãããã
ãã¡ããDNCLã¯ãããã°ã©ããŒãä»äºã§äœ¿ããããªèšèªã§ã¯ãããŸãããæ å ±ã®èãæ¹ãã¢ã«ãŽãªãºã ãåŠã¶ããã«äœããããæè²çšã®èšè¿°æ¹æ³ã§ãã
ãã®èšäºã§ã¯ãDNCLãšã¯äœãªã®ãããªãå ±éãã¹ãã§äœ¿ãããã®ãããããŠå¹çãã察çããæ¹æ³ãŸã§åããããã玹ä»ããŸãã
DNCLãšã¯ïŒ
DNCLïŒDaigaku Nyushi Center LanguageïŒã¯ã髿 ¡ãæ å ±ãã®å ¥è©Šåãã«äœãããããã°ã©ã è¡šèšæ³ã®äžã€ã§ãã
ãã®ãŸãŸãããååã§ãã
äžè¬çãªããã°ã©ãã³ã°èšèªã®ããã«ããœã³ã³ãžå ¥åããŠåããããšãç®çãšãããã®ã§ã¯ãªããã¢ã«ãŽãªãºã ãè«ççãªèãæ¹ã衚çŸããããã«äœ¿ãããŸãã
ãã®ãããPythonãJavaã®ãããªéçºèšèªãšã¯åœ¹å²ãç°ãªããŸãã
ããããæ¥æ¬èªã§ããã°ã©ãã³ã°èšèªãäœããšè¡šèšããããããäžã«ãããŒã¿éãç¡é§ã«å¢ããŠäœ¿ãç©ã«ãªããªãã§ãããã
å ±éãã¹ãã§ã¯ãããã°ã©ã ãæžãèœåã§ã¯ãªããããã®ããã°ã©ã ã¯äœãããŠããã®ãããèªã¿è§£ãåãåãããŸãã
詊ãã«æžããŠã¿ã
ãã£ãããªã®ã§ããã€ãã®æåãªããã°ã©ã ããã®èšèªã§åçŸããŠã¿ãŸãããã
ïŒå®éã®è©Šéšã§æžãããããšã¯ãããŸãããïŒ
â çŽ å æ°åè§£
n â ãå€éšããã®å
¥åã
d â 2
n > 1 ã®éïŒ
⣠ ãã n % d ïŒ 0 ãªãã°
⣠ ⣠ d ã衚瀺ãã
⣠ ⣠ n â n ÷ d
⣠ ããã§ãªããã°
⣠ ⣠ d ã 1 å¢ãã
⣠ ãå®è¡ãã
ãç¹°ãè¿ãâ¡ã¯ã€ãã¯ãœãŒã
// 1. é
åã®äœæïŒ12åã®èªç¶æ°ãå
¥ããïŒ
Data â {34, 12, 78, 5, 23, 1, 99, 45, 67, 8, 51, 30}
// 2. ã¯ã€ãã¯ãœãŒã颿°ã®å®çŸ©
颿° QuickSort(left, right) ã
⣠ i â left
⣠ j â right
⣠ // åºæºå€ïŒããããïŒãäžå€®ã®èŠçŽ ã«ãã
⣠ pivot â Data[(left + right) ÷ 2]
⣠Â
⣠ // åºæºå€ãããšã«å·Šå³ã«åå²
⣠ i ⊠j ã®éïŒ
⣠ ⣠ Data[i] < pivot ã®éïŒ
⣠ ⣠ ⣠ i ã 1 å¢ãã
⣠ ⣠ ãç¹°ãè¿ã
⣠ ⣠ Data[j] > pivot ã®éïŒ
⣠ ⣠ ⣠ j ã 1 æžãã
⣠ ⣠ ãç¹°ãè¿ã
⣠ ⣠ ãã i ⊠j ãªãã°
⣠ ⣠ ⣠ // èŠçŽ ã®å
¥ãæ¿ãïŒäº€æïŒ
⣠ ⣠ ⣠ work â Data[i]
⣠ ⣠ ⣠ Data[i] â Data[j]
⣠ ⣠ ⣠ Data[j] â work
⣠ ⣠ ⣠ i ã 1 å¢ãã
⣠ ⣠ ⣠ j ã 1 æžãã
⣠ ⣠ ãå®è¡ãã
⣠ ãç¹°ãè¿ã
⣠Â
⣠ ãã left < j ãªãã°
⣠ ⣠ QuickSort(left, j) ãå®è¡ãã
⣠ ãå®è¡ãã
⣠ ãã i < right ãªãã°
⣠ ⣠ QuickSort(i, right) ãå®è¡ãã
⣠ ãå®è¡ãã
ãšå®çŸ©ãã
// 3. ã¡ã€ã³åŠçã®å®è¡
QuickSort(0, 11) ãå®è¡ãã
Data ã衚瀺ããååž°ãçšããã®ã§ãããªãçŽ æ©ã䞊ã¹ãŠãããŸãã
â¢ããã€ã®å¡
ååž°ãšããã°ããã£ã±ãããã€ã®å¡ã§ãããã
// n: åç€ã®æ°, from_p: ç§»åå
, to_p: ç§»åå
, work_p: äœæ¥çš
颿° Hanoi(n, from_p, to_p, work_p) ã
⣠ ãã n ïŒ 1 ãªãã°
⣠ ⣠ // åç€ã1æãªãçŽæ¥ç§»åãããŠçµäº
⣠ ⣠ from_p ãš "ãã" ãš to_p ãš "ãžç§»å" ã衚瀺ãã
⣠ ããã§ãªããã°
⣠ ⣠ // 1. äžã® n-1 æããäœæ¥çšã®æ±ããžé¿é£ããã
⣠ ⣠ Hanoi(n - 1, from_p, work_p, to_p) ãå®è¡ãã
⣠ ⣠Â
⣠ ⣠ // 2. äžçªäžã®1æããç®çã®æ±ããžç§»åããã
⣠ ⣠ from_p ãš "ãã" ãš to_p ãš "ãžç§»å" ã衚瀺ãã
⣠ ⣠Â
⣠ ⣠ // 3. é¿é£ããã n-1 æããç®çã®æ±ããžç§»åããã
⣠ ⣠ Hanoi(n - 1, work_p, to_p, from_p) ãå®è¡ãã
⣠ ãå®è¡ãã
ãšå®çŸ©ãã
// å®è¡
Hanoi(3, "A", "C", "B") ãå®è¡ããPythonãªããããªæãã
def hanoi(n, from_p, to_p, work_p):
  if n == 1:
    # åç€ã1æãªãçŽæ¥ç§»å
    print(f"{from_p}ãã{to_p}ãžç§»å")
  else:
    # 1. äžã® n-1 æããäœæ¥çšã®æ±ããžé¿é£ããã
    hanoi(n - 1, from_p, work_p, to_p)
   Â
    # 2. äžçªäžã®1æããç®çã®æ±ããžç§»åããã
    print(f"{from_p}ãã{to_p}ãžç§»å")
   Â
    # 3. é¿é£ããã n-1 æããç®çã®æ±ããžç§»åããã
    hanoi(n - 1, work_p, to_p, from_p)
# å®è¡
hanoi(3, "A", "C", "B")å®è¡çµæ
AããBãžç§»å
CããBãžç§»å
AããCãžç§»å
BããAãžç§»å
BããCãžç§»å
AããCãžç§»å
ãªãPythonã§ã¯ãªãã®ïŒ
ãã©ãããªãPythonãåºé¡ããã°ããã®ã«ããšæã£ã人ããããããããŸããã
確ãã«ãPythonã¯é«æ ¡ã®ææ¥ã§ãåºã䜿ãããŠããŸãã
AIããŒã ã§ä»æãã¢ããèšèªã§ããããŸãã
ããã§ãå ±éãã¹ãã§DNCLãæ¡çšãããŠããã®ã«ã¯çç±ããããŸãã
Pythonãšã®éã
å®éã«ãDNCLãèŠãŠãããšããPythonãšäŒŒãŠããããšæããå Žé¢ããããŸãã
æ¡ä»¶åå²ãç¹°ãè¿ããªã©ãèãæ¹ãã®ãã®ã¯å ±éããŠããŸãããPythonãããšã«ããŠèšèªãäœã£ãŠãããšèããããŸãã
äžæ¹ã§ãæžãæ¹ã«ã¯ãããããšéãããããŸãã
äŸãã°ã
ææ³ãããæ¥æ¬èªã«è¿ã
æè²ç®çã«åãããŠç°¡æœã«è¡šçŸãããŠãã
ã€ãŸããèãæ¹ã¯ããã°ã©ãã³ã°ãã®ãã®ã§ãããææ³ã¯å¥ç©ãšèãããšçè§£ããããã§ãããã
åŠç¿ç°å¢ã®å·®ãå°ãããããã
髿 ¡ã«ãã£ãŠäœ¿çšããããã°ã©ãã³ã°èšèªã¯ããŸããŸã§ãã
Python
JavaScriptïŒãŸãã¯TypeScriptïŒ
Ruby
Scratch
VBA
ããããããšãããªãC++ãåŠç¿ããŠãã匷ã髿 ¡(?)ããããããããŸããã
ããç¹å®ã®èšèªã ãã§åºé¡ãããšããã®èšèªãåŠãã§ããªãåéšçãäžå©ã«ãªãå¯èœæ§ããããŸããDNCLãªããå šå¡ãåèŠãªã®ã§ãã©ã®èšèªãåŠãã 人ã§ãåãæ¡ä»¶ã§åé¡ã«åãçµããŸãã
ãææ³ãã§ã¯ãªããèãæ¹ããæž¬ããã
æ å ±â ã§æ¬åœã«è©äŸ¡ãããã®ã¯ã
æ¡ä»¶åå²
ç¹°ãè¿ã
倿°
é å
ã¢ã«ãŽãªãºã
ãšãã£ãè«ççæèã§ãã
å¥ã«ãã»ãã³ãã³ãã€ãããããåäžããããããã倿°ã®åãèãããããªããŠããå匷ã¯äžèŠãªã®ã§ãã
ãã®äžãä»ã¯AIãå°é ããäžçã现ãããšããã®æžåŒãªããŠåæã«æŽããŠãããŸãã
ç§ãã¡ã詊éšã§åãããã®ã¯ããã°ã©ã ãã©ã®ãããªåŠçãè¡ããã
èšèªããšã®ç¹æ§ã¯ã©ãã ã£ãŠè¯ãã
ã ãããããDNCLã¯äœèšãªææ³ãæžãããæ¬è³ªçãªèãæ¹ã ããåãããã工倫ãããŠããŸãã
DNCLãåçåä»ãïŒæ°å€ãæåãåã倿°ã«ä»£å
¥ã§ããïŒã§ããããšã«ã泚ç®ããŠã¿ãŸãããã
ååŠè
ã«ããããããããå®éã®æ¥æ¬èªã«æ¥µããŠè¿ãèšèšã«ãªã£ãŠããŸãã
DNCLã§ããåºãŠããæ§æ
æåã¯é£ããèŠããŠããå®éã«äœ¿ãããæ§æã¯ããã»ã©å€ããããŸããã
äŸãã°ã
倿°ãžã®ä»£å ¥
æ¡ä»¶åå²
ç¹°ãè¿ã
é å
颿°
å ¥åã»åºå
ãã®ããããçè§£ããŠããã°ãå€ãã®åé¡ã«å¯Ÿå¿ã§ããŸãã
ãã®äžããããŸã§è€éãªã¢ã«ãŽãªãºã ãåããããšã¯æããŸããã
åºãŠãååž°ãŸã§ã§ãããã
ãããã¯ã€ãã¯ãœãŒãïŒååž°ïŒãªããŠåãããæã«ã¯äºåæ ¡ã¯æã£ãŠãé£åããšããã§ãããã
å
±éãã¹ãã¯é£ãããããããšæãããŸãã
ãã£ãŠããããŸã§è€éãªåé¡ã¯åºãããªãã¯ãã
è§£ãããã§ãšã«ããéèŠãªã®ã¯ã1è¡ãã€é çªã«åŠçã远ãããšã§ãã
é ã®äžã ãã§èããã®ã§ã¯ãªãã倿°ã®å€ãçŽã«æžããªãã確èªãããšãæ£ççã倧ããäžãããŸãã
ã«ãŒãããŠããå Žæã§ã¯ãäœåšããŠããã
é åã«ã¯ã©ããŸã§å ¥ã£ãŠããã
åŠçãæ¢ãŸãã®ã¯ãã€ã
ãšã«ãã詊éšçšçŽã«æžãããŠããã³ãŒããèªã¿ãšã°ããã1è¡ãã€ç¢ºãããã®ãéèŠã
ããã°ã©ã ã¯åºæ¬çã«æ®éã®æ¥æ¬èªãšããŠèªãã°å€§äžå€«ã§ãã
ãã®ååŸã«ããäŒè©±ããŒããèªã¿ãŸãããã
æ·»åã0ããå§ãŸãã®ã1ããå§ãŸãã®ãã«ã泚æïŒ
DNCLã¯åéšåŸã圹ã«ç«ã€ïŒ
çµè«ããèšãã°ãDNCLãã®ãã®ã倧åŠãä»äºã§äœ¿ãæ©äŒã¯ã»ãšãã©ãããŸããã
ããããDNCLãéããŠèº«ã«ä»ãã
ã¢ã«ãŽãªãºã ãèããå
è«ççæèå
ããã°ã©ã ãèªãå
ã¯ããã®åŸJavaãSwiftãRãªã©ãåŠã¶éã«ã圹ç«ã¡ãŸãã
å®éãããã°ã©ãã³ã°åå¿è ã«ãšã£ãŠæãé£ããã®ã¯ææ³ã§ã¯ãªãããã³ã³ãã¥ãŒã¿ãã©ãèããŠåŠçããŠãããããçè§£ããããšã§ãã
ãã®åå°äœããšããæå³ã§ã¯ãDNCLãåŠã¶äŸ¡å€ã¯ååã«ããã¯ãã
å¹çããå匷ããã³ã
DNCLãåŸæã«ããããã«ã¯ãæèšã ãã§ã¯äžååã§ãã
ããããã®å匷æ³ã¯ã
åºæ¬æ§æãçè§£ãã
倿°ã®åããçŽã«æžã
åé¡ãè§£ã
解説ãèªãã§åŠçã远ãçŽã
ãšããæµãã§ãã
æ £ããŠãããšãããã°ã©ã å šäœã®æµããèªç¶ãšèŠããããã«ãªãã¯ãã
ééã£ãããæ¹
DNCLãæèšããããšãã
æ§æãäžžæèšããããããããã®åœä»€ã¯äœãããŠãããããçè§£ããæ¹ãéèŠã§ãã
ããšã¯æ®éã®æ¥æ¬èªã§ããããæ¥æ¬èªã®æç€ºãèªãã§ãããã ãšãããã€ã³ãã§ãå€ã«æããå¿ èŠã¯ãããŸããã
é£ããããã°ã©ã ãæžãç·Žç¿ããã
å ±éãã¹ãã§ã¯ãè€éãªããã°ã©ã ãæžãåã¯åºæ¬çã«æ±ããããŸããã
äžã«èšè¿°ãããããã€ã®å¡ããªããŠåºããããå ¥è©Šã»ã³ã¿ãŒã«æè°ããŠããããšæããŸãã
倧äºãªã®ã¯é ã远ã£ãŠèªãåã
ãã®èªãåãåªå
ããŠéããŸãããã
äžè¡é£ã°ããŠèªãïŒãã£ããã ãïŒ
åŠçã¯åºæ¬çã«äžããé çªã«å®è¡ãããŸãã
ãã®ãããèªã¿é£ã°ããŠæ·»åã1ã€é£ã°ããªããŠãã£ãŠã¯å€§é倱ç¹ã®ããšã«âŠ
äžã€ã²ãšã€äžå¯§ã«è¿œãç¿æ £ããé«åŸç¹ãžã®è¿éã§ãã
ãŸãšã
DNCLã¯ãå€ãã®åéšçã«ãšã£ãŠãåããŠèŠãè¬ã®èšèªãã§ãã
å€ãã®åéšçã ãã§ãªããããã°ã©ãã³ã°ã«é¢ããä»äºããã人ã«ãšã£ãŠãè¬èšèªã§ãã
ã§ããããã®æ£äœã¯ãããã°ã©ãã³ã°ã®èãæ¹ãåããããã衚çŸããããã®æè²çšã®èšè¿°æ¹æ³ã§ãã
æåã¯æžæããããããŸããããæ±ãããæ§æã¯éãããŠãããåºæ¬ãæŒãããã°åå察å¿ã§ããŸãã
ãèªããããã«ãªãããšããç®æšã«åŠç¿ãé²ããã°ãå ±éãã¹ãæ å ±â ã§ãèªä¿¡ãæã£ãŠåé¡ã«åãçµããã¯ãã
æ
å ±â
ã¯ã§ããã°åŸæãªç§ç®ã«ããŠãããããšããã
ãããŠãã¹ãå€ããšããã
èªãã®ã«æ £ããŠãããã°ã©ãã³ã°ãåŸç¹æºã«ãããïŒ
ãã®èšäºãæ°ã«å ¥ã£ãŠãããæ¹ã¯â€ïžãã³ã¡ã³ãããé¡ãããŸãïŒ