æœè±¡çæèã®ããããããã©ã³ã¹ã®ãšããæ€çŽ¢ããªãŒïŒããšãã°ãåè¿°ã®ãã«ã«ãããªãŒ ïŒã®ç¥èãåçŽãªCïŒã³ãŒãã®èªã¿åãèœåãåŸãããç¥èãé©çšããããšãã欲æ±ãå¿ èŠã§ãã
ãã®ãããä»æ¥ã®è°é¡ã«ã¯ã ã¢ãã€ããšãèšç®ãããªãŒã«ãã£ãã·ã¥ããããã®äž»ãªã¢ããªã±ãŒã·ã§ã³ããããŸãã
æŠå¿µãšããŠã®ã¢ãã€ã
å€æ°ã®ãã® ãã€ãŸãæäœããå€æ°ã®ãªããžã§ã¯ããæ³åããŠãã ããã MãšåŒã³ãŸãããã ãã®ã»ããã§ã¯ããã€ããªæŒç®ãã€ãŸããæ°ããèŠçŽ ãã»ããã®èŠçŽ ã®ãã¢ã«é¢é£ä»ããé¢æ°ãå°å ¥ããŸãã 以äžããã®æœè±¡æäœããâãã§è¡šããåŒãäžçœ®åœ¢åŒã§èšè¿°ããŸããaãšbãã»ããã®èŠçŽ ã§ããå Žåã c = aâbããã®ã»ããã®èŠçŽ ã§ãã
ããšãã°ãäžçã«ååšãããã¹ãŠã®ç·ãèããŠã¿ãŸãããã ãŸããæååé£çµæäœã«ã€ããŠèããŠã¿
"JohnDoe"
"John"
âŠ
"Doe"
=
"JohnDoe"
ãŸãã¯ãã¿ãã«ãæäœãããšãã«é¢æ°åèšèªã§ç¥ãããŠããfsté¢æ°ããããŸãã 圌女ã¯2ã€ã®åŒæ°ã®ãã¡ãçµæãšããŠæåã®åŒæ°ãé çªã«è¿ããŸãã ãããã£ãŠã
"foo"
ã
"bar"
ïŒ=
"foo"
次ã«ãæäœãâãã«çµåæ§å¶çŽã課ããŸãã ããã¯ã以äžãå¿ èŠãšããããšãæå³ããŸãããâãã䜿çšããå Žåããªããžã§ã¯ãã®ã·ãŒã±ã³ã¹ãçµåããããšããâãã®é©çšé åºã«é¢ä¿ãªããçµæã¯åããŸãŸã«ãªããŸãã ããå³å¯ã«ã¯ã ä»»æã® 3ã€ã®ãªããžã§ã¯ãa ã b ãããã³cã«ã€ããŠã次ã®ããã«ãªããŸãã
æååã®é£çµãé£æ³çã§ããããšã¯ç°¡åã«ããããŸããæååã·ãŒã±ã³ã¹ã®ã©ã®æ¥çãå ã«è¡ãããåŸã§ã©ã®æ¥çãè¡ãããŠããã·ãŒã±ã³ã¹å ã®ãã¹ãŠã®æååã®å ±éã®æ¥çãåŸãããŸãã åãããšãé¢æ°fstã«ãåœãŠã¯ãŸããŸãã
fst ïŒ fst ïŒ a ã b ïŒã c ïŒ= a
fst ïŒ a ã fst ïŒ b ã c ïŒïŒ= a
ã·ãŒã±ã³ã¹ãžã®fstã¢ããªã±ãŒã·ã§ã³ã®ãã§ãŒã³ã¯ãä»»æã®é åºã§åŒãç¶ããããèŠçŽ ãçæããŸãã
ãããŠæåŸã«å¿ èŠãªããšã¯ãæäœã«é¢ããéåMã«ã¯ã äžç«èŠçŽ ãŸãã¯æäœåäœãååšããå¿ èŠãããããšã§ãã ããã¯ãã»ããã®ä»»æã®èŠçŽ ãšçµã¿åãããããšãã§ãããªããžã§ã¯ãã§ãããã»ãããå€æŽããããšã¯ãããŸããã æ£åŒã«èšãã°ã eãäžç«èŠçŽ ã§ããå Žåãã»ããã®aã«ã€ããŠã¯ ã
aâe = eâa = a
ç·ã®ããäŸã§ã¯ããã¥ãŒãã©ã«èŠçŽ ã¯ç©ºã®ç·
""
ã§ããã©ã¡ãã®ç·ã«è²Œãä»ããŠããç·ã¯å€ãããŸããã ãããããã®ç¹ã§ã®fstã¯ç§ãã¡ã«é©ããŠããŸããäžç«çãªèŠçŽ ãèãåºãããšã¯äžå¯èœã§ãã å®éã
ãã®ãããªåããªãã«<Mãâãe>ã¯ã ã¢ãã€ããšå³soleã«åŒã°ããŸãã ã³ãŒãã§ãã®ç¥èãä¿®æ£ããŸãã
public interface IMonoid<T> { T Zero { get; } T Append(T a, T b); }
ã¢ãã€ãã®ããå€ãã®äŸãããã³å®éã«ãããã䜿çšããå Žæã¯ãã«ããã®äžã«ãããŸãã
äŸ
å ã«é²ãåã«ãèªè ã«äžçã«éããããããŸããŸãªã¢ãã€ãããããŸãã«ããŠããããšãçŽåŸãããå¿ èŠããããŸãã ãã®ãã¡ã®ããã€ããããã¹ãã®åŸåã§äŸãšããŠäœ¿çšããŸãããå®éã«ã¯èªè ãééãããã®ããããŸãã åã¢ãã€ãã«å¯ŸããŠãåé¡ã®ã»ãããçµã¿åããæäœããã¥ãŒãã©ã«èŠçŽ ã瀺ãç°¡åãªãªã¹ããäœæããŸãã ãã¹ãŠã®æäœã®é¢é£æ§ããèªèº«ã§ç¢ºèªããŠãã ãããããã«ã¯ååãªã¹ããŒã¹ããããŸãããããã«ãå°ãã«ã³ãã³ã°ããŸãããŸãã次ã®èšäºã§ã¯ç« å šäœãåãäžããã®ã§ãæãèå³æ·±ããç°åžžãªã¢ãã€ãããªã¹ãã«å«ããŸããã
ãããã£ãŠã人æ°ã®ããã¢ãã€ãïŒ
- <æ°åã+ã0>ã æ°å€ã¯ãèªç¶ããè€éãªæ°å€ã»ããã§ãã
- <æ°åã*ã1>ã
- <ããŒã«ã&&ãTrue>ã
- <ããŒã«ã||ãFalse>ã
- <æååãé£çµâŠã空ã®æåå
""
>ã - <ãªã¹ããé£çµ++ã空ã®ãªã¹ã[]>ã
- <ã»ããããŠããªã³âªã空ã®ã»ããâ >ã
- <ãœãŒãæžã¿ãªã¹ããããŒãžã空ãªã¹ã[]>ã ããã§ã ããŒãžãšã¯ã2ã€ã®é åºä»ããªã¹ããããŒãžããç·åœ¢æäœãæããŸããããã¯ãããããããŒãžãœãŒããœãŒãã¢ã«ãŽãªãºã ã«ãã£ãŠèªèãããŸãã ãšããã§ãããŒãžãœãŒãã¢ã«ãŽãªãºã èªäœã®æ£ç¢ºãã¯ãããŒãžãã¢ãã€ãã«æäœã§ãããšããäºå®ããæ£ç¢ºã«ç¶ããŸãã ããã«ã圌ã®äž»èŠãªã¢ã€ãã¢ã«é¡äŒŒããã¢ã€ãã¢ããä»æ¥è€æ°å䜿çšãããŸãã
- <æŽæ°ãNOCã1>ã
- <1ã€ã®å€æ°ã®å€é åŒãNOCã1>ã
- <æŽæ°ããã³å€é åŒãGCDã0>ã æå€§å ¬çŽæ°ã®çµåæ§ã¯ç解ã§ããŸãã äžç«çãªèŠçŽ ãšããŠã®ãŒãã«é¢ããŠã¯ããŠãŒã¯ãªããã¢ã«ãŽãªãºã ãšå®¹æã«äžèŽããããããã®ããããã£ã¯å®çŸ©ã«ãã£ãŠãã°ãã°ä»®å®ãããŸãã
- <è¡åã*ãåäœè¡å>ã èå³æ·±ãããšã«ãã»ãããéçž®éè¡åïŒè¡ååŒã0ã«çãããªãïŒã«å¶éãããšãçµæã®æ§é ã¯ã¢ãã€ãã®ãŸãŸã«ãªããŸã-éçž®éè¡åã®ç©ã¯éçž®éè¡åã«ãªããŸãã ãã®åçŽãªã¹ããŒãã¡ã³ãã¯ãè¡ååŒã®ããããã£ã«åºã¥ããŠããŸãã
- <æ°å€ãæå°ã+â>ã
- <æ°å€ãæ倧ã-â>ã
- <1ããNãŸã§ã®æ°åã®é åãé åã®ç©âŠãæçé åïŒ123..NïŒ>ã
é¢æ£æ°åŠã®é åsãšt ã®ç©ã®äžã§ã¯ã次ã®æäœãæå³ããŸããæåã®äœçœ®sã§æ°å€ãååŸãããã®ã€ã³ããã¯ã¹ã§tã§æ°å€ãååŸããçµæã®æåã®äœçœ®ã«é 眮ããŸãã 次ã«ã2çªç®ã®äœçœ®ã«å¯ŸããŠãã®äºéã€ã³ããã¯ã¹ãç¹°ãè¿ããNçªç®ãŸã§ç¹°ãè¿ããŸãã ã€ãŸãã uu[i] = t[s[i]], i = 1..N
å Žåãu[i] = t[s[i]], i = 1..N
ã§ãã é åãšãã®è£œåã¯ãããã°ã©ãã³ã°ã§çºçããããŸããŸãªåé¡ã«éåžžã«ããèŠãããŸãã - ããã€ãã®ã»ããXãæ€èšããŠãã ããã æ°åŠã®X Xã«ãã£ãŠã æºååã®éå-éåXãããã®äžãžã®ä»»æã®é¢æ°ã瀺ãã®ãæ
£äŸã§ãã ãããã£ãŠã XãæŽæ°ã§ããå Žåã
int â int
ã®åœ¢åŒã®é¢æ°ã¯ãã®äžã®æºååã§ãã æ©èœã®æ§æã¯ãâŠãã§ããããããã§ããããŸãã HaskellãšFïŒã®ã>>ãã§ã誰ããç¥ã£ãŠããŸãã
ãããã£ãŠã<ãšã³ãã¢ã«ãã£ãºã ãé¢æ°ã®æ§æãåäžã®é¢æ°id >ã¯ã¢ãã€ãã§ãã - éåžžã®ç·åœ¢æŽæ°æŒç®ïŒã+ããŸãã¯ã*ãïŒã䜿çšãããã®äœ¿çšãç¹å®ã®æ°å€Pã®æ®ãããååŸããæ°å€ã«å¶éããŸãã ããšãã°ãä¹ç®ã¢ãžã¥ã7ãèæ
®ããããšãã§ããŸãã3* 4 = 5ã§ã12ïŒ
7 = 5ã§ãããã®ãããªã»ããã§ã®çµæã®æŒç®ã¯éãããŸãŸã§ãã¢ãã€ãã圢æããŸãã
ãšããã§ã P = 2ããšããšããããåäœã®æŒç®ãåŸãããŸãã ãããã£ãŠããïŒãã¯2ãæ³ãšããä¹ç®ã§ãããã^ãã¯XORãšããŠãç¥ããã2ãæ³ãšããå ç®ã§ãããããã£ãŠã<Booleanã^ãFalse> ãã¢ãã€ãã§ãã - <èŸæžïŒé£æ³é
åïŒããŠããªã³ã空ã®èŸæž>ã èŸæžèªäœã«ä¿åãããŠããããŒã¿ã¯ã¢ãã€ãã圢æããå¿
èŠãããããã
(map1 ⪠map2)[key] = map1[key] â map2[key]
ãçµã¿åãããå Žåã®ç«¶åã解決ã(map1 ⪠map2)[key] = map1[key] â map2[key]
ã
ãŸãã¯ãããŒããå€ãžã®èŸæžïŒK -> V
ïŒã ãã§ãªããããŒããå€ã®ãªã¹ããžã®è€æ°èŸæžïŒK -> [V]
ïŒãèæ ®ããããšãã§ããŸãããã®åŸãèŸæžãçµåãããšãã«ãåãããŒãæã€ãªã¹ããåçŽã«ããŒãžã§ããŸããªã¹ãèªäœãã¢ãã€ãã圢æããŠããããšã
ããã«ã€ããŠã¯ãä»ããïŒïŒïŒäŸãçµäºããŠç·Žç¿ã«ç§»ããŸãããã ãã®åŸ æã®ãã©ã¯ãã£ã¹ãå®éã«çŽ¹ä»ããåã«ããã®ãªã¹ãããããã€ãã®åçŽãªã¢ãã€ãã®å®çŸ©ãCïŒã§èšè¿°ããŸããããã«ã€ããŠã¯æ¬¡ã®ç« ã§æ±ããŸãã
ãã¹ãŠã®ã¢ãã€ããã·ã³ã°ã«ããŒã³ãšããŠå®è£ ããŸãã åŸã§äžæãªã¢ãã€ãã¿ã€ãã®ã€ã³ã¹ã¿ã³ã¹ã«ã¢ã¯ã»ã¹ããããããããã«ããã®äœæãå¥ã®éçã¯ã©ã¹ã«å ¥ããŸããã
public static class Singleton<T> where T : new() { private static readonly T _instance = new T(); public static T Instance { get { return _instance; } } } public class AddMonoid : IMonoid<int> { public AddMonoid() {} public int Zero { get { return 0; } } public int Append(int a, int b) { return a + b; } } public class FunctionMonoid<T> : IMonoid<Func<T, T>> { public FunctionMonoid() {} public Func<T, T> Zero { get { return x => x; } } public Func<T, T> Append(Func<T, T> f, Func<T, T> g) { return x => g(f(x)); } } public class GCDMonoid : IMonoid<int> { public GCDMonoid() {} private int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); } public int Zero { get { return 0; } } public int Append(int a, int b) { return gcd(a, b); } }
ã³ã³ãã¥ãŒã¿ãµã€ãšã³ã¹ã®ã©ãã§ããŒã
ãã®ç¬éãããç§ãã¡ã¯å®çšçãªã¢ããªã±ãŒã·ã§ã³ã®åéã«å ¥ããŸãã
ãŸãã RopeãšããããŒã¿æ§é å®çŸ©ãå¿ èŠã§ãã ãŸããªãã·ã¢èªã®æ å ±æºã¯ãèŠåŽããã«ãããããŒãã®ããã«ç¿»èš³ããŸããç§ã¯ãã®äŒçµ±ããåŒãäžããŸããã ãããã£ãŠãããŒãã¯ãè¿œå æ©èœãåããäžå€æååã®äŸ¿å©ãªå®è£ ãšããŠã1995幎ã«æåã«ææ¡ãããŸãããããšãã°ãéšåæååãååŸããŠæååãããŒãžããéåžžã«é«éãªæäœã§ãã ãã®ãããªç®çã®ããã«ããã®æ§é ã¯ãããšãã°Javaã©ã€ãã©ãªã§åŒãç¶ã䜿çšãããŸãã
ä»»æã®å¹³è¡¡äºåæšãæ³åããŠãã ããã ãã®ããªãŒã®èãšããŠèšèãæããŸã-ã€ãŸã æåã®é åã çµæã®ããªãŒã¯ãããšãã°æ¬¡ã®ããã«ãªããŸãã
ãã®ãããªããŒã¿æ§é ã¯ããŒããšåŒã°ããŸãã
ã€ã³ããã¯ã¹ã¢ã¯ã»ã¹
ãã«ã«ãããªãŒã«é¢ãã以åã®èšäºããããã®ãããªããªãŒã§ã€ã³ããã¯ã¹ã«ããã·ã³ãã«ã¯ãšãªã®æ±ºå®ãã©ã®ããã«å¯èœããèŠããŠããŸã-ãµãããªãŒãäžéé ç¹ã«æ ŒçŽããã ãã§ååã§ãããã®å ŽåããµãããªãŒããäžæãããæååã®å šé·ã§ãã ãã®ããªãŒã®å Žåãåæ§ã®ã¹ããŒã ã¯æ¬¡ã®ããã«ãªããŸãã
ããã§ãKçªç®ã®é åºçµ±èšã®äœ¿ãæ £ããã¢ã«ãŽãªãºã ã䜿çšããŠãç®çã®çªå·ã®äžã®æåãå«ãé åã«ç§»åããé åã®ã¡ã¢ãªå ã§çŽæ¥ã€ã³ããã¯ã¹ãäœæããŠç®çã®æåãè¿ãããšãã§ããŸãã 倧ããªè¡ã§ã®ã¡ã¢ãªæé©åãšå°ããªè¡ã§ã®ããã©ãŒãã³ã¹ã®çç±ã ãã§ãåã ã®æåã§ã¯ãªãããªãŒã®èã§é åãäžæãããŠããããšã«æ³šæããŠãã ããã
æ¥ç
2æ¬ã®ããŒããæ¥çããã«ã¯ãæ°ããã«ãŒãé ç¹ãäœæãã2ã€ã®ããŒã¿ããªãŒãæ¯åãšããŠãµã¹ãã³ãããã ãã§ååã§ãã ãœãŒã¹ããªãŒã®ãã©ã³ã¹ãåããŠãããããæ°ããããŒãããã©ã³ã¹ãåããŸãã 圌ãã¯ãŸããæ¥çãããããŒããå°ãããããã©ãããçµæãšããŠåŸãããããŒãã§ããã€ãã®ãªãŒãã»ã°ã¡ã³ããçµã¿åãããããšãçã«ããªã£ãŠãããã©ããããã調ã¹ãŸãã
éšåæååãªã¯ãšã¹ã
æååå ã®éšåæååãéžæããã«ã¯ãKçªç®ã®é åºçµ±èšã«é¡äŒŒããåçŽãªã¢ã«ãŽãªãºã ãé©çšããã ãã§ååã§ãã ããŒãTã®éå§æåããå§ãŸãé·ãlenã®éšåæååãéžæããå¿ èŠããããšããŸãã
æåã«ã2ã€ã®æ¥µç«¯ãªã±ãŒã¹ãèããŸãã
start = 0
len = T.Left.Size
T.Left
ãµãããªãŒå šäœ
T.Left
ã åæ§ã«ã
start = T.Left.Size
len = T.Right.Size
T.Right
ãµãããªãŒå šäœ
T.Right
ã äžã®å³ã§ã¯ã2çªç®ã®ã±ãŒã¹ã¯
Substring( start : 18, len : 37)
é¢æ°
Substring( start : 18, len : 37)
ãåŒã³åºããšå®çŸãããé¢æ°ã¯å¿ èŠãªéšåæåå
" , "
æ£ãããµãããªãŒãããã«è¿ããŸãã
ããã«ãç®çã®éšåæååãå®å šã«å·Šã®ãµãããªãŒã«ããå Žåãã€ãŸã
start < T.Left.Size
start + len †T.Left.Size
start < T.Left.Size
start + len †T.Left.Size
察称ã®å Žåã¯ãå®å šã«å³åŽã®ãµãããªãŒã«ããéšåæååã§ããã€ãŸãã
start ⥠T.Left.Size
start + len †T.Left.Size + T.Right.Size
start
ããæžç®ããããšãå¿ããªãã§ãã ãããçµå±ãå³ã®ãµãããªãŒã®ã€ã³ããã¯ã¹äœæã¯ãŒãããå§ãŸããç¬ç«ããããªãŒãšèŠãªãããŸãã
ãã®äŸã§ã¯ã
Substring( start : 18, len : 18)
åŒã³åºãããšãã§ããŸãã 次ã«ãæåã®ã¹ãããã§ãé¢æ°ã¯ååž°çã«å³ã«
Substring( start : 0, len : 18)
ãŠãå³ã®ãµãããªãŒ
Substring( start : 0, len : 18)
ãåŒã³åºãå¿ èŠããããšå€æããŸãã ãããŠã圌ã¯ãæåã®ã±ãŒã¹ã«åŸã£ãŠã
" , "
éšåæååã«å¯Ÿå¿ããã圌ã®å·Šã®ãµãããªãŒå šäœãè¿ã
" , "
ã
ãããŠæåŸã«ãæãããªãããŒãªã±ãŒã¹-ç®çã®éšåæååãå·Šå³ã®ãµãããªãŒã®äžéšã«éãªããŸãã
ãã®å Žåãå·Šã®ãµãããªãŒã«ã®ã¿å ¥ãããŒã¹ãéžæãã次ã«å³ã®ãµãããªãŒã«å ¥ãããŒã¹ãéžæããŠãããããããŒãžããå¿ èŠããããŸãã 2æ¬ã®ããŒããçµåããæ¹æ³ã¯ãã§ã«ç¥ã£ãŠããŸãã
åžæããããŒã¹ã®ã€ã³ããã¯ã¹ã決å®ããããšã¯ãŸã£ããé£ãããããŸããã å·ŠãµãããªãŒã®ååž°åŒã³åºãïŒ
Substring( start : start, len : T.Left.Size - start)
å³ã®å ŽåïŒ
Substring( start : 0, len : len - (T.Left.Size - start))
ç¹°ãè¿ããŸãããå³ã®ãµãããªãŒã«ãŒãã
start
åŒæ°ãšããŠæž¡ãå¿ èŠããããŸããããã®ãµãããªãŒã®é¢æ°ã¯ç¬ç«ããŠåäœããããã§ãã
ãããã®ã€ã³ããã¯ã¹ãæããã§ãªãå Žåã¯ãå³ãèŠãŠãã ããã
æçµçã«ãååž°åŒã³åºãã¯ããµãã¹ããªã³ã°èŠæ±ããã§ã«ã»ã°ã¡ã³ãã«æ²¿ã£ãŠéåžžã®ç·åœ¢æ¹æ³ã§è¡ãããŠãããªãŒãã«å°éããŸãã ããã«ãããæ倧ã®ããã©ãŒãã³ã¹ãä¿èšŒãããŸãã æäœã®åèšè€é床ã¯OïŒlog NïŒã§ãã
ãã®ä»
ãã®ãããªããŒã¿æ§é ã¯ãæååã®å®è£ ã ãã§ãªã䜿çšã§ãããšèšãå¿ èŠã¯ãªããšæããŸãã èŠçŽ ã®å·šå€§ãªã·ãŒã±ã³ã¹ã¯ãåæ§ã®åœ¢åŒã§è¡šãããšãã§ããŸããåºç€ãšãªããªãŒãã»ã°ã¡ã³ãã«æé©ãªé·ããéžæããã ãã§ååã§ãã -巚倧ãªé·ãã®äžå€ã®ã·ãŒã±ã³ã¹ãæäœããããã®äŸ¿å©ãªããŒã¿æ§é ãååŸããŸãã 確ãã«ããããŸã§ã®ãšããããã®ãããªç§»è¡ã®èª¬åŸåã®ããè°è«ãšããŠåœ¹ç«ã€ååãªæäœãå®èšŒãããŠããŸããã äœããããã¯ä¿®æ£å¯èœã§ã:)
æ§é ã®éžæã«é¢ããŠã ããŒã¿ããªãŒãã«ä¿åããä»»æã®èªå·±ãã©ã³ã¹åãã€ããªããªãŒïŒããšãã°2-3ããªãŒãŸãã¯B ããªãŒïŒãéžæã§ããŸãã äž»ã«ã»ããã®å®è£ çšã«äœæãããå€ãã®æ€çŽ¢ããªãŒã¯ã èµ€é»ããªãŒããã«ã«ãããªãŒãªã©ãåé ç¹ã«ããŒã¿ãä¿åããŸãã ãããã«æååè¡ãå®è£ ããããšã¯å®çšçã§ã¯ãããŸãããããã«ãããæäœäžã«å€§éã®ã¡ã¢ãªå²ãåœãŠãçºçããã³ãŒããããè€éã«ãªããŸããããã®èšäºã®äž»ãªã¿ã¹ã¯ã§ããã¢ãã€ããæã€ããªãŒã®ãã©ã¡ãŒã¿ãŒåã¯ã第1ããã³ç¬¬2ã®ããªãŒã®äž¡æ¹ã«ç°¡åã«é©ããŠããŸã ãããã£ãŠãã¹ããŒãªãŒã®éçšã§ããã¬ãŒã³ããŒã·ã§ã³ã容æã«ããããŸããŸãªãã©ã³ã¹ã®åããããªãŒã®å®çŸã®è©³çŽ°ã§æ··ä¹±ããªãããã«ãæã«ã¯ãã«ã«ãããªãŒã«é¢ããèšäºã®ããã¹ããåç §ããæã«ã¯ãã£ã³ã¬ãŒããªãŒãåç §ããŸããããã¯å®å šã«äžèŠã§ãã èªè ãããããã¢ãããŒããå®å šã«ç解ããåãå ¥ããããšãé¡ã£ãŠããŸãã
ãã©ã¡ãŒã¿åããŸãã¯ããªãŒã®æž¬å®æ¹æ³
ãã«ã«ãããªãŒã®äŸã䜿çšããŠããµãã»ã°ã¡ã³ãã§è€æ°ã®ã¯ãšãªãäœæããæ¹æ³ãæãåºããŠãã ããã æçã«èšãã°ããã®æŠå¿µã®æ¬è³ªãæãåºãããŠãã ãããããªãŒã®åé ç¹ã«ç¹å®ã®æ³šéãä¿åãããŸããããã®é ç¹ã«ã«ãŒããæã€ãµãããªãŒã«å¯Ÿå¿ãããµãã»ã°ã¡ã³ãã®èŠæ±å€ã«çãããã©ã¡ãŒã¿ãŒã§ãã ããšãã°ããµãããªãŒèŠçŽ ã®åèšããµãããªãŒèŠçŽ ã®æ倧å€ããµãã»ã°ã¡ã³ãäžã®ããŒã«ãã©ã°ã®æç¡ãªã©ã§ãã ãŠãŒã¶ãŒããµãã»ã°ã¡ã³ãã§ãªã¯ãšã¹ããè¡ãããå Žåãäžéšã®ãµãããªãŒã§ã¯åçããã§ã«é ç¹ã«ãã£ãã·ã¥ãããŠãããããããçµåããããã«ã®ã¿æ®ã£ãŠãããããæ¢ããŠãããã¹ãŠã®é ç¹ã«å¯ŸããŠOïŒNïŒãšããŠæ¯ååèšç®ããå¿ èŠã¯ãããŸããã§ãã
ãã«ã«ãããªãŒã§ã¯ãåé ç¹ã§æ£çŸ©ã埩å ããããã®ãã¹ãŠã®ããã©ãã¯ã¯ãŒã¯ãã¯Splité¢æ°ã«ãã£ãŠè¡ãããŸãããå¿ èŠãªãµãã»ã°ã¡ã³ããããªãŒããåãåããã«ãŒãã®èšç®å€ããªã¯ãšã¹ããžã®å¿çãšããŠååŸããã ãã§æžã¿ãŸããã ããããå¥ã®æ¹æ³ã§è¡ãããšãã§ããŸãã ããŒãã§éšåæååãååŸããã¢ã«ãŽãªãºã ãèŠããŠããŸããïŒ åœŒã¯äžããäžã«ååž°çã«äžéããç®çã®éšåæååã®å·Šå³ã®å¢çãããŒã«ã©ã€ãºããéäžã§èŠã€ãããã®ããã¹ãŠããŒãžããŸããã ãã®ã¢ãããŒãã¯ããã§å®å šã«é©çšã§ããŸãã
é ç¹ã«ãã泚éä»ãã®æé»çãªãã«ã«ãããªãŒ-ãµãããªãŒã®åèš-ãå床æ€èšãããµãã»ã°ã¡ã³ãã®åèšãã¯ãšãªããããšããŸã
[4; 8]
[4; 8]
ã
çµæã0ã«åæåããŸãã
å埩1ã§ã¯ãå·Šã®ãµãããªãŒ[0; 9]ã çµæã¯0ã®ãŸãŸã§ãã
å埩2ã§ã¯ãå³ã®ãµãããªãŒ[5; 9]ã çµæã¯ãã«ãŒãã®å€-42ã§å¢å ããŸãã
å埩3ã§ã¯ãå³ã®ãµãããªãŒ[8; 9]ã çµæã¯ãå·Šã®ãµãããªãŒã®åèš[5; 6]ã«ã«ãŒãã®å€ãå ããŠã42 + 23 + 3 = 68ã«ãªããŸãã
å埩4ã§ã¯ãå·Šã®ãµãããªãŒ[8; 8]ã çµæã¯68ã®ãŸãŸã§ãã
å埩5ã§ã¯ãçµæã«ïŒ29ïŒã®ã«ãŒãã®å€ãè¿œå ããåèš97ãååŸããŸãããããåé¡ã®çãã§ãã
ã¹ããŒã ã¯ãåé ç¹ã§ããç¥ãããŠããã±ãŒã¹åæã«åºã¥ããŠéåžžã«åçŽã§ããèŠæ±ãããã»ã°ã¡ã³ãã¯ãå·Šæ¯åãå³æ¯åãããã³èªåã«å¯Ÿå¿ããã»ã°ã¡ã³ããšã©ã®ããã«å¯Ÿå¿ããŸããïŒ ããã«åºã¥ããŠãå·Šå³ã®ãµãã»ã°ã¡ã³ãã®å€ãèšç®ããŠåèšãã1ã€ãŸãã¯2ã€ã®ååž°åŒã³åºããè¡ããŸãïŒäžèšã®äŸã§ã¯ã2ã€ã®ååž°åŒã³åºãã¯å¿ èŠãããŸããã§ããïŒã å Žåã®åæã§ä»ã ãã¯ãŸã ã«ãŒãã«ä¿åãããããŒã¿ãèæ ®ããå¿ èŠããããŸãã
èã®äžéšãšäžéšã«ãµãã»ã°ã¡ã³ãã®åèšã«å¯Ÿå¿ãã泚éãæ ŒçŽãããŠããããŒããç°¡åã«æ³åã§ããŸãã 次ã«ããµãã»ã°ã¡ã³ãã®éé¡ã®ãªã¯ãšã¹ãã¯ãåã®æ®µèœãããµãã¹ããªã³ã°ãååŸããã¢ã«ãŽãªãºã ãšæ§é ãåãã§ããã®éé¡ã环ç©ããååž°ããæ»ã-çµæã«çããè¿œå ããããé«ãå€ãæž¡ããŸãã ã¹ããŒã ã®åçŽãã¯çãã®äœå°ããããŸããããªãæ£ããçããåžžã«åŸãããã®ããç解ãããã ãã§ãã
ãããç解ããã®ãç°¡åã§ãã å®éãåçŽã«ãµãã»ã°ã¡ã³ãã®ãã¹ãŠã®ã»ã«ãçŽç·çã«ãã©ã£ãã®ãšåãåèšãå®è¡ããŸããããã§ã¯ãaïŒã»ã«ã®ãããã¯å šäœã®ã¿ãèŠçŽããŸãã bïŒå¿ ãããå·Šããå³ã®é åºã§ã¯ãããŸããã å®éã次ã®ãããªããã»ã¹ãæ³åã§ããŸãã
è¡ãã¹ïŒïŒC l + C l + 1 + ... + C r ïŒ
ããªãŒèŠæ±ïŒïŒC l +ïŒïŒïŒC l + 1 + ... + C i ïŒ+ïŒC i + 1 + ... + C j ïŒïŒ+ïŒC j + 1 + ... + C r-1 ïŒ+ ... + C r ïŒïŒ
å®éã«ã¯ãåã«ä»ã®é åºã§ãã©ã±ãããé 眮ããŸãããããã¯çµæãå€æŽãããã®ã§ã¯ãããŸãããã+ãã¯é£æ³æäœã§ããããã§ãã ãããç§ã¯æåã®æ®µèœããããªãã¿ã®èšèã«åºäŒã£ã:)ãã£ãšäžè¬çãªæŠå¿µãããã§ã€ã€ãããŠããããã ...
枬å®ãã
ããªãŒã«å«ãŸããäžé£ã®èŠçŽ ãç¹åŸŽä»ããé¢æ°ããããªãŒã®å°ºåºŠãšåŒã³ãŸãã éåžžãããªãŒã¡ãžã£ãŒã¯ãåŸã§ã¯ãšãªãå®è¡ããæäœã§ããèŠçŽ ã®åèšãèŠçŽ ã®æ倧å€ãèŠçŽ äžã®ãã©ã°ã®ååšãªã©ããã§ã«äŸã瀺ããŠããŸããããšãã°ãå¹³æ¹åãæåã®é »åºŠã®ãã¹ãã°ã©ã ãªã©ãããè€éãªæž¬å®å€ãæ³åã§ããŸãã
ãã§ã«ç¥ãããŠããææ³ã䜿çšããŠãã©ã®ã¡ãžã£ãŒãåãµãããªãŒã®ããŒãã®äžéšã«ãã£ãã·ã¥ã§ããŸãã次ã«ã枬å®é¢æ°ãçµåçã§ããå Žåãäžèšã®ã¢ã«ãŽãªãºã ã«ããä»»æã®ãµãã»ã°ã¡ã³ãã®æž¬å®èŠæ±ã察æ°æéã§ç°¡åã«å®è¡ã§ããŸãããã®ããããã£ã«ãããªãŒã®åã ã®èŠçŽ ã®ã¡ãžã£ãŒã決å®ããæ©èœã®å®å šã«è«ççãªèŠä»¶ãè¿œå ããŸãã
æ®éçãªããŒã¿æ§é ãã€ãŸãããŒããååŸããŸããããã«ãããããŒãã®æ¥çãåæåŸãªã©ããµãã»ã¯ã·ã§ã³ã®ã¡ãžã£ãŒã®å€ããã°ããç §äŒã§ããŸããããªãŒã¯ããèªäœã§ãã©ã³ã¹ãåããŠãããããã¢ã¯ã»ã¹æéã¯å¯Ÿæ°ã®ãŸãŸã§ãïŒèŠçŽ ãè¿œå ãããšãæ°ãããµãããªãŒã®ãã£ãã·ã¥ãããã¡ãžã£ãŒå€ãåèšç®ãããæªå€æŽã®ãµãããªãŒã¯åããŸãŸã«ãªããŸãã Oã®ãã¹ãŠïŒlog NïŒãçŽ æŽãããã
ããŠãã¡ãžã£ãŒã®å®çŸ©ãå°ãçµããŸããããããªãŒã®åå ·äœçãªåäžèŠçŽ ã®ã¿ã枬å®ããæ¹æ³ãæããŠãã ãããä»ãµãããªãŒã®æž¬å®å€ãååŸããæ¹æ³ã¯ïŒãšãŠãç°¡åã§ãã1ã€ã®èŠçŽ ã®æž¬å®å€ãšä»ã®èŠçŽ ã®æž¬å®å€ã®çµã¿åãããããããã®2ã€ã®ã»ããã®æž¬å®å€ãäžããããã«ã2ã€ã®æž¬å®å€ãäºãã«çµã¿åãããããšãã§ããã°ååã§ããåæã«ããã®çµåããã»ã¹ã¯é£æ³çã§ããå¿ èŠããããŸããããããªããšãã¯ãšãªã¢ã«ãŽãªãºã ã誀ã£ãçããåãåããŸãããããã®èæ ®äºé ã«ãããèªç¶ãªçµè«ã«è³ããŸãã枬å®å€ã¯ä»»æã®é¢æ°ã§ããããã®çµæã¯ã¢ãã€ãã®èŠçŽ ã§ãã
ãæ倧ãã¡ãžã£ãŒã¯ãã¢ãã€ã<Numbersãmaxã-â>ã®çµæãæã€xã®åºæ¬é¢æ°ã§ãã
ãäºä¹åãã¡ãžã£ãŒã¯ãã¢ãã€ã<Numbersã+ã0>ã®çµæãæã€åºæ¬é¢æ°x 2ã§ãã
枬å®ãåšæ³¢æ°ãã¹ãã°ã©ã ã-åºæ¬é¢æ°ãåäžã®æå®ãããã·ã³ãã«ã«å¯ŸããŠ100ïŒ ãçµæã¯ã¢ãã€ã<ãã¹ãã°ã©ã ãæåæ°ãèæ ®ãããã¹ãã°ã©ã ã空ã®ãã¹ãã°ã©ã ãçµã¿åããããã®>ã«ãªããŸããèªè ã¯ãæŒç¿ãšããŠãé »åºŠãã¹ãã°ã©ã ãçµåããå®å šã«é¢é£ããæäœãæ€èšããå¿ èŠããããŸãã
ããã§éæããããšãã³ãŒãã§èª¬æããŸããããããã¯ãCïŒã§ã®åãã¢ã€ãã¢ã®å®è£ ãéåžžã«ugãå€é³ç¯ã«èŠãããããHaskellã«å®å šã«åãæ¿ãããšããã§ããããããšãã°ãããªãŒã¯2ã€ã§ã¯ãªã3ã€ã®å žåçãªãã©ã¡ãŒã¿ãŒã§ãã©ã¡ãŒã¿ãŒåããå¿ èŠããããŸãïŒ
ãã©ã³ã¹ãåãããšãªããå®éã«è¿œå /æ¥ç/åæããããšãªããåçŽãªãã€ããªããªãŒã®å®è£ ãæäŸããŸãããããã®æäœãã©ã®ããã«å®è£ ããããã¯ãç¹å®ã®ã¿ã€ãã®ãã©ã³ã¹ã®ãšããããªãŒããšã«åºæã§ãããå¥ã®èšäºãå¿ èŠã«ãªããŸãããããã¯ç§ã®ç®æšã§ã¯ãããŸãããèªè ã¯ç°¡åã«ã¯ã©ã¹ã®ä»£ããã«æ³åããããšãã§ããŸã
Tree
äŸãã°ã
FingerTree
ããŸãã¯ã
ImplicitTreap
ãæ£çŸ©ã®å埩ãã®å¯Ÿå¿ããæ©èœãæžãçŽãããããŒã¿ãããªãŒã®é ç¹ã«ãä¿åãããããªãŒã®é ç¹ã®åå«ããã«ã«ãªãå¯èœæ§ãããããšãèæ ®ãããããè€éãªãã®ã
// , . public interface IMeasured<V> { V Measure { get; } } // : public class IdentityMeasure<T> : IMeasured<T> { public readonly T Data; public IdentityMeasure(T data) { Data = data; } public T Measure { get { return Data; } } } // T - // V - // M - , public class Tree<T, M, V> : IMeasured<V> where M: IMonoid<V>, new() where T: IMeasured<V> { public readonly T Data; // public readonly Tree<T, M, V> Left; public readonly Tree<T, M, V> Right; private readonly V _measure; public V Measure { get { return _measure; } } public Tree(T data) // { Left = Right = null; Data = data; _measure = data.Measure; } public Tree(Tree<T, M, V> left, Tree<T, M, V> right) // { Left = left; Right = right; Data = default(T); _measure = Singleton<M>.Instance.Append(left.Measure, right.Measure); } } // , public class SumTree : Tree<IdentityMeasure<int>, AddMonoid, int> { public SumTree(int data) // : base(new IdentityMeasure<int>(data)) {} public SumTree(SumTree left, SumTree right) // : base(left, right) {} } // , public class PriorityTree : Tree<IdentityMeasure<double>, MaxMonoid, double> { public PriorityTree(double data) // : base(new IdentityMeasure<double>(data)) {} public PriorityTree(PriorityTree left, PriorityTree right) // : base(left, right) {} }
ãã®ã»ã¯ã·ã§ã³ã®ãã¹ãŠã®åªåã®é倧æã¯ããµãããªã 枬å®ãèŠæ±ããããã®äžè¬åãããæ¹æ³ã«ãªããŸãã
// . // : Size = 1 + left.Size + right.Size; public readonly int Size = 1; public V MeasureOn(int start, int length) { if (start == 0 && length == Left.Size) return Left.Measure; if (start == Left.Size && length == Right.Size) return Right.Measure; if (start + length <= Left.Size) return Left.MeasureOn(start, length); if (start >= Left.Size) return Right.MeasureOn(start - Left.Size, length); var monoidV = Singleton<M>.Instance; var leftValue = Left.MeasureOn(start, Left.Size - start); var rightValue = Right.MeasureOn(0, length - (Left.Size - start)); return monoidV.Append(leftValue, rightValue); }
æ°ããã¹ããŒãžïŒè¿°èª
ã¢ãã€ãã«ãã£ãŠãã©ã¡ãŒã¿ãŒåãããããŒãã«å¯ŸããŠå®è¡ã§ããæäœã®ã¯ã©ã¹ãããã«æ¡åŒµã§ããŸãããµãã»ã°ã¡ã³ãã«é¢ããããŸããŸãªå¯Ÿçã®èŠæ±ãæºããæ¹æ³ããã§ã«ç¥ã£ãŠããŸãããããã人çã§ã¯ãã°ãã°ãç¹å®ã®æå³ãç¥ãããšã ãã§ãªãããã®åµé ã«ãäž»ã«ãé¢äžããèŠçŽ ãå¿ èŠã§ãã
ããšãã°ãã¡ãžã£ãŒãã»ã°ã¡ã³ãå ã®èŠçŽ ã®æ倧å€ã§ããå Žåããã®ã¢ã«ãŠã³ãããã®æ倧å€ã«éããç¹å®ã®èŠçŽ ãç¥ããšäŸ¿å©ã§ããå€ãè¯å¥œãªã€ã³ããã¯ã¹ã¢ã¯ã»ã¹ã¯ãåãæäœã«ãé©çšãããŸããæãåºãããã«ããããã®æäœã¯ãã¹ãŠéåžžã«ãã䌌ãã¢ã«ãŽãªãºã ã§èšè¿°ãããŠããŸããããã¯ãããªãŒã®é ç¹ããç®çã®ãªãŒãã«å°éãããŸã§ãé ç¹ããçŽç·ã«äžéããŸãããããã£ãŠããã®ãããªãã¹ãŠã®æäœãäžè¬åããéåžžã«ç°¡åãªæ¹æ³ããããŸãã
ããã€ãã®è¿°èª pãèããŸããã€ãŸãã1ã€ã®ä»»æã®åŒæ°ã®ããŒã«é¢æ°ã
æã ã¯ããªããžã§ã¯ãã®é åãæãããŸããã
...
1 â 2 â 3 â···â Nã®ãšãããâããæã ã¯ãåæãã-ã¢ãã€ãã®æäœããæååã䜿çšããäŸã§ã¯ãé£çµã«ãªããŸããããã§ããããã®ãã¹ãŠã®ãã¬ãã£ãã¯ã¹ã®åèšã«ã€ããŠè¿°èªã®å€ãèšç®ããŸããããŒã«å€ã®ã·ãŒã±ã³ã¹ãååŸããŸãããããŠæåŸã«ãæ¥é èŸã®åã§åžžã«Falseã§ããå Žåãè¿°èªã¢ãããŒã³ãåŒã³åºããããæç¹ã§FalseãTrueã«å€æŽãããã®åŸã·ãŒã±ã³ã¹ã®æåŸãŸã§Trueã®ãŸãŸã«ãªããŸããç°¡åã«èšãã°ãFalseã0ã«ãTrueã1ã«çœ®ãæãããšãè¿°éšã®çµæã®ã·ãŒã±ã³ã¹ã¯æžå°ããªãã¯ãã§ãã
ã¢ãã€ãæååã®å³ã§ãã®ããããã£ã瀺ããŸãããŸãããPïŒSïŒ= { sãå«ãŸ
""
ã¹ããªã³ã°ãšããŠ}ã
ããŒãã®äžéšã«ã¯ãã¡ãžã£ãŒå€ãã€ãŸããµãããªãŒã©ã€ã³ã®é£çµããã£ãã·ã¥ãããŠããŸãã
ã¢ã«ãŽãªãºã ã¯åžžã«2ã€ã®ãã¬ãã£ãã¯ã¹ããµããŒãããŠããŸãã1ã€ã¯çŸåšã®å·Šã®æ¯åãèæ ®ããããã1ã€ã¯ãããå«ããŸãããããã®ãã¬ãã£ãã¯ã¹ã®è¿°èªã®å€ã«å¿ããŠãã©ã®ãµãããªãŒå ã§ããžã£ã³ãããçºçããããåžžã«æ£ç¢ºã«å€æã§ããŸãã
ããšãã°ãããŒãã®ã«ãŒãã«ãããšããã¢ã«ãŽãªãºã ã¯
" "
ïŒ= Falseãæ€åºããŸãã
" , "
ïŒ= True
éäžäžããã¬ãã£ãã¯ã¹ã®æ£ããå€ãåžžã«ç¶æããå³ãµãããªãŒãžã®éäžã®å ŽåãçŸåšã®å·Šã®æ¯åã®å°ºåºŠã§ãããæ¥çããå¿ èŠããããŸãã
æçµçã«ã察æ°ã®ã¹ãããã§ããžã£ã³ããçºçããã·ãŒãã«å°éããŸãããªãŒãã»ã°ã¡ã³ãã®å éšã§ã¯ãå¥ã®æ¹æ³ã§æ£ç¢ºãªãžã£ã³ãäœçœ®ãæ¢ãå¿ èŠããããŸããã»ãšãã©ã®å Žåãé 次ãã§ãã¯ãå¿ èŠã§ãããã ããããã¯ããããªããšã§ã¯ãªããããããŸããããç¹å®ã®éšåæååãå«ããè¿°èªã®ä»£ããã«ããç¹å®ã®æ£èŠè¡šçŸãæºãããè¿°èªãæ³åããŠãã ããããŸããå調ã§ãããèšç®ã«ã¯å€å°ã®åŽåãå¿ èŠã§ãã
ããšãã°ããå¹³æ¹ã®åèšããšãã圢åŒãšã256ãè¶ ãããè¿°èªã®ã¡ãžã£ãŒã®å Žåããžã£ã³ãã®æ£ç¢ºãªäœçœ®ã決å®ããããã«ãã·ãŒãå ã®ã»ã°ã¡ã³ãããç¹å®ã®åæ°å€ã®å¹³æ¹ãåå¥ã«èšç®ããå¿ èŠããããŸãã
ãšããã§ãåèªãå«ãã»ã°ã¡ã³ãã§ã¯ãªããã·ãŒãå ã®æåãå¥ã ã«ä¿åããå Žåããã®ã¢ã«ãŽãªãºã ã«åºã¥ããŠãåå²æäœã決å®ã§ããŸããå調ãªè¿°èªã«åŸã£ãŠããªãŒã2ã€ã«ã«ããããŸããå·ŠåŽã®çµæã§ã¯ãè¿°èªããããã£ã¯ãŸã æºããããŠããããå³åŽã§ã¯ããã§ã«æºããããŠããŸããæ£ç¢ºãªåå²ã¢ã«ãŽãªãºã ã®å®è£ ã¯ãæŒç¿ãšããŠèªè ã«æ確ãªè¯å¿ãå§ããããšãã§ããŸã:)
ãšããã§ã次ã®æ®µèœã®1ã€ã§ã¯ãããã¯ãŸã æçšã§ãã
, . , . .
ããããããšãã°ãã€ã³ããã¯ã¹iãæã€èŠçŽ ãžã®ã¢ã¯ã»ã¹ã¯ãå調ãªè¿°èªãprefix length> iãã䜿çšããããªãŒå ã®åãªãæ€çŽ¢ã§ããããšã¯æããã§ãããã¬ãã£ãã¯ã¹ã®é·ãã¯éåžžã®å°ºåºŠã§ãããé ç¹ã«ãµãããªãŒã®ãµã€ãºãæ ŒçŽããéã®å°ºåºŠãšããŠäœ¿çšããŸããããã®æž¬å®ã§ã¯ãåºæ¬é¢æ°ã¯åäœåäœã§ãããå€ã¯ã¢ãã€ã<Numbersã+ã0>ã«ãããŸããäœçœ®çªå·i-ããã¯ãã·ãŒã±ã³ã¹ãã¬ãã£ãã¯ã¹ã®é·ããiãè¶ ãå§ããäœçœ®ã§ãã
éžæãããäŸ
ããã§ãã¢ãã€ãã䜿ã£ãããŒãã®ãã©ã¡ãŒã¿ãŒåãªã©ã®æŠå¿µãããããäž»ãªå©ç¹ããã¹ãŠèª¿ã¹ãŸãããã枬å®å¯èœãªãå€ã®ä»»æã®ã·ãŒã±ã³ã¹ãååŸããçµæã®ã·ãŒã±ã³ã¹ã®ãµãã»ã°ã¡ã³ãã«å¯ŸããŠãã¡ãžã£ãŒã®å€ãèªèããŠããããã次ã ã«çµåã§ããŸããèå³ãããå Žåã¯ãå調ãªè¿°èªã«åŸã£ãŠçµæã®ããŒããåæããããšã§ãéæã®æ£ç¢ºãªäœçœ®ãèŠã€ããããšãã§ããŸãããããŠãããããã¹ãŠã察æ°æéã§è¡ããå¯èœæ§ã®ç¯å²ãç¡éã«ããŸãããã®ç¡å¶éã®ã¹ã³ãŒããä»ããå®è¡ããŠã3ã€ã®ããªãæšæºçã§ã¯ãªããéåžžã«éèŠã§èå³æ·±ãã¢ãã€ãã玹ä»ããŸãã
äŸ1ïŒçµ±èš
ä»åã¯ãéå±ãªæ°åãæååãããŒã«ãããéå±ãªãã®ãæäœããŠããŸããç§ãã¡ã®çŽ°å¿ã®æ³šæã®å¯Ÿè±¡ã¯...ãµã³ãã«ã§ãã
ãµã³ãã«ãã€ãŸãç¹å®ã®æ¯éå£ããã®æéãªã©ã³ãã å€ã®ã»ããã枬å®å¯èœã§ãã誰ãããµã³ãã«ã®äž»ãªç¹åŸŽãç¥ã£ãŠããŸãïŒ
N-ãµã³ãã«ãµã€ãºã
Mã¯ãµã³ãã«ã®å¹³åå€ã§ãã
Vã¯æšæ¬ã®åæ£ãã€ãŸããå¹³åæšæ¬ããã®åå·®ã®äºä¹ã®å¹³åå€ã§ããã¹ã±ãŒãªã³ã°ãããŠããªãåæ£ãã€ãŸããåã«å¹³åããã®åå·®ã®äºä¹ã®åèš
ãèæ ®ããŸããå¿ èŠã§ããã°ãããã¯åçŽã«æ°å²ããåºæ¬ããããããããæãåºãNã®ãã
äžã®æ®µèœã§ããµã³ãã«ã¯ã枬å®å¯èœãã§ãããšè¿°ã¹ãŸãããã¯ãããã®èšèã誀ã£ãŠäœ¿çšããããšã¯ãããŸããã§ãã:)ãµã³ãã«ã®ããã3ã€ã®åºæ¬çãªç¹æ§ã®ã»ãããããã®å°ºåºŠãšããŠåœ¹ç«ã¡ãŸãã
ã¹ããã-ã¹ããã-ã¹ããããããªãã¯èšãã3ã€ã®ççµåãããæ°ã®åãã»ããã¯äœã§ãã-ã¢ãã€ãã®èŠçŽ ã§ããïŒããã¯ã©ããªã¢ãã€ãã§ããïŒã©ãããããããµã³ãã«ãçµåããå¿ èŠããããŸãããããå€æããŸãããããã©ãã§ããïŒ
ããã¯ãã¹ãŠçŸããè¡ãããŸããåãæ¯éå£ããã®2ã€ã®ãµã³ãã«AãšBããããšããŸãããããã®ãµã³ãã«ãããŒãžããŠãå ±åãµã³ãã«XãäœæããŸãããã®ãµã€ãºã¯ãå ã®ãµã³ãã«ã®ãµã€ãºã®åèšã§ãããã®åŸã1979幎ã«ãããŒãã£ã³ã瀺ããããã«ãæ°ãããµã³ãã«ã®å¹³åããã³ã¹ã±ãŒã«ãªãã®åæ£ã¯ã次ã®åŒã䜿çšããŠèšç®ã§ããŸãã
æããã«ããµã³ãã«ãã©ã®é åºã§æ··åãããã¯éèŠã§ã¯ãããŸãããæçµãµã³ãã«ã®ç¹æ§ã¯åãã§ãããããã£ãŠããµã³ãã«ã®ããŒãžã¯çµåçã§ãã
空ã®ãµã³ãã«ã®ç¹æ§ãäœã§ããããå€æããã®ã¯ã圢åŒçãªãŸãŸã§ãããã®ãµã€ãºã¯æããã«0ã§ãããçžå æ§ã«ããå¹³åã0ã«ãªããŸãããåæ£ãååã«æ±ºå®ããããšã¯ã§ããŸããããã ããå¿ èŠã¯ãããŸãããããªãŒã§ã¯ã空ã®ãµã³ãã«ã®åæ£ã«ãŸã£ãã觊ããŸããã
çµ±èšçç¹åŸŽã®ã¢ãã€ããšããã«ç¶ããã¹ãŠã®å®çŸ©ãpastie.orgã«å®çŸ©ããå¿ èŠããããŸãããããã¯ãèšäºã®ãµã€ãºã«å¯ŸããHabrahabrã®å¶éãããç·åŒµãå§ããããã§ã:)
ãµã€ãºKã®ããŠã£ã³ããŠãã移åããã©ã³ãã å€æ°ã®ã¹ããªãŒã ãã€ãŸã æåŸã®Kåã®éã®åæ£ãšæåŸ å€ãåžžã«ç¥ãå¿ èŠããããŸããããªãŒãäœæãããèŠçŽ ããã¥ãŒããé 次åé€ãããŠè¿œå ãããå¿ èŠãªèšç®å€ã¯åžžã«ããªãŒã®ã«ãŒãã«ãããŸããçŸäºº
äŸ2ïŒç»åã®ã¢ã«ãã¡åæ
2ã€ã®åéæã®ç»åããããŸãïŒã¢ã«ãã¡ãã£ãã«ä»ãïŒãã¢ã«ãã¡åæãšããŠç¥ãããŠãã2ã€ã®ç»åã®ãªãŒããŒã¬ã€æŒç®åãå®çŸ©ããŸããPhotoshopã§åéæã®ç»åã䜿çšããããšããã人ã¯èª°ã§ãããã®åäœã«ç²ŸéããŠããŸããç»åã®åãã¯ã»ã«ã«ã¯ãã«ã©ãŒCãšã¢ã«ãã¡ãã£ãã«Î±ã® 2ã€ã®ãã©ã¡ãŒã¿ãŒãå®çŸ©ãããŠããŸãããããã®å€ãèšç®ããããã®åŒãå®å šã«æ確ã«å®çŸ©ãããšãéãåããæŒç®åãå®çŸ©ãããŸãããããã£ãŠã次ã®äºå®ã¯æ°åŠçã«ç°¡åã«å°ãåºããããšãããããŸãã
- ãªãŒããŒã¬ã€æŒç®åã¯çµåçã§ãã
- ã¢ã«ãã¡ãã£ãã«ã0ã®ç»åã¯ããªãŒããŒã¬ã€ãªãã¬ãŒã¿ãŒã®åäœãšããŠæ©èœããŸãã
ãããã®äºå®ãšç¹å®ã®å ¬åŒã®èšŒæã«ã€ããŠã¯ã察å¿ãããŠã£ãããã£ã¢ã®èšäºãåç §ããŠãã ããã
ãããã£ãŠãã¢ã«ãã¡åæã®åäœã®åéæã®ç»åã¯ã¢ãã€ãã圢æããŸããããã«ãããé©åãªããªãŒã䜿çšããŠãäºãã«éãåãããå¿ èŠããã巚倧ãªç»åã®ã»ãããåŠçããæ©äŒãäžããããŸãã
äŸ3ïŒæ£èŠè¡šçŸ
æ®å¿µãªãããHabrahabrã«ãã£ãŠèšäºã«èª²ãããããªã¥ãŒã ã¯ãç§ããããç¥çã«ä»äžããããšãã§ããã3çªç®ã®çŸããã¢ãã€ããããªãã¡æ£èŠè¡šçŸãèªèããããã®æéãªãŒãããã³ã®é·ç§»é¢æ°ã®ã¢ãã€ãã詳现ã«èª¬æããããšã¯ã§ããŸããããããããŒãã§äœ¿çšãããšãã€ã³ã¯ãªã¡ã³ã¿ã«ã¬ã¯ãµãŒãäœæã§ããŸããããã¯ãè¡ããã°ããå€æŽããæå®ãããæ£èŠè¡šçŸãåã®è¡ãšäžèŽããå Žåã«ãã€ã§ãå³åº§ã«çããåºãããšãã§ããæ§é ã§ãã詳现ã«ã€ããŠã¯ãDan Piponi ã«ããå ã®èšäºã®ç¿»èš³ãšããã詳现ãªèšäºã§ãã Eugene Kirpichevã®å®è£ ãåç §ããŠãã ãããæçš®ç»åïŒ
ãããŸã§ã®éããæž èŽããããšãããããŸããã