moon-certified

Core algorithms and data structures for MoonBit โ€” partially formally verified

moonbit
formal-verification
moon-prove
algorithms
data-structures
partially-verified
Download zip
Version
0.1.1
License
Apache-2.0
Last updated
18 hours ago
Downloads
6

#Moon Certified

็”จ MoonBit 0.9 ็š„ moon prove ๅฝขๅผๅŒ–้ชŒ่ฏ็ณป็ปŸ๏ผŒๆž„ๅปบ็ป่ฟ‡ๆ•ฐๅญฆ่ฏๆ˜Ž็š„ๆ ธๅฟƒ็ฎ—ๆณ•ไธŽๆ•ฐๆฎ็ป“ๆž„ๅบ“ใ€‚

#ไธบไป€ไนˆ้œ€่ฆ่ฟ™ไธช้กน็›ฎ

MoonBit 0.9 ๅผ•ๅ…ฅไบ† first-class formal verification ่ƒฝๅŠ›๏ผŒmoon prove ๆˆไธบไธŽ moon buildใ€moon test ๅนถๅˆ—็š„ๅทฅๅ…ท้“พๅ†…็ฝฎๅ‘ฝไปคใ€‚ๅฎƒ้€š่ฟ‡ Why3 + Z3 SMT ๆฑ‚่งฃๅ™จ๏ผŒๅฏนไปฃ็ ่ฟ›่กŒๅ…จ่พ“ๅ…ฅ่ฆ†็›–็š„ๆญฃ็กฎๆ€ง่ฏๆ˜Žโ€”โ€”ไธๆ˜ฏๆต‹่ฏ•ๆŸๅ‡ ็ป„่พ“ๅ…ฅ็ขฐๅทง่ฟ”ๅ›žๆญฃ็กฎ็ป“ๆžœ๏ผŒ่€Œๆ˜ฏไธ€ไธช่ฆ†็›–ๆ‰€ๆœ‰ๅฏ่ƒฝ่พ“ๅ…ฅ็š„ๆ•ฐๅญฆ่ฏๆ˜Žใ€‚

ไฝ†็›ฎๅ‰ MoonBit ็”Ÿๆ€ไธญ๏ผŒmoonbit-community/verified ไป…ๅŒ…ๅซ 12 ไธชๆ•™็จ‹็บง็คบไพ‹๏ผˆv0.0.2๏ผ‰ใ€‚ๆœฌ้กน็›ฎ็š„็›ฎๆ ‡ๆ˜ฏๆž„ๅปบ็”Ÿไบง็บง้ชŒ่ฏๅบ“๏ผŒ่ฆ†็›–ๆŽ’ๅบใ€ๆœ็ดขใ€ๆ•ฐๆฎ็ป“ๆž„ใ€ๅ›พ็ฎ—ๆณ•็ญ‰ๆ ธๅฟƒ้ข†ๅŸŸใ€‚

#้กน็›ฎ็Šถๆ€

0.1.1๏ผˆ2026-08-27๏ผŒๅŒๆญฅ mooncakes.io ไธŽ GitHub ็š„่กฅไธ็‰ˆ๏ผ›้ฆ–ไธชๆญฃๅผๅ‘ๅธƒไธบ 0.1.0๏ผ‰โ€” 337 ไธช็ฎ—ๆณ•ๅŒ… + ๅ…ฑไบซๅทฅๅ…ทๆจกๅ—ใ€‚ๅ‘ๅธƒๆ—ถ่ดจ้‡้—จๆง›๏ผšmoon check --deny-warn 0 errors / 0 warnings๏ผŒmoon test 6432 ไธชๆต‹่ฏ•ๅ…จ้ƒจ้€š่ฟ‡๏ผŒmoon fmt --check ๅนฒๅ‡€๏ผŒmoon prove 17 ไธชๅŒ…ๅ…จ้ƒจ่ฏๆ˜Ž้€š่ฟ‡๏ผˆๅ…ถไธญ 9 ไธชไธบ Verified tier๏ผ‰ใ€‚

็จณๅฎšๆ€งๅˆ†ๅฑ‚๏ผˆ่ฏฆ่ง docs/API_STABILITY.md๏ผ‰๏ผš

ๅฑ‚็บงๅŒ…ๆ•ฐ่ฏดๆ˜Ž
Verified9proof-enabled = true๏ผŒmoon prove๏ผˆWhy3 + Z3๏ผ‰้€š่ฟ‡
Stable254ๅฎŒๆ•ดๆต‹่ฏ•่ฆ†็›–๏ผŒไธป็‰ˆๆœฌๅ†… API ๅ†ป็ป“
Experimental74ๆญฃ็กฎ๏ผˆๆต‹่ฏ•ๅ…จ่ฟ‡๏ผ‰ไฝ† API ๆœชๅ†ป็ป“๏ผŒๅฐ็‰ˆๆœฌๅฏ่ƒฝๅ˜ๆ›ด

#ๅŠŸ่ƒฝๆฆ‚่งˆ

  • 337 ไธช็ฎ—ๆณ•ๅŒ…๏ผŒ่ฆ†็›–ๆ ธๅฟƒ็ฎ—ๆณ•ๅ…จ้ข†ๅŸŸ๏ผš
    • ๅนถๅ‘ๆ•ฐๆฎ็ป“ๆž„๏ผšRingBufferใ€BoundedQueueใ€SnapshotMap (COW ๅฟซ็…ง) โ€” Michael-Scott/Vyukov/Treiber ็ญ‰ๅนถๅ‘็ฎ—ๆณ•็š„ๅ•็บฟ็จ‹ๆจกๆ‹Ÿ (MoonBit ็ผ–่ฏ‘่‡ณ Wasm/JS, ๆ— ๅŽŸ็”Ÿ CAS; ่‡ชๆ—‹้”ๆไพ›็œŸๅฎžไบ’ๆ–ฅ)
    • ๆŒไน…ๅŒ–/ๅค–้ƒจ็ฎ—ๆณ•๏ผšExternal Sortใ€LSM-Treeใ€B+Treeใ€Persistent Vectorใ€HAMT
    • ๅญ—็ฌฆไธฒ้ซ˜็บง็ป“ๆž„๏ผšSuffix Treeใ€FM-Indexใ€Wavelet Treeใ€Palindromic Treeใ€Lyndon ๅˆ†่งฃใ€Suffix Balanced Tree
    • ๅ›พ้ซ˜็บง็ฎ—ๆณ•๏ผšEdmonds Blossom (ไธ€่ˆฌๅ›พๆœ€ๅคงๅŒน้…)ใ€Dominator Treeใ€Gomory-Hu Treeใ€Stoer-Wagner ๅ…จๅฑ€ๆœ€ๅฐๅ‰ฒใ€HLPP ๆœ€ๅคงๆตใ€Hopcroft-Karpใ€Min Steiner Treeใ€HLDใ€้‡ๅฟƒๅˆ†่งฃใ€่™šๆ ‘ใ€ๆœ€ๅคงๅ›ข (Bron-Kerbosch)ใ€ๅ›พ็€่‰ฒใ€ไธ‹็•Œ้™ๅˆถๆต
    • ๅ‡ ไฝ•่ฟ›้˜ถ๏ผš3D ๅ‡ธๅŒ…ใ€Voronoi ๅ›พใ€Delaunay ไธ‰่ง’ๅ‰–ๅˆ†ใ€ๅŠๅนณ้ขไบคใ€ๅŠจๆ€ๅ‡ธๅŒ…
    • ๆ•ฐๅญฆ/ๆ•ฐๅ€ผ๏ผšFFT (ๅคๆ•ฐ)ใ€ๅ•็บฏๅฝขๆณ• (LP)ใ€LU/QR/SVD ๅˆ†่งฃใ€็‰นๅพๅ€ผใ€Newton ่ฟญไปฃใ€Berlekamp-Masseyใ€ๅ…ฑ่ฝญๆขฏๅบฆๆณ•ใ€GMRESใ€L-BFGSใ€่‡ชๅŠจๅพฎๅˆ†
    • ๆฆ‚็އ/่ฟ‘ไผผ็ป“ๆž„๏ผšCount-Min Sketchใ€HyperLogLogใ€Cuckoo Filterใ€W-TinyLFUใ€TTL Cache
    • ๆ•ฐ่ฎบ่ฟ›้˜ถ๏ผšไบŒๆฌกๅ‰ฉไฝ™ใ€ๅŽŸๆ นใ€Mรถbius ๅๆผ”ใ€ๆœ‰้™ๅŸŸใ€Reed-Solomon ็ผ–็ ใ€ๅคš้กนๅผ่ฟ็ฎ—
    • DP ่ฟ›้˜ถ๏ผšๆ•ฐไฝ DPใ€็ŠถๅŽ‹ DPใ€ๅ‡ธๅฃณๆŠ€ๅทง (CHT)ใ€ๅˆ†ๆฒป DPใ€Knuth ไผ˜ๅŒ–ใ€SOS DP
    • ๆœ็ดข/ML ๅŸบ็ก€๏ผšBall-Treeใ€VP-Treeใ€LSHใ€Ternary Search
    • ๅ…ถไป–๏ผšNim ๅšๅผˆ (Sprague-Grundy)ใ€ๆฐดๅบ“้‡‡ๆ ทใ€ๅŠ ๆƒ้šๆœบ้‡‡ๆ ทใ€CRCใ€Mo ็ฎ—ๆณ•ใ€ๆŽ่ถ…ๆ ‘ใ€ไบŒ็ปดๆ ‘็Šถๆ•ฐ็ป„ใ€Segment Tree Beatsใ€External Sort

  • ็”Ÿไบง็บง่ฎพ่ฎก๏ผš
    • ๆ‰€ๆœ‰้ญ”ๆœฏๅ€ผๆถˆ้™ค๏ผŒไฝฟ็”จ Option/SPResult ็ฑปๅž‹ๆ›ฟไปฃ -1/็ฉบๆ•ฐ็ป„็ญ‰ๆญงไน‰่ฟ”ๅ›žๅ€ผ
    • ๅ…ณ้”ฎ็ฎ—ๆณ•ไฝฟ็”จ Int64 ๆบขๅ‡บไฟๆŠค๏ผˆdijkstra_heapใ€convex_hullใ€max_flowใ€dinicใ€min_cost_flow ็ญ‰๏ผ‰
    • ่‡ชๅนณ่กกๆ ‘๏ผˆAVLใ€็บข้ป‘ๆ ‘ใ€BTreeใ€Treap๏ผ‰ไพ่ต–็ป“ๆž„ไธๅ˜้‡ไฟ่ฏ O(log n) ้€’ๅฝ’ๆทฑๅบฆ๏ผŒๆ— ้œ€ไบบไธบๆทฑๅบฆ้™ๅˆถ
    • swap ้›†ไธญๅœจ @utils๏ผˆๆถˆ้™ค 7 ๅค„้‡ๅค๏ผ‰
    • SplitMix64/XorShift64 ้›†ไธญๅœจ @utils/prng๏ผˆๆถˆ้™คๅคšๅŒ…้‡ๅค๏ผ‰
    • ๆฏๅฎžไพ‹้šๆœบ็งๅญ @utils.fresh_seed()๏ผˆๆ›ฟไปฃๅ…จๅฑ€ๅ›บๅฎš็งๅญ๏ผ‰

  • ๆต‹่ฏ•/้ชŒ่ฏๅŸบ็ก€่ฎพๆ–ฝ๏ผš
    • benchmarks/ ็›ฎๅฝ•๏ผšๆ€ง่ƒฝๅŸบๅ‡†ๆต‹่ฏ•๏ผŒๅซๆŽ’ๅบ/ๆ ‘/ๅ›พ/ๆ•ฐ่ฎบ/ๅญ—็ฌฆไธฒ/ๅ‡ ไฝ•็š„ wall-clock ๆ—ถ้—ดๆต‹้‡ไธŽๅคๆ‚ๅบฆ้ชŒ่ฏ
    • test/fuzz/ ็›ฎๅฝ•๏ผšFuzz ๆต‹่ฏ• + ๅฏนๆŠ—ๆ€ง่พ“ๅ…ฅๆต‹่ฏ•๏ผˆๆŽ’ๅบๆœ€ๅๆƒ…ๅ†ตใ€ๅ›พ่‡ช็Žฏ/ๆ–ญๅผ€/็Žฏๆฃ€ๆต‹ใ€ๅญ—็ฌฆไธฒ Unicodeใ€Carmichael ๆ•ฐใ€ๅ‡ ไฝ•ๅ…ฑ็บฟ/้‡ๅค็‚นใ€ๅนถๅ‘็ป“ๆž„่พน็•Œ๏ผ‰
    • test/stress/ ๅขžๅผบ๏ผšๆŽ’ๅบๅŽ‹ๅŠ›ๆต‹่ฏ•้ชŒ่ฏ็ฝฎๆขๆ€ง่ดจ๏ผˆ้žไป…ๆœ‰ๅบๆ€ง๏ผ‰๏ผŒLIS ๅŽ‹ๅŠ›ๆต‹่ฏ•้‡ๆž„ๅฎž้™…ๅญๅบๅˆ—้ชŒ่ฏ๏ผˆ้žไป…ๅนณๅ‡ก่พน็•Œ๏ผ‰
    • test/property_test/ QuickCheck ้ฃŽๆ ผๅฑžๆ€งๆต‹่ฏ•ๆก†ๆžถ๏ผˆ้šๆœบ่พ“ๅ…ฅ็”Ÿๆˆ + ๅไพ‹็ผฉๅ‡๏ผ‰
    • test/test_utils/ ๅ…ฑไบซๆต‹่ฏ•ๅทฅๅ…ท๏ผˆๆถˆ้™ค 14 ไธชๆ–‡ไปถ็š„ str_cmp ้‡ๅค๏ผ‰
    • docs/API_STABILITY.md API ็จณๅฎšๆ€ง็ญ–็•ฅ

  • ็ฎ—ๆณ•ๅฎž็Žฐ็ญ–็•ฅ๏ผš
    • ๆœ€ๅฐ่ดน็”จๆœ€ๅคงๆต๏ผšSuccessive Shortest Paths with Potentials๏ผˆ้ฆ–่ฟญไปฃ SPFA + ๅŽ็ปญ Dijkstra๏ผ‰๏ผŒๅคๆ‚ๅบฆ O(VยทE + FยทE log V)
    • prim/segment_tree/fenwick/kruskal๏ผšๆไพ› checked ๅ˜ไฝ“ (Int64 ๆบขๅ‡บๆฃ€ๆต‹)
    • miller_rabin๏ผš็กฎๅฎšๆ€ง 12 ่ง่ฏ้›† {2,3,5,7,...,37}๏ผˆ่ฆ†็›–ๅ…จ Int64 ่Œƒๅ›ด๏ผŒSorenson & Webster 2015๏ผ‰
    • euler_sieve๏ผš่ฟ”ๅ›ž None ่€Œ้ž abort๏ผŒไธŽๅ…จๅบ“ Option ็ญ–็•ฅไธ€่‡ด
    • andrew_hull cmp_point๏ผšInt64 ๅ‡ๆณ•้˜ฒๆบขๅ‡บ๏ผŒไธŽ closest_pair ไธ€่‡ด

#้ชŒ่ฏ็Šถๆ€

#้ชŒ่ฏๆทฑๅบฆๅˆ†็บง

็บงๅˆซๅŒ…้ชŒ่ฏๅ†…ๅฎน
โœ… ๅฎŒๆ•ดๆญฃ็กฎๆ€งbinary_searchๆ‰พๅˆฐๅˆ™่ฟ”ๅ›žๆญฃ็กฎ็ดขๅผ•๏ผŒๆœชๆ‰พๅˆฐ่ฟ”ๅ›ž None
โœ… ๅฎŒๆ•ดๆญฃ็กฎๆ€งlinear_search่ฟ”ๅ›žๆญฃ็กฎ็ดขๅผ•ๆˆ– None
โœ… ๅฎŒๆ•ดๆญฃ็กฎๆ€งmax_element่ฟ”ๅ›ž็š„็ดขๅผ•ๆŒ‡ๅ‘ๆœ€ๅคงๅ…ƒ็ด 
โœ… ๅฎŒๆ•ดๆญฃ็กฎๆ€งmin_element่ฟ”ๅ›ž็š„็ดขๅผ•ๆŒ‡ๅ‘ๆœ€ๅฐๅ…ƒ็ด 
โœ… ๅฎŒๆ•ดๆญฃ็กฎๆ€งis_sorted่ฟ”ๅ›ž true ๆ—ถๆ•ฐ็ป„ๆœ‰ๅบ๏ผ›่ฟ”ๅ›ž false ๆ—ถๅญ˜ๅœจ้€†ๅบๅฏน
๐Ÿ”ถ ๅขžๅผบ้ชŒ่ฏarray_sum้ž่ดŸๆ€ง + ๆœ‰็•Œๆฑ‚ๅ’Œ [nยทlo, nยทhi] + ๅ‡ๅŒ€ๆ•ฐ็ป„็ฒพ็กฎ็ญ‰ๅผ nยทval
๐Ÿ”ถ ๅขžๅผบ้ชŒ่ฏgcd้ž่ดŸๆ€ง + ๆ•ด้™ค่‡ชๅๆ€ง dd + ้›ถๆ•ด้™คๆ€ง d0
๐Ÿ”ถ ๅขžๅผบ้ชŒ่ฏfast_power้ž่ดŸๆ€ง + baseโ‰ฅ1 ๆ—ถ resultโ‰ฅ1 + baseโ‰ฅ1 expโ‰ฅ1 ๆ—ถ resultโ‰ฅbase
โš ๏ธ ้ƒจๅˆ†้ชŒ่ฏdijkstraๆ•ฐ็ป„่พน็•Œ + ็ป“ๆžœ้•ฟๅบฆ๏ผŒๆœ€็Ÿญ่ทฏๅพ„ๆœ€ไผ˜ๆ€งๆœช้ชŒ่ฏ๏ผˆๅ…ฌ็†ๅผ•็†ๅทฒ่ฏšๅฎžๆ ‡ๆณจ๏ผ‰
โš ๏ธ ้ƒจๅˆ†้ชŒ่ฏbinary_heap็ดขๅผ•่พน็•Œ (parent/left/right child)
โš ๏ธ ้ƒจๅˆ†้ชŒ่ฏbitsetๅฎน้‡้ž่ดŸ
โš ๏ธ ้ƒจๅˆ†้ชŒ่ฏunion_findself_parent ๅˆๅง‹ๅŒ–ๆญฃ็กฎๆ€ง
โš ๏ธ ้ƒจๅˆ†้ชŒ่ฏred_black_treeempty() ่ฟ”ๅ›ž็ฉบๆ ‘ใ€size() ็ป“ๆž„็ญ‰ๅ€ผ๏ผˆ็ผ“ๅญ˜ๅญ—ๆฎต้ž่ดŸๆ€ง็”ฑๆž„้€ ไฟ่ฏ๏ผŒไธๅœจ่ฏๆ˜Ž่Œƒๅ›ด๏ผ‰
โš ๏ธ ้ƒจๅˆ†้ชŒ่ฏkruskalMST ่พนๆ•ฐ โ‰ค n-1
โš ๏ธ ้ƒจๅˆ†้ชŒ่ฏtopological_sortedge_index ้ž่ดŸๆ€ง๏ผˆไธŠ็•Œไธบ้ž็บฟๆ€ง็ฎ—ๆœฏ๏ผŒ็”ฑๆต‹่ฏ•่ฆ†็›–๏ผŒๆœชๅฃฐๆ˜Žไธบๅทฒ่ฏ๏ผ‰
โš ๏ธ ้ƒจๅˆ†้ชŒ่ฏkmpLPS ๆ•ฐ็ป„้•ฟๅบฆ == pattern ้•ฟๅบฆ
โš ๏ธ ้ƒจๅˆ†้ชŒ่ฏcombinatorics้˜ถไน˜็ป“ๆžœ โ‰ฅ 1
โš ๏ธ ้ƒจๅˆ†้ชŒ่ฏmatrixidentity_int ้•ฟๅบฆ nยฒ + transpose_int ้•ฟๅบฆ nยทm๏ผˆ็ดขๅผ•่พน็•Œไฝฟ็”จ่ฏšๅฎžๆ ‡ๆณจ็š„ๅ…ฌ็†ๅผ•็†๏ผ‰
โš ๏ธ ้ƒจๅˆ†้ชŒ่ฏinsertion_sortnโ‰ค1 ๆ—ถ sorted_asc vacuously true
โš ๏ธ ้ƒจๅˆ†้ชŒ่ฏmerge_sortnโ‰ค1 ๆ—ถ sorted_asc vacuously true

้‡่ฆ่ฏดๆ˜Ž๏ผš
  • โœ… ๅฎŒๆ•ดๆญฃ็กฎๆ€ง๏ผšZ3 ่ฏๆ˜Žไบ†็ฎ—ๆณ•็š„ๆ ธๅฟƒๆญฃ็กฎๆ€ง๏ผˆๆ‰พๅˆฐๆญฃ็กฎ็ป“ๆžœๆˆ–ๆญฃ็กฎๅˆคๆ–ญๆœ‰ๅบๆ€ง๏ผ‰
  • ๐Ÿ”ถ ๅขžๅผบ้ชŒ่ฏ๏ผšๅœจ้ƒจๅˆ†้ชŒ่ฏๅŸบ็ก€ไธŠ๏ผŒๆ–ฐๅขžไบ†ๆ›ดๅผบ็š„ๆ€ง่ดจ้ชŒ่ฏ๏ผˆๅฆ‚็ฒพ็กฎ็ญ‰ๅผใ€ๅ•่ฐƒๆ€งใ€ๆ•ด้™คๆ€ง็ญ‰๏ผ‰
  • โš ๏ธ ้ƒจๅˆ†้ชŒ่ฏ๏ผšZ3 ่ฏๆ˜Žไบ†้ƒจๅˆ†ๆ€ง่ดจ๏ผˆ้ž่ดŸๆ€งใ€่พน็•Œๅฎ‰ๅ…จ๏ผ‰๏ผŒไฝ†ๅฎŒๆ•ดๆญฃ็กฎๆ€ง้œ€่ฆ้ž็บฟๆ€ง็ฎ—ๆœฏๆŽจ็†๏ผŒ่ถ…ๅ‡บ Z3 ่‡ชๅŠจ่ฏๆ˜Ž่ƒฝๅŠ›
  • proof_axiomatized ๅผ•็† graph_index_bound๏ผˆdijkstra ไธญไฝฟ็”จ๏ผ‰ๆ˜ฏไธ€ไธชๆ•ฐๅญฆไธŠๆญฃ็กฎไฝ†่ขซๅ‡่ฎพ่€Œ้ž่ฏๆ˜Ž็š„้ž็บฟๆ€ง็ฎ—ๆœฏไบ‹ๅฎž๏ผˆๆถ‰ๅŠไธคไธชๅ˜้‡็›ธไน˜ u * n๏ผŒZ3 ็บฟๆ€ง็ฎ—ๆœฏๆฑ‚่งฃๅ™จๆ— ๆณ•่‡ชๅŠจ่ฏๆ˜Ž๏ผ‰ใ€‚ไฟ็•™ๆญคๅ…ฌ็†ๆ˜ฏไธบไบ†่ฎฉ Z3 ่ƒฝ้ชŒ่ฏๅฎƒๅŠ›ๆ‰€่ƒฝๅŠ็š„้ƒจๅˆ†โ€”โ€”ๆ•ฐ็ป„้•ฟๅบฆๅฑžๆ€ง result.length() == n
  • ๆณ›ๅž‹็‰ˆๆœฌๅ‡ๆœชๅฝขๅผๅŒ–้ชŒ่ฏ๏ผš่กจไธญๆ ‡ๆณจ"โœ… verified + generic"็š„ๅŒ…๏ผŒๅ…ถ โœ… ไป…ๆŒ‡ๅทฒ้ชŒ่ฏ็š„ Int ็‰ˆๆœฌ๏ผŒๆณ›ๅž‹ไผด้šๅ‡ฝๆ•ฐ๏ผˆsearch_generic[T] ็ญ‰๏ผ‰ไธๅš้ชŒ่ฏ๏ผŒๆณจ้‡Šไธญๆ˜Ž็กฎๆ ‡ๆณจ
  • ๆ‰€ๆœ‰"้ƒจๅˆ†้ชŒ่ฏ"ๅ’Œ"ไป…ๆต‹่ฏ•้ชŒ่ฏ"็š„ๅŒ…้ƒฝ้€š่ฟ‡่ฏฆๅฐฝ็š„ๆต‹่ฏ•ๅฅ—ไปถ้ชŒ่ฏๆญฃ็กฎๆ€ง๏ผŒๅŒ…ๆ‹ฌ่พน็•Œๆƒ…ๅ†ตๅ’Œ้šๆœบ่พ“ๅ…ฅ

#ๆบขๅ‡บ่ฏดๆ˜Ž

ๅฝขๅผๅŒ–้ชŒ่ฏๅฐ† Int ๅปบๆจกไธบๆ•ฐๅญฆๆ•ดๆ•ฐ๏ผŒไฝ†่ฟ่กŒๆ—ถ Int ๆ˜ฏ 32 ไฝๆœ‰็ฌฆๅทๆ•ดๆ•ฐใ€‚ไปฅไธ‹ๅ‡ฝๆ•ฐๅœจ็ป“ๆžœ่ถ…ๅ‡บ 2ยณยนโˆ’1 ๆ—ถไผšๅ‘็”Ÿ้™้ป˜ๆบขๅ‡บ๏ผš

ๅ‡ฝๆ•ฐๆบขๅ‡บ่กŒไธบๅฎ‰ๅ…จๆ›ฟไปฃ
fast_power็ป“ๆžœๅฏ่ƒฝๅ˜ไธบ่ดŸๆ•ฐfast_power_checked๏ผˆ่ฟ”ๅ›ž Int?๏ผŒๅทฒไฟฎๅคๆบขๅ‡บๆฃ€ๆต‹๏ผ‰
gcd่พ“ๅ…ฅๅฎ‰ๅ…จ๏ผˆInt::MIN ไฝฟ็”จ Int64 ็ฒพ็กฎ่ฎก็ฎ—๏ผŒไป… gcd(Int::MIN,Int::MIN) ้’ณไฝ่‡ณ Int::MAX๏ผ‰โ€”
array_sumๅคงๆ•ฐ็ป„ๆฑ‚ๅ’Œๅฏ่ƒฝๆบขๅ‡บ่ฐƒ็”จ่€…้œ€็กฎไฟๅ’Œไธๆบขๅ‡บ
sieven > 10โท ๆ—ถ่ฟ”ๅ›ž None๏ผˆOOM ไฟๆŠค๏ผ‰่ฟ”ๅ›ž FixedArray[Int]?
dijkstra_heap่ท็ฆปไฝฟ็”จ Int64 ็ดฏ็งฏ๏ผŒๆบขๅ‡บๆ—ถ่ฟ”ๅ›ž NoneๅทฒๆทปๅŠ ๆบขๅ‡บ้˜ฒๆŠค
convex_hullๅ‰็งฏไฝฟ็”จ Int64 ่ฎก็ฎ—ๅทฒๆทปๅŠ ๆบขๅ‡บ้˜ฒๆŠค
max_flowtotal_flow ไฝฟ็”จ Int64 ็ดฏ็งฏ๏ผŒ่ฟ”ๅ›ž Int64? ๅŒบๅˆ†ๆ— ๆ•ˆ่พ“ๅ…ฅๅทฒๆทปๅŠ ๆบขๅ‡บ้˜ฒๆŠค
knapsackn ร— capacity > 10โท ๆ—ถ่ฟ”ๅ›ž NoneๅทฒๆทปๅŠ  OOM ไฟๆŠค
lcsn ร— m > 10โท ๆ—ถ่ฟ”ๅ›ž None่ฟ”ๅ›ž Int?๏ผŒๆปšๅŠจๆ•ฐ็ป„ไผ˜ๅŒ– O(min(n,m)) ็ฉบ้—ด
edit_distancen ร— m > 10โท ๆ—ถ่ฟ”ๅ›ž None่ฟ”ๅ›ž Int?๏ผŒๆปšๅŠจๆ•ฐ็ป„ไผ˜ๅŒ– O(min(n,m)) ็ฉบ้—ด
counting_sort่ดŸๅ€ผๆˆ– k > 10โท ๆ—ถ่ฟ”ๅ›ž None่ฟ”ๅ›ž FixedArray[Int]?
pollard_rhoๅคฑ่ดฅ๏ผˆ็ด ๆ•ฐๆˆ–ๆ— ๆณ•ๅˆ†่งฃ๏ผ‰ๆ—ถ่ฟ”ๅ›ž None่ฟ”ๅ›ž Int?๏ผŒไธŽ็ด ๆ•ฐ็ป“ๆžœๅฏๅŒบๅˆ†
primtotal_weight ็ดฏๅŠ ไฝฟ็”จ Int64 ้˜ฒๆบขๅ‡บprim_mst ่ฟ”ๅ›ž (FixedArray[Int], Int64)
segment_treeๅŒบ้—ดๅ’Œๅฏ่ƒฝๆบขๅ‡บ Int32ๆ–‡ๆกฃๅทฒๆ ‡ๆณจ๏ผ›SegmentTree64 ๆไพ› checked ๅ˜ไฝ“่ฟ”ๅ›ž Int?
fenwickๅ‰็ผ€ๅ’Œๅฏ่ƒฝๆบขๅ‡บ Int32ๆ–‡ๆกฃๅทฒๆ ‡ๆณจ๏ผ›Fenwick64 ๆไพ› checked ๅ˜ไฝ“่ฟ”ๅ›ž Int?
kruskaltotal_weight ๅฏ่ƒฝๆบขๅ‡บ Int32ๆ–‡ๆกฃๅทฒๆ ‡ๆณจ๏ผ›kruskal_mst_checked ่ฟ”ๅ›ž (FixedArray[Edge], Int64)?
min_cost_flowtotal_flow/total_cost ไฝฟ็”จ Int64 ็ดฏ็งฏ๏ผŒ่ฟ”ๅ›ž (Int64,Int64)?ๅทฒๆทปๅŠ ๆบขๅ‡บ้˜ฒๆŠค + ่ดŸ็Žฏๆฃ€ๆต‹
dinicๆ‰€ๆœ‰ๅฎน้‡ๅ’Œๆต้‡ไฝฟ็”จ Int64๏ผŒ่ฟ”ๅ›ž Int64?ๅทฒๆทปๅŠ ๆบขๅ‡บ้˜ฒๆŠค + ่ฟญไปฃ DFS
interpolation_searchๅ‡ๆณ•ไฝฟ็”จ Int64 ้˜ฒๆญข่ทจ Int32 ่Œƒๅ›ดๆบขๅ‡บๅทฒๆทปๅŠ ๆบขๅ‡บ้˜ฒๆŠค
gcd64ๆญฃ็กฎๅค„็† Int64::MIN๏ผˆไธๅš้ข„ๅ…ˆๅ–็ปๅฏนๅ€ผ๏ผ‰ๅทฒไฟฎๅค
is_prime64่ง่ฏ้›†ๆ‰ฉๅฑ•ๅˆฐๅ…จ Int64 ่Œƒๅ›ด๏ผˆSorenson & Webster 2015๏ผ‰ๅทฒไฟฎๅค
array_sumarray_sum_checked ่ฟ”ๅ›ž Int?๏ผˆๆบขๅ‡บ่ฟ”ๅ›ž None๏ผ‰ๅทฒๆทปๅŠ ๅฎ‰ๅ…จ็‰ˆๆœฌ
matrixmatmul_int_checked ่ฟ”ๅ›ž FixedArray[Int]?๏ผˆๆบขๅ‡บ่ฟ”ๅ›ž None๏ผ‰ๅทฒๆทปๅŠ ๅฎ‰ๅ…จ็‰ˆๆœฌ
combinatoricsbinomial ๅ…ˆไน˜ๅŽ้™ค๏ผˆInt64 ไธญ้—ด๏ผ‰๏ผŒstirling2 ้ข„ๆฃ€ๆŸฅๆบขๅ‡บๅทฒไฟฎๅค
rolling_hashๅŒๆจกๆ•ฐๅ“ˆๅธŒไฝฟ็”จ Int64 ไธญ้—ด่ฟ็ฎ—๏ผŒๅคงๅญ—็ฌฆไธฒไปๅฏ่ƒฝๆบขๅ‡บๆ–‡ๆกฃๅทฒๆ ‡ๆณจ๏ผŒ่ฐƒ็”จ่€…้œ€ๆณจๆ„
matrix_decompไฝฟ็”จ Double ๆตฎ็‚น่ฟ็ฎ—๏ผŒๆ— ๆ•ดๆ•ฐๆบขๅ‡บ้ฃŽ้™ฉๆตฎ็‚น็ฒพๅบฆ้™ๅˆถ
newton_methodไฝฟ็”จ Double ๆตฎ็‚น่ฟ็ฎ—๏ผŒๆ— ๆ•ดๆ•ฐๆบขๅ‡บ้ฃŽ้™ฉๆตฎ็‚น็ฒพๅบฆ้™ๅˆถ

#ๆณ›ๅž‹ๆžถๆž„

ๅŒ…ๆณ›ๅž‹ๆ”ฏๆŒ่ฏดๆ˜Ž
insertion_sortโœ… FixedArray[T] + cmpๅฎŒๅ…จๆณ›ๅž‹๏ผŒๆ”ฏๆŒไปปๆ„็ฑปๅž‹
selection_sortโœ… FixedArray[T] + cmpๅฎŒๅ…จๆณ›ๅž‹๏ผŒๆ”ฏๆŒไปปๆ„็ฑปๅž‹
merge_sortโœ… FixedArray[T] + cmpๅฎŒๅ…จๆณ›ๅž‹๏ผŒๆ”ฏๆŒไปปๆ„็ฑปๅž‹
quick_sortโœ… FixedArray[T] + cmpๅฎŒๅ…จๆณ›ๅž‹๏ผŒไธ‰ๅ–ไธญ pivot
binary_searchโœ… verified (Int) + generic (unverified)ไฟ็•™ๅทฒ้ชŒ่ฏ Int ็‰ˆๆœฌ + search_generic[T]
linear_searchโœ… verified (Int) + generic (unverified)ไฟ็•™ๅทฒ้ชŒ่ฏ Int ็‰ˆๆœฌ + search_generic[T]
max_elementโœ… verified (Int) + generic (unverified)ไฟ็•™ๅทฒ้ชŒ่ฏ Int ็‰ˆๆœฌ + max_element_generic[T]
min_elementโœ… verified (Int) + generic (unverified)ไฟ็•™ๅทฒ้ชŒ่ฏ Int ็‰ˆๆœฌ + min_element_generic[T]
is_sortedโœ… verified (Int) + generic (unverified)ไฟ็•™ๅทฒ้ชŒ่ฏ Int ็‰ˆๆœฌ + is_sorted_generic[T]
bound_searchโœ… FixedArray[T] + cmplower_bound, upper_bound, binary_search_generic
red_black_treeโœ… RBNode[T] + cmpOkasaki ๆ’ๅ…ฅ + Kahrs ๅˆ ้™ค
binary_heapโœ… comparator + Heap ๅฐ่ฃ…min-heap/max-heap ้€š่ฟ‡ should_swap ็ปŸไธ€
hash_tableโœ… HashTable[K, V] ๆณ›ๅž‹ๅผ€ๆ”พๅฏปๅ€ + ็บฟๆ€งๆŽขๆต‹๏ผŒๅซ StringHashTable ๅฐ่ฃ…
trieโœ… Stringๅซ size/enumerate/longest_prefix

ๆฏ”่พƒๅ™จ็บฆๅฎš๏ผšcmp(a, b) ่ฟ”ๅ›ž่ดŸๆ•ฐ่กจ็คบ a < b๏ผŒ0 ่กจ็คบ็›ธ็ญ‰๏ผŒๆญฃๆ•ฐ่กจ็คบ a > bใ€‚

#็ฑปๅž‹ๅฎ‰ๅ…จ้”™่ฏฏๅค„็†

ๅŒ…ๆ—ง่ฟ”ๅ›žๅ€ผๆ–ฐ่ฟ”ๅ›žๅ€ผ่ฏดๆ˜Ž
bellman_ford็ฉบๆ•ฐ็ป„/-1SPResult?None=ๆ— ๆ•ˆ่พ“ๅ…ฅ, NegativeCycle=่ดŸ็Žฏ, Distances(FixedArray[Int?])=่ท็ฆป
floyd_warshall็ฉบๆ•ฐ็ป„/-1SPResult?ๅŒไธŠ๏ผŒDistances ๅŒ…ๅซ n*n ็Ÿฉ้˜ต
topological_sort็ฉบๆ•ฐ็ป„FixedArray[Int]?None=็Žฏๆˆ–ๆ— ๆ•ˆ่พ“ๅ…ฅ
dijkstraFixedArray[Int] (-1=ไธๅฏ่พพ)FixedArray[Int?]None=ไธๅฏ่พพ
shortest_path-1Int?None=ไธๅฏ่พพๆˆ–ๆ— ๆ•ˆ
bfs_distances็ฉบๆ•ฐ็ป„FixedArray[Int]?None=ๆ— ๆ•ˆ่พ“ๅ…ฅ๏ผŒ-1 ไฟ็•™ไธบไธๅฏ่พพๆ ‡่ฎฐ๏ผˆBFS ่ทณๆ•ฐ โ‰ฅ 0๏ผ‰
bound_search-1 (็ฉบๆ•ฐ็ป„)0็ฉบๆ•ฐ็ป„่ฟ”ๅ›ž 0๏ผˆ= ๆ•ฐ็ป„้•ฟๅบฆ๏ผ‰๏ผŒ่ฏญไน‰ไธ€่‡ด
mod_inverse-1 (ๆ— ้€†ๅ…ƒ)Int?None=ๆ— ้€†ๅ…ƒๆˆ–ๆ— ๆ•ˆ่พ“ๅ…ฅ
union_find find-1 (่ถŠ็•Œ)Int?None=่ถŠ็•Œ

SPResult ๆžšไธพๅฎšไน‰๏ผš
pub enum SPResult {
Distances(FixedArray[Int?]) // Some(d)=ๅฏ่พพ, None=ไธๅฏ่พพ
NegativeCycle // ๆฃ€ๆต‹ๅˆฐ่ดŸ็Žฏ
}

#ไฝฟ็”จๆ–นๅผ

#็Žฏๅขƒ่ฆๆฑ‚

  • MoonBit 0.9+
  • Why3 1.7.2 (ๆŽจ่้€š่ฟ‡ opam ๅฎ‰่ฃ…๏ผšopam install why3.1.7.2)
  • Z3 4.12.x SMT ๆฑ‚่งฃๅ™จ

#่ฟ่กŒ

# ๅ…‹้š†ไป“ๅบ“ git clone https://github.com/Juwan-Hwang/moon-certified.git cd moon-certified # ็ฑปๅž‹ๆฃ€ๆŸฅ moon check # ่ฟ่กŒๆต‹่ฏ• (6432 tests) moon test # ่ฟ่กŒๅฝขๅผๅŒ–้ชŒ่ฏ (้œ€่ฆ Why3 1.7.2 + Z3 4.12.x) moon prove

#ๅœจ้กน็›ฎไธญไฝฟ็”จ

ๅŒ…ๅทฒๅ‘ๅธƒๅˆฐ mooncakes.io๏ผš

moon add Juwan-Hwang/moon-certified

fn main {
// Binary search (verified)
let xs = FixedArray::makei(10, fn(i) { i })
let result = @binary_search.search(xs, 5)
println(result) // Some(5)

// Generic binary search with custom comparator
let words = FixedArray::make(4, "")
words[0] = "apple"; words[1] = "banana"; words[2] = "cherry"; words[3] = "date"
let str_cmp = fn(a : String, b : String) -> Int {
let la = a.length(); let lb = b.length()
let min = if la < lb { la } else { lb }
for k = 0; k < min; k = k + 1 {
let c = a[k].to_int() - b[k].to_int()
if c != 0 { return c }
}
la - lb
}
let idx = @binary_search.search_generic(words, "cherry", str_cmp)
println(idx) // Some(2)

// Generic sorting with comparator
let arr = FixedArray::makei(5, fn(i) { 5 - i })
@insertion_sort.insertion_sort(arr, fn(a, b) { a - b })
println(arr) // [1, 2, 3, 4, 5]

// Bellman-Ford with type-safe error handling
let graph = FixedArray::make(9, 0)
graph[0 * 3 + 1] = 4; graph[0 * 3 + 2] = 5; graph[1 * 3 + 2] = -3
match @advanced.bellman_ford(graph, 3, 0) {
Some(Distances(dist)) => println(dist[2]) // Some(1)
Some(NegativeCycle) => println("negative cycle!")
None => println("invalid input")
}

// Red-Black Tree (Okasaki insertion + Kahrs deletion)
let tree : @red_black_tree.RBNode[String] = @red_black_tree.empty()
let tree = @red_black_tree.insert(tree, "hello", str_cmp)
let tree = @red_black_tree.delete(tree, "hello", str_cmp)
println(@red_black_tree.search(tree, "hello", str_cmp)) // false

// KMP string matching
let pos = @kmp.kmp_search("hello world", "world")
println(pos) // Some(6)

// Fenwick Tree (Binary Indexed Tree)
let arr = FixedArray::makei(10, fn(i) { i + 1 })
let ft = @fenwick.build(arr)
println(@fenwick.query(ft, 5)) // 15 (1+2+3+4+5)

// Hash Table (encapsulated)
let ht = @hash_table.hashtable_new_default(16)
@hash_table.hashtable_insert(ht, "key", 42)
println(@hash_table.hashtable_get(ht, "key")) // Some(42)

// Binary Heap (encapsulated)
let h = @binary_heap.heap_new(20)
h.heap_push(5)
h.heap_push(3)
h.heap_push(7)
println(h.heap_pop()) // Some(3)

// Topological Sort (returns Option)
let dag = FixedArray::make(9, 0)
dag[0 * 3 + 1] = 1; dag[1 * 3 + 2] = 1
match @topological_sort.topo_sort(dag, 3) {
Some(order) => println(order) // [0, 1, 2]
None => println("cycle detected")
}

// Dijkstra (returns FixedArray[Int?])
let n = 3
let g = FixedArray::make(n * n, 0)
g[0 * n + 1] = 2; g[1 * n + 2] = 3
let dist = @dijkstra.dijkstra(g, n, 0)
println(dist[2]) // Some(5)

// Fast power with overflow check
match @fast_power.fast_power_checked(2, 30) {
Some(r) => println(r) // 1073741824
None => println("overflow!")
}

// Union-Find (find returns Int?)
let uf = @union_find.new(5)
let _ = @union_find.union(uf, 0, 1)
println(@union_find.find(uf, 0)) // Some(0) or Some(1)
println(@union_find.find(uf, 99)) // None (out of range)
}

#ๆŠ€ๆœฏๅŽŸ็†

ๆฏไธช้ชŒ่ฏ็ฎ—ๆณ•ๅŒ…ๅซไธค็ฑปๆ–‡ไปถ๏ผš

ๆ–‡ไปถๅ†…ๅฎน
.mbtๅฏๆ‰ง่กŒไปฃ็  + ๅฅ‘็บฆ (proof_require/proof_ensure) + ๅพช็Žฏไธๅ˜้‡ (proof_invariant)
.mbtp้€ป่พ‘่ฐ“่ฏๅฎšไน‰ๅ’Œๅผ•็†

้ชŒ่ฏๆต็จ‹๏ผš

.mbt + .mbtp โ†’ moonc prove โ†’ Why3 + Z3 ๆบไปฃ็  + ่ฐ“่ฏ ็”Ÿๆˆ WhyML ่ฏๆ˜Žๆ‰€ๆœ‰็›ฎๆ ‡

#้ชŒ่ฏ็ญ–็•ฅ

  1. for ็ดฏๅŠ ๅ™จๆจกๅผๆ›ฟไปฃ let mut๏ผšDijkstra ็š„ find-min ๅพช็Žฏไฝฟ็”จ็ดฏๅŠ ๅ™จๆจกๅผ๏ผŒไฝฟ Z3 ่ƒฝ้€š่ฟ‡ๅพช็Žฏไธๅ˜้‡่ฟฝ่ธชๅ˜้‡่พน็•Œ
  2. proof_axiomatized ๅผ•็†๏ผˆ่ฏšๅฎžๆ ‡ๆณจ๏ผ‰๏ผšdijkstra ็š„ graph_index_bound ๆ˜ฏๅ”ฏไธ€็š„ๅ…ฌ็†ๅผ•็†ใ€‚ๅฎƒๅ‡่ฎพไธ€ไธชๆถ‰ๅŠไธคๅ˜้‡็›ธไน˜๏ผˆu * n๏ผ‰็š„้ž็บฟๆ€ง็ฎ—ๆœฏไบ‹ๅฎžใ€‚Z3 ็บฟๆ€ง็ฎ—ๆœฏๆฑ‚่งฃๅ™จๆ— ๆณ•่ฏๆ˜Ž้ž็บฟๆ€งไบ‹ๅฎž๏ผŒๅ› ๆญค่ฏฅๅผ•็†่ขซๅ‡่ฎพ่€Œ้ž่ฏๆ˜Žใ€‚ๆ•ฐๅญฆไธŠๆญฃ็กฎ๏ผˆu*n + v < n*n <= len๏ผ‰๏ผŒไฝ†ๆœช้€š่ฟ‡ Z3 ้ชŒ่ฏใ€‚ไฟ็•™ๆญคๅ…ฌ็†็š„ๆ”ถ็›Š๏ผšZ3 ่ƒฝ้ชŒ่ฏๆ•ฐ็ป„้•ฟๅบฆๅฑžๆ€ง result.length() == n
  3. ๅˆ†ๆฒป้ชŒ่ฏ๏ผšๅฐ†ๅฏ้ชŒ่ฏ้ƒจๅˆ†๏ผˆ่พน็•Œใ€็ปˆๆญขๆ€งใ€ๆ•ฐ็ป„้•ฟๅบฆ๏ผ‰ไธŽไธๅฏ้ชŒ่ฏ้ƒจๅˆ†๏ผˆ้‡ๅŒ–ไธๅ˜้‡ไฟๆŒใ€ๆœ€็Ÿญ่ทฏๅพ„ๆœ€ไผ˜ๆ€ง๏ผ‰ๅˆ†็ฆป
  4. ่พ“ๅ…ฅๆ ก้ชŒ๏ผšๆ‰€ๆœ‰ๅฏๅคฑ่ดฅๆ“ไฝœๅ‡ๅš่พ“ๅ…ฅๆ ก้ชŒ๏ผŒไฝฟ็”จ Option/SPResult ่€Œ้ž้ญ”ๆœฏๅ€ผ
  5. comparator ๅ‚ๆ•ฐๅŒ–๏ผšbinary_heap ็š„ sift ๆ“ไฝœ้€š่ฟ‡ should_swap ๅ‡ฝๆ•ฐๅ‚ๆ•ฐ็ปŸไธ€ไบ† min-heap ๅ’Œ max-heap ๅฎž็Žฐ
  6. ๅทฒ้ชŒ่ฏ + ๆณ›ๅž‹ๅŒๅฑ‚ๆžถๆž„๏ผšๆœ็ดขๅŒ…ไฟ็•™ๅทฒ้ชŒ่ฏ Int ็‰ˆๆœฌไฝœไธบๆญฃ็กฎๆ€งๅ‚่€ƒ๏ผŒๆณ›ๅž‹็‰ˆๆœฌๆ‰ฉๅฑ•ๅˆฐไปปๆ„็ฑปๅž‹ใ€‚ๆณจๆ„๏ผšๆณ›ๅž‹็‰ˆๆœฌๆœฌ่บซไธๅšๅฝขๅผๅŒ–้ชŒ่ฏ๏ผŒไป…้€š่ฟ‡ๆต‹่ฏ•้ชŒ่ฏ

#MoonBit String ๆฏ”่พƒๆณจๆ„ไบ‹้กน

MoonBit ็š„ String ๅ’Œ Bytes ็ฑปๅž‹็š„ Compare trait ไฝฟ็”จ็Ÿญ่ฏๅ…ธๅบ๏ผˆshortlex order๏ผ‰๏ผšๅ…ˆๆฏ”่พƒ้•ฟๅบฆ๏ผŒ้•ฟๅบฆ็Ÿญ็š„ๆ›ดๅฐใ€‚่ฟ™ไธŽๆ ‡ๅ‡†็š„ๅญ—ๅ…ธๅบไธๅŒใ€‚

ไพ‹ๅฆ‚๏ผš"date" < "apple" ๅœจ MoonBit ไธญไธบ true๏ผŒๅ› ไธบ "date" ้•ฟๅบฆไธบ 4๏ผŒ"apple" ้•ฟๅบฆไธบ 5ใ€‚

ๆœฌ้กน็›ฎๅœจ้œ€่ฆๆ ‡ๅ‡†ๅญ—ๅ…ธๅบ็š„ๅœบๆ™ฏ๏ผˆ็บข้ป‘ๆ ‘ใ€ไบŒๅˆ†ๆŸฅๆ‰พใ€ๆŽ’ๅบ็š„ String ๆต‹่ฏ•๏ผ‰ไธญไฝฟ็”จ่‡ชๅฎšไน‰็š„้€ๅญ—่Š‚ๆฏ”่พƒๅ™จ๏ผš

let str_cmp = fn(a : String, b : String) -> Int {
let la = a.length(); let lb = b.length()
let min = if la < lb { la } else { lb }
for k = 0; k < min; k = k + 1 {
let ca = a[k].to_int(); let cb = b[k].to_int()
if ca < cb { return -1 }
if ca > cb { return 1 }
}
la - lb
}

#้กน็›ฎ็ป“ๆž„

moon-certified/ โ”œโ”€โ”€ search/ โ”‚ โ”œโ”€โ”€ binary_search/ โœ… ไบŒๅˆ†ๆŸฅๆ‰พ (verified Int) + generic (unverified) โ”‚ โ”œโ”€โ”€ bound_search/ ๐Ÿ”’ lower_bound/upper_bound (generic) โ”‚ โ”œโ”€โ”€ linear_search/ โœ… ็บฟๆ€งๆŸฅๆ‰พ (verified Int) + generic (unverified) โ”‚ โ”œโ”€โ”€ max_element/ โœ… ๆœ€ๅคงๅ…ƒ็ด  (verified Int) + generic (unverified) โ”‚ โ”œโ”€โ”€ min_element/ โœ… ๆœ€ๅฐๅ…ƒ็ด  (verified Int) + generic (unverified) โ”‚ โ”œโ”€โ”€ interpolation_search/๐Ÿ”’ ๆ’ๅ€ผๆœ็ดข (Int64 ้˜ฒๆบขๅ‡บ) โ”‚ โ””โ”€โ”€ exponential_search/ ๐Ÿ”’ ๆŒ‡ๆ•ฐๆœ็ดข (galloping search) โ”‚ โ”œโ”€โ”€ fibonacci_search/ ๐Ÿ”’ ๆ–ๆณข้‚ฃๅฅ‘ๆœ็ดข (8 tests) โ”‚ โ”œโ”€โ”€ jump_search/ ๐Ÿ”’ ่ทณ่ทƒๆœ็ดข (8 tests) โ”‚ โ”œโ”€โ”€ ternary_search/ ๐Ÿ”’ ไธ‰ๅˆ†ๆœ็ดข (ๅ•ๅณฐๅ‡ฝๆ•ฐๆžๅ€ผ, 7 tests) โ”‚ โ”œโ”€โ”€ quickselect/ ๐Ÿ”’ ๅฟซ้€Ÿ้€‰ๆ‹ฉ (็ฌฌ k ๅฐ, 8 tests) โ”‚ โ”œโ”€โ”€ ball_tree/ ๐Ÿ”’ Ball-Tree (ๅบฆ้‡็ฉบ้—ด่ฟ‘้‚ป, 8 tests) โ”‚ โ”œโ”€โ”€ vp_tree/ ๐Ÿ”’ VP-Tree (vantage point ๆ ‘, 8 tests) โ”‚ โ”œโ”€โ”€ lsh/ ๐Ÿ”’ LSH ๅฑ€้ƒจๆ•ๆ„Ÿๅ“ˆๅธŒ (่ฟ‘ไผผ่ฟ‘้‚ป, 7 tests) โ”‚ โ””โ”€โ”€ hnsw/ ๐Ÿ”’ HNSW (ๅˆ†ๅฑ‚ๅฏๅฏผ่ˆชๅฐไธ–็•Œๅ›พ, 8 tests) โ”œโ”€โ”€ sorting/ โ”‚ โ”œโ”€โ”€ insertion_sort/ ๐Ÿ”’ ๆ’ๅ…ฅๆŽ’ๅบ (generic, 12 tests) โ”‚ โ”œโ”€โ”€ selection_sort/ ๐Ÿ”’ ้€‰ๆ‹ฉๆŽ’ๅบ (generic, 10 tests) โ”‚ โ”œโ”€โ”€ merge_sort/ ๐Ÿ”’ ๅฝ’ๅนถๆŽ’ๅบ (generic, 15 tests, ็จณๅฎšๆ€งๅทฒ้ชŒ่ฏ) โ”‚ โ”œโ”€โ”€ quick_sort/ ๐Ÿ”’ ๅฟซ้€ŸๆŽ’ๅบ (generic, 15 tests) โ”‚ โ”œโ”€โ”€ heap_sort/ ๐Ÿ”’ ๅ †ๆŽ’ๅบ (generic, 12 tests) โ”‚ โ”œโ”€โ”€ counting_sort/ ๐Ÿ”’ ่ฎกๆ•ฐๆŽ’ๅบ (OOM ้˜ฒๆŠค, 12 tests) โ”‚ โ”œโ”€โ”€ radix_sort/ ๐Ÿ”’ ๅŸบๆ•ฐๆŽ’ๅบ LSD (stable, 11 tests) โ”‚ โ””โ”€โ”€ is_sorted/ โœ… ๆœ‰ๅบๆ€งๆฃ€ๆŸฅ (verified Int) + generic (unverified) โ”‚ โ”œโ”€โ”€ external_sort/ ๐Ÿ”’ ๅค–้ƒจๆŽ’ๅบ (k ่ทฏๅฝ’ๅนถ, binary_heap ๅค็”จ, 8 tests) โ”œโ”€โ”€ containers/ โ”‚ โ”œโ”€โ”€ binary_heap/ ๐Ÿ”’ ไบŒๅ‰ๅ † (Heap ๅฐ่ฃ… + HeapG[T] + decrease_key, 17 tests) โ”‚ โ”œโ”€โ”€ hash_table/ ๐Ÿ”’ ๅ“ˆๅธŒ่กจ K,V ๆณ›ๅž‹ (StringHashTable ๅฐ่ฃ…, 19 tests) โ”‚ โ”œโ”€โ”€ lru_cache/ ๐Ÿ”’ LRU Cache O(1) (HashMap+ๅŒๅ‘้“พ่กจ, 8 tests) โ”‚ โ”œโ”€โ”€ ttl_cache/ ๐Ÿ”’ TTL Cache (่ฟ‡ๆœŸๆธ…็† + LRU, 10 tests) โ”‚ โ”œโ”€โ”€ w_tinylfu/ ๐Ÿ”’ W-TinyLFU ็ผ“ๅญ˜ (Window+SLRU+CMS, 11 tests) โ”‚ โ”œโ”€โ”€ bloom_filter/ ๐Ÿ”’ ๅธƒ้š†่ฟ‡ๆปคๅ™จ (ๆœ€ไผ˜ๅ‚ๆ•ฐ, 9 tests) โ”‚ โ”œโ”€โ”€ cuckoo_filter/ ๐Ÿ”’ ๅธƒ่ฐท้ธŸ่ฟ‡ๆปคๅ™จ (ๆ”ฏๆŒๅˆ ้™ค, 8 tests) โ”‚ โ”œโ”€โ”€ count_min_sketch/ ๐Ÿ”’ Count-Min Sketch (ๅŒๅ“ˆๅธŒ+ๅˆๅนถ, 10 tests) โ”‚ โ”œโ”€โ”€ hyperloglog/ ๐Ÿ”’ HyperLogLog ๅŸบๆ•ฐไผฐ่ฎก (10 tests) โ”‚ โ”œโ”€โ”€ union_find/ ๐Ÿ”’ ๅนถๆŸฅ้›† (pub struct, findโ†’Int?, 16 tests) โ”‚ โ”œโ”€โ”€ priority_queue/ ๐Ÿ”’ ไผ˜ๅ…ˆ้˜Ÿๅˆ— (HeapG[T], ๅŠจๆ€ๆ‰ฉๅฎน, decrease_key, 15 tests) โ”‚ โ”œโ”€โ”€ monotonic/ ๐Ÿ”’ ๅ•่ฐƒๆ ˆ/ๅ•่ฐƒ้˜Ÿๅˆ— (next greater/smaller, ๆป‘ๅŠจ็ช—ๅฃ, 21 tests) โ”‚ โ”œโ”€โ”€ bitset/ ๐Ÿ”’ ไฝ้›† (ไฝ่ฟ็ฎ—, 8 tests) โ”‚ โ”œโ”€โ”€ deque/ ๐Ÿ”’ ๅŒ็ซฏ้˜Ÿๅˆ— (็Žฏๅฝข็ผ“ๅ†ฒๅŒบ, 8 tests) โ”‚ โ”œโ”€โ”€ consistent_hash/ ๐Ÿ”’ ไธ€่‡ดๆ€งๅ“ˆๅธŒ (่™šๆ‹Ÿ่Š‚็‚น, 7 tests) โ”‚ โ”œโ”€โ”€ crc/ ๐Ÿ”’ CRC ๆ ก้ชŒ (CRC32, 7 tests) โ”‚ โ”œโ”€โ”€ hash_utils/ ๐Ÿ”’ ๅ“ˆๅธŒๅทฅๅ…ท (next_pow2, Fibonacci ๅ“ˆๅธŒ, 6 tests) โ”‚ โ”œโ”€โ”€ lsm_tree/ ๐Ÿ”’ LSM-Tree (ๅ†…ๅญ˜ MemTable+SSTable+Bloom, 10 tests) โ”‚ โ”œโ”€โ”€ roaring_bitmap/ ๐Ÿ”’ Roaring Bitmap (ๅŽ‹็ผฉไฝๅ›พ, 8 tests) โ”‚ โ”œโ”€โ”€ count_sketch/ ๐Ÿ”’ Count Sketch (้ข‘็އไผฐ่ฎก, 7 tests) โ”‚ โ””โ”€โ”€ concurrent/ ๐Ÿ”’ ๅนถๅ‘ๅŽŸ่ฏญ (RingBuffer/BoundedQueue/SnapshotMap, 9 tests) โ”œโ”€โ”€ trees/ โ”‚ โ”œโ”€โ”€ bst/ ๐Ÿ”’ ไบŒๅ‰ๆœ็ดขๆ ‘ (่ฟญไปฃๅฎž็Žฐ, ๆ— ๆ ˆๆบขๅ‡บ้ฃŽ้™ฉ, 22 tests) โ”‚ โ”œโ”€โ”€ avl/ ๐Ÿ”’ AVL ๅนณ่กกๆ ‘ (O(1) size, 17 tests) โ”‚ โ”œโ”€โ”€ red_black_tree/ ๐Ÿ”’ ็บข้ป‘ๆ ‘ Okasaki+Kahrs (generic, 23 tests) โ”‚ โ”œโ”€โ”€ btree/ ๐Ÿ”’ B-Tree (16 tests) โ”‚ โ”œโ”€โ”€ segment_tree/ ๐Ÿ”’ ็บฟๆฎตๆ ‘ + LazySegTree (19 tests) โ”‚ โ”œโ”€โ”€ fenwick/ ๐Ÿ”’ ๆ ‘็Šถๆ•ฐ็ป„ (14 tests) โ”‚ โ”œโ”€โ”€ trie/ ๐Ÿ”’ ๅญ—ๅ…ธๆ ‘ (sparse children, autocomplete, wildcard search, 17 tests) โ”‚ โ”œโ”€โ”€ skip_list/ ๐Ÿ”’ ่ทณ่กจ (O(log n) expected, 13 tests) โ”‚ โ”œโ”€โ”€ treap/ ๐Ÿ”’ Treap (per-instance RNG, O(log n) expected, 13 tests) โ”‚ โ”œโ”€โ”€ splay/ ๐Ÿ”’ ไผธๅฑ•ๆ ‘ (iterative bottom-up, amortized O(log n), 10 tests) โ”‚ โ”œโ”€โ”€ sparse_table/ ๐Ÿ”’ Sparse Table RMQ (ๆณ›ๅž‹, O(1) ๅน‚็ญ‰ๆŸฅ่ฏข, 13 tests) โ”‚ โ”œโ”€โ”€ segment_tree_lazy/ ๐Ÿ”’ ็บฟๆฎตๆ ‘ Lazy Propagation (ๅŒบ้—ดไฟฎๆ”น+ๅŒบ้—ดๆŸฅ่ฏข, 9 tests) โ”‚ โ”œโ”€โ”€ link_cut/ ๐Ÿ”’ Link-Cut Tree (Sleator-Tarjan splay, 12 tests) โ”‚ โ”œโ”€โ”€ persistent_vector/ ๐Ÿ”’ Persistent Vector (็ป“ๆž„ๅ…ฑไบซ, O(log n), 9 tests) โ”‚ โ”œโ”€โ”€ bplus_tree/ ๐Ÿ”’ B+ Tree (ๅถๅญ้“พ่กจ, ่Œƒๅ›ดๆŸฅ่ฏข, 10 tests) โ”‚ โ”œโ”€โ”€ hamt/ ๐Ÿ”’ HAMT (Hash Array Mapped Trie, 10 tests) โ”‚ โ”œโ”€โ”€ li_chao_tree/ ๐Ÿ”’ ๆŽ่ถ…ๆ ‘ (็บฟๆฎต็ปดๆŠคไธ€ๆฌกๅ‡ฝๆ•ฐๆœ€ๅคงๅ€ผ, 8 tests) โ”‚ โ”œโ”€โ”€ persistent_segment_tree/ ๐Ÿ”’ ๅฏๆŒไน…ๅŒ–็บฟๆฎตๆ ‘ (k ๅคงๅ€ผๆŸฅ่ฏข, 8 tests) โ”‚ โ”œโ”€โ”€ segment_tree_beats/ ๐Ÿ”’ Segment Tree Beats (ๅŒบ้—ดๆœ€ๅ€ผๅ– chmax/chmin, 8 tests) โ”‚ โ”œโ”€โ”€ bit_2d/ ๐Ÿ”’ ไบŒ็ปดๆ ‘็Šถๆ•ฐ็ป„ (8 tests) โ”‚ โ””โ”€โ”€ mo_algorithm/ ๐Ÿ”’ Mo ็ฎ—ๆณ• (็ฆป็บฟๅŒบ้—ดๆŸฅ่ฏข, 8 tests) โ”œโ”€โ”€ graph/ โ”‚ โ”œโ”€โ”€ bfs_dfs/ ๐Ÿ”’ BFS/DFS ้‚ปๆŽฅ็Ÿฉ้˜ต็‰ˆ (Option ่ฟ”ๅ›ž, 34 tests) โ”‚ โ”œโ”€โ”€ adj_list/ ๐Ÿ”’ ้‚ปๆŽฅ่กจ็จ€็–ๅ›พ (O(V+E) ็ฉบ้—ด, 23 tests) โ”‚ โ”œโ”€โ”€ topological_sort/ ๐Ÿ”’ ๆ‹“ๆ‰‘ๆŽ’ๅบ ้‚ปๆŽฅ็Ÿฉ้˜ต็‰ˆ (Option ่ฟ”ๅ›ž, 12 tests) โ”‚ โ”œโ”€โ”€ topological_sort_adj/ ๐Ÿ”’ ๆ‹“ๆ‰‘ๆŽ’ๅบ ้‚ปๆŽฅ่กจ็‰ˆ Kahn (16 tests) โ”‚ โ”œโ”€โ”€ kruskal/ ๐Ÿ”’ ๆœ€ๅฐ็”Ÿๆˆๆ ‘ (14 tests) โ”‚ โ”œโ”€โ”€ prim/ ๐Ÿ”’ Prim MST (11 tests) โ”‚ โ”œโ”€โ”€ scc/ ๐Ÿ”’ Tarjan SCC ่ฟญไปฃ็‰ˆ (12 tests) โ”‚ โ”œโ”€โ”€ dijkstra/ โš ๏ธ Dijkstra (partial verified: array bounds only, FixedArray[Int?]) โ”‚ โ”œโ”€โ”€ dijkstra_heap/ ๐Ÿ”’ ๅ †ไผ˜ๅŒ– Dijkstra (Int64 ๆบขๅ‡บ้˜ฒๆŠค, 11 tests) โ”‚ โ”œโ”€โ”€ johnson/ ๐Ÿ”’ Johnson ๅ…จๆบๆœ€็Ÿญ่ทฏ (่ดŸๆƒ+่ดŸ็Žฏๆฃ€ๆต‹, 11 tests) โ”‚ โ”œโ”€โ”€ bidirectional_bfs/ ๐Ÿ”’ ๅŒๅ‘ BFS (13 tests) โ”‚ โ”œโ”€โ”€ a_star/ ๐Ÿ”’ A* ๆœ็ดข (ไบŒๅ‰ๅ †+่ทฏๅพ„้‡ๅปบ, 11 tests) โ”‚ โ”œโ”€โ”€ max_flow/ ๐Ÿ”’ Edmonds-Karp ๆœ€ๅคงๆต (12 tests) โ”‚ โ”œโ”€โ”€ advanced/ ๐Ÿ”’ Bellman-Ford + Floyd-Warshall (SPResult, 19 tests) โ”‚ โ”œโ”€โ”€ min_cost_flow/ ๐Ÿ”’ ๆœ€ๅฐ่ดน็”จๆœ€ๅคงๆต SPFA (linked-forward-star, 9 tests) โ”‚ โ””โ”€โ”€ two_sat/ ๐Ÿ”’ 2-SAT (implication graph + Tarjan SCC, 8 tests) โ”‚ โ”œโ”€โ”€ dinic/ ๐Ÿ”’ Dinic ๆœ€ๅคงๆต (level graph + iterative blocking flow, 8 tests) โ”‚ โ”œโ”€โ”€ lca/ ๐Ÿ”’ LCA ๆœ€่ฟ‘ๅ…ฌๅ…ฑ็ฅ–ๅ…ˆ (binary lifting, O(log n) query, 11 tests) โ”‚ โ”œโ”€โ”€ bridge_articulation/ ๐Ÿ”’ ๆกฅ+ๅ‰ฒ็‚น (Tarjan, ๅคš้‡่พนๅค„็†, 15 tests) โ”‚ โ”œโ”€โ”€ euler_path/ ๐Ÿ”’ ๆฌงๆ‹‰่ทฏๅพ„/ๅ›ž่ทฏ (Hierholzer, ่ฟญไปฃๅฎž็Žฐ, 14 tests) โ”‚ โ”œโ”€โ”€ hungarian/ ๐Ÿ”’ ๅŒˆ็‰™ๅˆฉ็ฎ—ๆณ• (ไบŒๅˆ†ๅ›พๆœ€ไผ˜ๅŒน้…, O(nยณ), 10 tests) โ”‚ โ”œโ”€โ”€ hopcroft_karp/ ๐Ÿ”’ Hopcroft-Karp ไบŒๅˆ†ๅŒน้… (O(EโˆšV), 9 tests) โ”‚ โ”œโ”€โ”€ stoer_wagner/ ๐Ÿ”’ Stoer-Wagner ๅ…จๅฑ€ๆœ€ๅฐๅ‰ฒ (O(Vยณ), 10 tests) โ”‚ โ”œโ”€โ”€ max_clique/ ๐Ÿ”’ Bron-Kerbosch ๆœ€ๅคงๅ›ข (pivot+้€€ๅŒ–ๅบฆ, 12 tests) โ”‚ โ”œโ”€โ”€ edmonds_blossom/ ๐Ÿ”’ Edmonds ไธ€่ˆฌๅ›พๆœ€ๅคงๅŒน้… (BFS ๅขžๅนฟ, 8 tests) โ”‚ โ”œโ”€โ”€ dominator_tree/ ๐Ÿ”’ ๆ”ฏ้…ๆ ‘ (Lengauer-Tarjan, 8 tests) โ”‚ โ”œโ”€โ”€ gomory_hu/ ๐Ÿ”’ Gomory-Hu ๆ ‘ (ๅ…จๅฏนๆœ€ๅฐๅ‰ฒ, 8 tests) โ”‚ โ”œโ”€โ”€ hlpp/ ๐Ÿ”’ HLPP ๆœ€ๅคงๆต (้ข„ๆตๆŽจ่ฟ›, 8 tests) โ”‚ โ”œโ”€โ”€ hld/ ๐Ÿ”’ ้‡้“พๅ‰–ๅˆ† (่ทฏๅพ„ไฟฎๆ”น/ๆŸฅ่ฏข, 8 tests) โ”‚ โ”œโ”€โ”€ centroid_decomposition/ ๐Ÿ”’ ้‡ๅฟƒๅˆ†่งฃ (็‚นๅˆ†ๆฒป, 8 tests) โ”‚ โ”œโ”€โ”€ virtual_tree/ ๐Ÿ”’ ่™šๆ ‘ (ๅ…ณ้”ฎ็‚นๅŽ‹็ผฉ, 8 tests) โ”‚ โ”œโ”€โ”€ min_steiner_tree/ ๐Ÿ”’ ๆœ€ๅฐ Steiner ๆ ‘ (DP, 8 tests) โ”‚ โ”œโ”€โ”€ graph_coloring/ ๐Ÿ”’ ๅ›พ็€่‰ฒ (DSATUR ๅฏๅ‘ๅผ, 8 tests) โ”‚ โ”œโ”€โ”€ flow_with_bounds/ ๐Ÿ”’ ไธŠไธ‹็•Œ็ฝ‘็ปœๆต (8 tests) โ”‚ โ””โ”€โ”€ pagerank/ ๐Ÿ”’ PageRank (ๅน‚่ฟญไปฃ, 7 tests) โ”œโ”€โ”€ string/ โ”‚ โ”œโ”€โ”€ kmp/ ๐Ÿ”’ KMP (17 tests) โ”‚ โ”œโ”€โ”€ rabin_karp/ ๐Ÿ”’ Rabin-Karp (25 tests) โ”‚ โ”œโ”€โ”€ suffix_array/ ๐Ÿ”’ ๅŽ็ผ€ๆ•ฐ็ป„ (15 tests) โ”‚ โ”œโ”€โ”€ z_function/ ๐Ÿ”’ Z ็ฎ—ๆณ• (z_array + z_search, 19 tests) โ”‚ โ”œโ”€โ”€ manacher/ ๐Ÿ”’ Manacher ๅ›žๆ–‡ (longest/count/radii, 23 tests) โ”‚ โ”œโ”€โ”€ aho_corasick/ ๐Ÿ”’ Aho-Corasick ๅคšๆจกๅผๅŒน้… (sparse children, CJK ๅฎ‰ๅ…จ, 12 tests) โ”‚ โ”œโ”€โ”€ boyer_moore/ ๐Ÿ”’ Boyer-Moore ๅญ—็ฌฆไธฒๆœ็ดข (bad-char + good-suffix, 14 tests) โ”‚ โ”œโ”€โ”€ lcp_array/ ๐Ÿ”’ LCP ๆ•ฐ็ป„ (Kasai ็ฎ—ๆณ•, O(n), 13 tests) โ”‚ โ”œโ”€โ”€ suffix_automaton/ ๐Ÿ”’ ๅŽ็ผ€่‡ชๅŠจๆœบ SAM (ๅญไธฒๆŸฅ่ฏข, ไธๅŒๅญไธฒ่ฎกๆ•ฐ, 12 tests) โ”‚ โ”œโ”€โ”€ suffix_tree/ ๐Ÿ”’ ๅŽ็ผ€ๆ ‘ (Ukkonen O(n), 12 tests) โ”‚ โ”œโ”€โ”€ palindromic_tree/ ๐Ÿ”’ ๅ›žๆ–‡ๆ ‘ Eertree (ๆ‰€ๆœ‰ๅ›žๆ–‡ๅญไธฒ, 11 tests) โ”‚ โ”œโ”€โ”€ rolling_hash/ ๐Ÿ”’ ๆปšๅŠจๅ“ˆๅธŒ (ๅŒๆจกๆ•ฐ้˜ฒ็ขฐๆ’ž, 12 tests) โ”‚ โ”œโ”€โ”€ lyndon/ ๐Ÿ”’ Lyndon ๅˆ†่งฃ (Duval ็ฎ—ๆณ•, ๆœ€ๅฐ่กจ็คบ, 13 tests) โ”‚ โ”œโ”€โ”€ fm_index/ ๐Ÿ”’ FM-Index (่ฎกๆ•ฐ/ๅฎšไฝ, 8 tests) โ”‚ โ”œโ”€โ”€ wavelet_tree/ ๐Ÿ”’ Wavelet Tree (rank/select, 8 tests) โ”‚ โ””โ”€โ”€ regex/ ๐Ÿ”’ ๆญฃๅˆ™่กจ่พพๅผๅผ•ๆ“Ž (Thompson NFA, 10 tests) โ”‚ /// **ๅญ—็ฌฆไธฒ็ฎ—ๆณ•็ผบๅคฑๅฃฐๆ˜Ž**๏ผšๅฝ“ๅ‰ 22 ไธชๅญ—็ฌฆไธฒๅŒ…่ฆ†็›–ไบ†ๆ ธๅฟƒๆจกๅผๅŒน้…ๅ’ŒๅŽ็ผ€็ป“ๆž„๏ผŒ โ”‚ /// ไฝ†ไปฅไธ‹็ฎ—ๆณ•ๅฐšๆœชๅฎž็Žฐ๏ผšde Bruijn ๅบๅˆ—ใ€Lyndon suffix array ๆž„้€  (LA factor)ใ€ โ”‚ /// runs (Lempel-Ziv ่งฃๆž)ใ€Suffix Array โ†” Tree ไบ’่ฝฌๅทฅๅ…ทๅ‡ฝๆ•ฐใ€‚ โ”œโ”€โ”€ number_theory/ โ”‚ โ”œโ”€โ”€ gcd/ โš ๏ธ GCD (partial verified, handles Int::MIN) โ”‚ โ”œโ”€โ”€ fast_power/ โš ๏ธ ๅฟซ้€Ÿๅน‚ (partial verified + checked variant) โ”‚ โ”œโ”€โ”€ int64_utils/ ๐Ÿ”’ Int64 ๅทฅๅ…ท (mod64/gcd64/pow_mod64/is_prime64, 21 tests) โ”‚ โ”œโ”€โ”€ prime/ ๐Ÿ”’ ็ด ๆ•ฐ็ญ› + ๆ‰ฉๅฑ•ๆฌงๅ‡ ้‡Œๅพ— (OOM ้˜ฒๆŠค, 18 tests) โ”‚ โ”œโ”€โ”€ miller_rabin/ ๐Ÿ”’ Miller-Rabin ็ด ๆ€งๆฃ€้ชŒ (deterministic, 11 tests) โ”‚ โ”œโ”€โ”€ crt/ ๐Ÿ”’ ไธญๅ›ฝๅ‰ฉไฝ™ๅฎš็† (coprime + non-coprime, 20 tests) โ”‚ โ”œโ”€โ”€ bsgs/ ๐Ÿ”’ BSGS ็ฆปๆ•ฃๅฏนๆ•ฐ (O(โˆšp), 8 tests) โ”‚ โ”œโ”€โ”€ pollard_rho/ ๐Ÿ”’ Pollard-Rho ๆ•ดๆ•ฐๅˆ†่งฃ (Miller-Rabin + Brent, 10 tests) โ”‚ โ”œโ”€โ”€ euler_sieve/ ๐Ÿ”’ Euler ็บฟๆ€ง็ญ› (O(n) + O(log n) ๅ› ๅผๅˆ†่งฃ, 11 tests) โ”‚ โ””โ”€โ”€ ntt/ ๐Ÿ”’ ๆ•ฐ่ฎบๅ˜ๆข NTT (O(n log n) ๅคš้กนๅผไน˜ๆณ•, 11 tests) โ”‚ โ”œโ”€โ”€ bigint/ ๐Ÿ”’ ๅคงๆ•ดๆ•ฐ่ฟ็ฎ— (ๅŠ ๅ‡ไน˜้™ค, 10 tests) โ”‚ โ”œโ”€โ”€ cipolla/ ๐Ÿ”’ Cipolla ๅนณๆ–นๆ น (ๆจก็ด ๆ•ฐ, 17 tests) โ”‚ โ”œโ”€โ”€ finite_field/ ๐Ÿ”’ ๆœ‰้™ๅŸŸ GF(p) ่ฟ็ฎ— (7 tests) โ”‚ โ”œโ”€โ”€ mobius/ ๐Ÿ”’ Mรถbius ๅๆผ” (7 tests) โ”‚ โ”œโ”€โ”€ polynomial/ ๐Ÿ”’ ๅคš้กนๅผ่ฟ็ฎ— (NTT ไน˜ๆณ•, 8 tests) โ”‚ โ”œโ”€โ”€ primitive_root/ ๐Ÿ”’ ๅŽŸๆ น (7 tests) โ”‚ โ”œโ”€โ”€ quadratic_residue/ ๐Ÿ”’ ไบŒๆฌกๅ‰ฉไฝ™ (Tonelli-Shanks, 7 tests) โ”‚ โ”œโ”€โ”€ reed_solomon/ ๐Ÿ”’ Reed-Solomon ็ผ–่งฃ็  (8 tests) โ”‚ โ””โ”€โ”€ pohlig_hellman/ ๐Ÿ”’ Pohlig-Hellman ็ฆปๆ•ฃๅฏนๆ•ฐ (16 tests) โ”‚ โ”œโ”€โ”€ carmichael/ ๐Ÿ”’ Carmichael ๅ‡ฝๆ•ฐ (5 tests) โ”‚ โ”œโ”€โ”€ aks/ ๐Ÿ”’ AKS ็กฎๅฎšๆ€ง็ด ๆ•ฐๆต‹่ฏ• (5 tests) โ”‚ โ”œโ”€โ”€ quadratic_sieve/ ๐Ÿ”’ ไบŒๆฌก็ญ›ๆณ•ๅ› ๅผๅˆ†่งฃ (5 tests) โ”‚ โ””โ”€โ”€ lehman_factor/ ๐Ÿ”’ Lehman ๅ› ๅผๅˆ†่งฃ (5 tests) โ”œโ”€โ”€ math/ โ”‚ โ”œโ”€โ”€ array_sum/ โš ๏ธ ๆ•ฐ็ป„ๆฑ‚ๅ’Œ (partial verified + checked variant) โ”‚ โ”œโ”€โ”€ combinatorics/ ๐Ÿ”’ ็ป„ๅˆๆ•ฐๅญฆ (็ป„ๅˆๆ•ฐ/Catalan/Stirling, Int64 ้˜ฒๆบขๅ‡บ, 15 tests) โ”‚ โ”œโ”€โ”€ matrix/ ๐Ÿ”’ ็Ÿฉ้˜ต่ฟ็ฎ— (ไน˜ๆณ•+้ซ˜ๆ–ฏๆถˆๅ…ƒ+่กŒๅˆ—ๅผ, checked variant, 12 tests) โ”‚ โ”œโ”€โ”€ matrix_decomp/ ๐Ÿ”’ ็Ÿฉ้˜ตๅˆ†่งฃ LU/QR/SVD (้ƒจๅˆ†ไธปๅ…ƒ/Householder/Jacobi, 16 tests) โ”‚ โ”œโ”€โ”€ newton_method/ ๐Ÿ”’ Newton ่ฟญไปฃๆณ• (ๆ นๆฑ‚่งฃ+nๆฌกๆ น+ๅนณๆ–นๆ น, 23 tests) โ”‚ โ”œโ”€โ”€ berlekamp_massey/ ๐Ÿ”’ Berlekamp-Massey ็บฟๆ€ง้€’ๆŽจ (O(nยฒ), 10 tests) โ”‚ โ”œโ”€โ”€ fft/ ๐Ÿ”’ FFT ๅฟซ้€Ÿๅ‚…้‡Œๅถๅ˜ๆข (Cooley-Tukey, 11 tests) โ”‚ โ””โ”€โ”€ simplex/ ๐Ÿ”’ ๅ•็บฏๅฝขๆณ• ็บฟๆ€ง่ง„ๅˆ’ (ไธค้˜ถๆฎต, 10 tests) โ”œโ”€โ”€ dp/ โ”‚ โ”œโ”€โ”€ dp/ ๐Ÿ”’ LCS + ็ผ–่พ‘่ท็ฆป + ่ƒŒๅŒ… (OOM ้˜ฒๆŠค, 21 tests) โ”‚ โ”œโ”€โ”€ lis/ ๐Ÿ”’ LIS O(n log n) (14 tests) โ”‚ โ”œโ”€โ”€ interval_dp/ ๐Ÿ”’ ๅŒบ้—ด DP (็Ÿฉ้˜ต้“พไน˜+ๆœ€ไผ˜BST+burst balloons+็Ÿณๅญๅˆๅนถ, 22 tests) โ”‚ โ”œโ”€โ”€ tree_dp/ ๐Ÿ”’ ๆ ‘ๅฝข DP (ๆœ€ๅคง็‹ฌ็ซ‹้›†+็›ดๅพ„+ๅŒน้…+ๆ ‘่ƒŒๅŒ…, ่ฟญไปฃDFS, 19 tests) โ”‚ โ””โ”€โ”€ digit_dp/ ๐Ÿ”’ ๆ•ฐไฝ DP (่ฎกๆ•ฐ+ๅ„ไฝๆ•ฐๅญ—ๅ’Œ+ไธๅซๆŸๆ•ฐๅญ—, 11 tests) โ”œโ”€โ”€ geometry/ โ”‚ โ”œโ”€โ”€ convex_hull/ ๐Ÿ”’ Graham ๅ‡ธๅŒ… (Int64 ้˜ฒๆบขๅ‡บ, 9 tests) โ”‚ โ”œโ”€โ”€ andrew_hull/ ๐Ÿ”’ Andrew ๅ•่ฐƒ้“พๅ‡ธๅŒ… (Int64 ้˜ฒๆบขๅ‡บ, 11 tests) โ”‚ โ”œโ”€โ”€ convex_hull_3d/ ๐Ÿ”’ 3D ๅ‡ธๅŒ… (้šๆœบๅขž้‡ๆณ•+ๅœฐๅนณ็บฟ่พน, 12 tests) โ”‚ โ”œโ”€โ”€ half_plane_intersection/ ๐Ÿ”’ ๅŠๅนณ้ขไบค (S&I ็ฎ—ๆณ•+ๅŒ็ซฏ้˜Ÿๅˆ—, 9 tests) โ”‚ โ”œโ”€โ”€ kd_tree/ ๐Ÿ”’ KD-Tree 2D ็ฉบ้—ด็ดขๅผ• (NN + range search, 13 tests) โ”‚ โ”œโ”€โ”€ rotating_calipers/ ๐Ÿ”’ ๆ—‹่ฝฌๅกๅฃณ (ๅ‡ธๅŒ…็›ดๅพ„+ๅฎฝๅบฆ, CCW/CW, 14 tests) โ”‚ โ”œโ”€โ”€ closest_pair/ ๐Ÿ”’ ๆœ€่ฟ‘็‚นๅฏน (ๅˆ†ๆฒป O(n log n), 9 tests) โ”‚ โ”œโ”€โ”€ segment_ops/ ๐Ÿ”’ ็บฟๆฎต็›ธไบค+็‚นๅœจๅคš่พนๅฝขๅ†… (็ฒพ็กฎๆ•ดๆ•ฐๅ‰็งฏ, 33 tests) โ”‚ โ”œโ”€โ”€ delaunay/ ๐Ÿ”’ Delaunay ไธ‰่ง’ๅ‰–ๅˆ† (ๅขž้‡ๆณ•, 8 tests) โ”‚ โ”œโ”€โ”€ voronoi/ ๐Ÿ”’ Voronoi ๅ›พ (Delaunay ๅฏนๅถ, 7 tests) โ”‚ โ”œโ”€โ”€ dynamic_hull/ ๐Ÿ”’ ๅŠจๆ€ๅ‡ธๅŒ… (ๅœจ็บฟๆ’ๅ…ฅ, 8 tests) โ”‚ โ”œโ”€โ”€ min_enclosing_circle/ ๐Ÿ”’ ๆœ€ๅฐๅŒ…ๅ›ดๅœ† (้šๆœบๅขž้‡, 7 tests) โ”‚ โ”œโ”€โ”€ minkowski_sum/ ๐Ÿ”’ Minkowski ๅ’Œ (ๅ‡ธๅคš่พนๅฝข, 8 tests) โ”‚ โ””โ”€โ”€ polygon_boolean/ ๐Ÿ”’ ๅคš่พนๅฝขๅธƒๅฐ”่ฟ็ฎ— (ๅนถ/ไบค/ๅทฎ, 8 tests) โ”œโ”€โ”€ game_theory/ โ”‚ โ”œโ”€โ”€ nim_sg/ ๐Ÿ”’ Nim ๅšๅผˆ (Sprague-Grundy ๅฎš็†, 13 tests) โ”‚ โ”œโ”€โ”€ alpha_beta/ ๐Ÿ”’ Alpha-Beta ๅ‰ชๆž / Negamax (Tic-Tac-Toe ้ชŒ่ฏ, 7 tests) โ”‚ โ”œโ”€โ”€ mcts/ ๐Ÿ”’ Monte Carlo Tree Search (UCT, 7 tests) โ”‚ โ”œโ”€โ”€ gale_shapley/ ๐Ÿ”’ Gale-Shapley ็จณๅฎšๅŒน้… (10 tests) โ”‚ โ””โ”€โ”€ shapley_value/ ๐Ÿ”’ Shapley ๅ€ผ (็ฒพ็กฎ+Monte Carlo, 5 tests) โ”‚ โ”œโ”€โ”€ negamax/ ๐Ÿ”’ Negamax ๆœ็ดข (Alpha-Beta ๅ‰ชๆž, 3 tests) โ”‚ โ””โ”€โ”€ transposition_table/ ๐Ÿ”’ ็ฝฎๆข่กจ (Zobrist ๅ“ˆๅธŒ, 6 tests) โ”œโ”€โ”€ random/ โ”‚ โ”œโ”€โ”€ reservoir_sampling/ ๐Ÿ”’ ๆฐดๅบ“้‡‡ๆ ท (O(n) ๅœจ็บฟ้‡‡ๆ ท, 8 tests) โ”‚ โ”œโ”€โ”€ weighted_sampling/ ๐Ÿ”’ Alias Method + ๅŠ ๆƒๆฐดๅบ“้‡‡ๆ ท (SplitMix64, 8 tests) โ”‚ โ”œโ”€โ”€ fisher_yates/ ๐Ÿ”’ Fisher-Yates ๆด—็‰Œ (Partial Shuffle, 7 tests) โ”‚ โ”œโ”€โ”€ mersenne_twister/ ๐Ÿ”’ Mersenne Twister MT19937 (32/64-bit, 8 tests) โ”‚ โ”œโ”€โ”€ pcg/ ๐Ÿ”’ PCG ้šๆœบๆ•ฐ็”Ÿๆˆๅ™จ (32/64-bit, 6 tests) โ”‚ โ”œโ”€โ”€ xoshiro/ ๐Ÿ”’ Xoshiro256**/512** PRNG (8 tests) โ”‚ โ”œโ”€โ”€ gaussian_sampling/ ๐Ÿ”’ Box-Muller ้ซ˜ๆ–ฏ้‡‡ๆ ท (6 tests) โ”‚ โ”œโ”€โ”€ zobrist_hash/ ๐Ÿ”’ Zobrist ๅ“ˆๅธŒ (ๆฃ‹็›˜็Šถๆ€ๅ“ˆๅธŒ, 5 tests) โ”‚ โ””โ”€โ”€ mcmc/ ๐Ÿ”’ Metropolis-Hastings MCMC (14 tests) โ”‚ โ””โ”€โ”€ monte_carlo/ ๐Ÿ”’ Monte Carlo ็งฏๅˆ† (7 tests) โ”œโ”€โ”€ sorting/ โ”‚ โ”œโ”€โ”€ timsort/ ๐Ÿ”’ TimSort (run ๆฃ€ๆต‹+ๅฝ’ๅนถๆ ˆ, ็จณๅฎš, 12 tests) โ”‚ โ”œโ”€โ”€ introsort/ ๐Ÿ”’ Introsort (ๅฟซๆŽ’+ๅ †ๆŽ’+ๆ’ๅ…ฅๆŽ’, 10 tests) โ”‚ โ”œโ”€โ”€ pdq_sort/ ๐Ÿ”’ Pattern-Defeating Quicksort (10 tests) โ”‚ โ””โ”€โ”€ bucket_sort/ ๐Ÿ”’ ๆกถๆŽ’ๅบ (10 tests) โ”œโ”€โ”€ containers/ โ”‚ โ”œโ”€โ”€ treiber_stack/ ๐Ÿ”’ Treiber ๆ ˆ (ๅ•็บฟ็จ‹ CAS ๆจกๆ‹Ÿ, 8 tests) โ”‚ โ”œโ”€โ”€ mpmc_queue/ ๐Ÿ”’ MPMC ้˜Ÿๅˆ— (ๅ•็บฟ็จ‹ CAS ๆจกๆ‹Ÿ, Vyukov, 8 tests) โ”‚ โ”œโ”€โ”€ concurrent_hash_map/ ๐Ÿ”’ Concurrent HashMap (ๅ•็บฟ็จ‹ๅˆ†ๆฎต้”ๆจกๆ‹Ÿ, 9 tests) โ”‚ โ””โ”€โ”€ work_stealing/ ๐Ÿ”’ Work-Stealing ้˜Ÿๅˆ— (ๅ•็บฟ็จ‹ๆจกๆ‹Ÿ, Chase-Lev, 8 tests) โ”‚ โ”œโ”€โ”€ lock_free_queue/ ๐Ÿ”’ ๆ— ้”้˜Ÿๅˆ— (ๅ•็บฟ็จ‹ๆจกๆ‹Ÿ, 8 tests) โ”‚ โ”œโ”€โ”€ skip_list/ ๐Ÿ”’ ่ทณ่กจ (็‹ฌ็ซ‹ๅŒ…, 4 tests) โ”‚ โ”œโ”€โ”€ counting_bloom/ ๐Ÿ”’ ่ฎกๆ•ฐๅธƒ้š†่ฟ‡ๆปคๅ™จ (5 tests) โ”‚ โ”œโ”€โ”€ cuckoo_hashmap/ ๐Ÿ”’ ๅธƒ่ฐท้ธŸๅ“ˆๅธŒ่กจ (6 tests) โ”‚ โ””โ”€โ”€ bimap/ ๐Ÿ”’ ๅŒๅ‘ๆ˜ ๅฐ„ (5 tests) โ”‚ โ””โ”€โ”€ monotonic/ ๐Ÿ”’ ๅ•่ฐƒๆ ˆ/ๅ•่ฐƒ้˜Ÿๅˆ— (21 tests) โ”œโ”€โ”€ trees/ โ”‚ โ”œโ”€โ”€ rope/ ๐Ÿ”’ Rope (ๅนณ่กกๆ ‘ๅญ—็ฌฆไธฒ, O(log n), 12 tests) โ”‚ โ”œโ”€โ”€ interval_tree/ ๐Ÿ”’ ๅŒบ้—ดๆ ‘ (้‡ๅ ๆŸฅ่ฏข, 10 tests) โ”‚ โ”œโ”€โ”€ range_tree/ ๐Ÿ”’ ่Œƒๅ›ดๆ ‘ (2D ๆญฃไบค่Œƒๅ›ดๆŸฅ่ฏข, 8 tests) โ”‚ โ”œโ”€โ”€ r_tree/ ๐Ÿ”’ R-Tree (็ฉบ้—ด็ดขๅผ•, 10 tests) โ”‚ โ””โ”€โ”€ fibonacci_heap/ ๐Ÿ”’ Fibonacci ๅ † (O(1) decrease-key, 12 tests) โ”œโ”€โ”€ graph/ โ”‚ โ”œโ”€โ”€ chu_liu/ ๐Ÿ”’ Chu-Liu ๆœ€ๅฐๆ ‘ๅฝขๅ›พ (Edmonds, 8 tests) โ”‚ โ”œโ”€โ”€ k_shortest_paths/ ๐Ÿ”’ K ๆœ€็Ÿญ่ทฏ (Yen ็ฎ—ๆณ•, 8 tests) โ”‚ โ”œโ”€โ”€ min_cost_flow/ ๐Ÿ”’ ๆœ€ๅฐ่ดน็”จๆต (SSP+SPFA, 9 tests) โ”‚ โ””โ”€โ”€ tree_isomorphism/ ๐Ÿ”’ ๆ ‘ๅŒๆž„ (AHU ็ฎ—ๆณ•, 7 tests) โ”‚ โ”œโ”€โ”€ push_relabel/ ๐Ÿ”’ Push-Relabel ๆœ€ๅคงๆต (5 tests) โ”‚ โ”œโ”€โ”€ planar_test/ ๐Ÿ”’ ๅนณ้ขๅ›พๅˆคๅฎš (5 tests) โ”‚ โ””โ”€โ”€ isomorphism/ ๐Ÿ”’ ๅ›พๅŒๆž„ (VF2 ็ฎ—ๆณ•, 5 tests) โ”œโ”€โ”€ string/ โ”‚ โ”œโ”€โ”€ dawg/ ๐Ÿ”’ DAWG (ๅŽ‹็ผฉๅญ—ๅ…ธ, 10 tests) โ”‚ โ”œโ”€โ”€ sa_is/ ๐Ÿ”’ SA-IS ๅŽ็ผ€ๆ•ฐ็ป„ (O(n), 17 tests) โ”‚ โ”œโ”€โ”€ bwt/ ๐Ÿ”’ Burrows-Wheeler ๅ˜ๆข (15 tests) โ”‚ โ””โ”€โ”€ suffix_balanced_tree/ ๐Ÿ”’ ๅŽ็ผ€ๅนณ่กกๆ ‘ (ๅฝ’ๅนถๆŽ’ๅบ, 8 tests) โ”‚ โ”œโ”€โ”€ unicode_normalization/ ๐Ÿ”’ Unicode ่ง„่ŒƒๅŒ– (NFC/NFD/NFKC/NFKD, 6 tests) โ”‚ โ””โ”€โ”€ encoding_conversion/ ๐Ÿ”’ ็ผ–็ ่ฝฌๆข (UTF-8/UTF-16/GBK, 6 tests) โ”œโ”€โ”€ geometry/ โ”‚ โ”œโ”€โ”€ segment_intersection/๐Ÿ”’ ้€š็”จ็บฟๆฎตๆฑ‚ไบค (Bentley-Ottmann, 10 tests) โ”‚ โ”œโ”€โ”€ point_in_polygon/ ๐Ÿ”’ ็‚นๅœจๅคš่พนๅฝขๅ†… (ๅฐ„็บฟๆณ•, 8 tests) โ”‚ โ”œโ”€โ”€ polygon_ops/ ๐Ÿ”’ ๅคš่พนๅฝขๆ“ไฝœ (้ข็งฏ/้‡ๅฟƒ/่ฃๅ‰ช, 10 tests) โ”‚ โ””โ”€โ”€ bentley_ottmann/ ๐Ÿ”’ ๆ‰ซๆ็บฟ็บฟๆฎตๆฑ‚ไบค (8 tests) โ”œโ”€โ”€ dp/ โ”‚ โ”œโ”€โ”€ aliens_trick/ ๐Ÿ”’ Aliens' Trick (ๆ‹‰ๆ ผๆœ—ๆ—ฅๆพๅผ›, 8 tests) โ”‚ โ”œโ”€โ”€ knapsack_opt/ ๐Ÿ”’ ่ƒŒๅŒ…ไผ˜ๅŒ– (ๅคš้‡/ไบŒ็ปด/ๅ•่ฐƒ้˜Ÿๅˆ—, 10 tests) โ”‚ โ”œโ”€โ”€ matrix_chain/ ๐Ÿ”’ ็Ÿฉ้˜ต้“พไน˜ DP (8 tests) โ”‚ โ”œโ”€โ”€ monotone_queue_dp/ ๐Ÿ”’ ๅ•่ฐƒ้˜Ÿๅˆ—ไผ˜ๅŒ– DP (8 tests) โ”‚ โ””โ”€โ”€ smawk/ ๐Ÿ”’ SMAWK ็ฎ—ๆณ• (ๅฎŒๅ…จๅ•่ฐƒ็Ÿฉ้˜ต่กŒๆœ€ๅฐ, 10 tests) โ”‚ โ”œโ”€โ”€ bitmask_dp/ ๐Ÿ”’ ็ŠถๅŽ‹ DP (TSP/้›†ๅˆ่ฆ†็›–, 10 tests) โ”‚ โ”œโ”€โ”€ convex_hull_trick/ ๐Ÿ”’ ๅ‡ธๅฃณๆŠ€ๅทง DP (ๆ–œ็އไผ˜ๅŒ–, 8 tests) โ”‚ โ”œโ”€โ”€ divide_conquer_dp/ ๐Ÿ”’ ๅˆ†ๆฒป DP (8 tests) โ”‚ โ”œโ”€โ”€ knuth_opt/ ๐Ÿ”’ Knuth ไผ˜ๅŒ– DP (8 tests) โ”‚ โ”œโ”€โ”€ plug_dp/ ๐Ÿ”’ ๆ’ๅคด DP (่ฝฎๅป“็บฟ, 7 tests) โ”‚ โ””โ”€โ”€ sos_dp/ ๐Ÿ”’ SOS DP (ๅญ้›†ๅ’Œ, 8 tests) โ”œโ”€โ”€ math/ โ”‚ โ”œโ”€โ”€ fwht/ ๐Ÿ”’ ๅฟซ้€Ÿ Walsh-Hadamard ๅ˜ๆข (7 tests) โ”‚ โ”œโ”€โ”€ numerical_integration/๐Ÿ”’ ๆ•ฐๅ€ผ็งฏๅˆ† (ๆขฏๅฝข/Simpson/่‡ช้€‚ๅบ”/Romberg, 9 tests) โ”‚ โ”œโ”€โ”€ ode_solver/ ๐Ÿ”’ ODE ๆฑ‚่งฃๅ™จ (Euler/RK4/RK45, 8 tests) โ”‚ โ”œโ”€โ”€ interpolation/ ๐Ÿ”’ ๆ’ๅ€ผ (Lagrange/Newton, 7 tests) โ”‚ โ”œโ”€โ”€ least_squares/ ๐Ÿ”’ ๆœ€ๅฐไบŒไน˜ๆณ• (็บฟๆ€ง/ๅคš้กนๅผ, 8 tests) โ”‚ โ”œโ”€โ”€ special_functions/ ๐Ÿ”’ ็‰นๆฎŠๅ‡ฝๆ•ฐ (Gamma/Erf/Bessel, 10 tests) โ”‚ โ”œโ”€โ”€ conjugate_gradient/ ๐Ÿ”’ ๅ…ฑ่ฝญๆขฏๅบฆๆณ• (SPD ็บฟๆ€ง็ณป็ปŸๆฑ‚่งฃ, 7 tests) โ”‚ โ”œโ”€โ”€ gmres/ ๐Ÿ”’ GMRES (้žๅฏน็งฐ็บฟๆ€ง็ณป็ปŸๆฑ‚่งฃ, 6 tests) โ”‚ โ”œโ”€โ”€ lbfgs/ ๐Ÿ”’ L-BFGS ๆ‹Ÿ็‰›้กฟไผ˜ๅŒ–ๅ™จ (ๅคง่ง„ๆจกไผ˜ๅŒ–, 9 tests) โ”‚ โ”œโ”€โ”€ autodiff/ ๐Ÿ”’ ่‡ชๅŠจๅพฎๅˆ† (ๅ‰ๅ‘ๆจกๅผ, ๅŒๆ•ฐ, 19 tests) โ”‚ โ””โ”€โ”€ sparse_matrix/ ๐Ÿ”’ ็จ€็–็Ÿฉ้˜ต (CSR ๆ ผๅผ, 7 tests) โ”‚ โ”œโ”€โ”€ eigenvalue/ ๐Ÿ”’ ็‰นๅพๅ€ผๅˆ†่งฃ (Jacobi ๆ–นๆณ•, 5 tests) โ”‚ โ”œโ”€โ”€ qr_pivoting/ ๐Ÿ”’ QR ๅˆ†่งฃ (ๅˆ—ไธปๅ…ƒ, 5 tests) โ”‚ โ”œโ”€โ”€ groebner/ ๐Ÿ”’ Grรถbner ๅŸบ (Buchberger ็ฎ—ๆณ•, 5 tests) โ”‚ โ”œโ”€โ”€ polynomial_factor/ ๐Ÿ”’ ๅคš้กนๅผๅ› ๅผๅˆ†่งฃ (5 tests) โ”‚ โ”œโ”€โ”€ ilp/ ๐Ÿ”’ ๆ•ดๆ•ฐ็บฟๆ€ง่ง„ๅˆ’ (5 tests) โ”‚ โ””โ”€โ”€ sdp/ ๐Ÿ”’ ๅŠๆญฃๅฎš่ง„ๅˆ’ (Jacobi ็‰นๅพๅ€ผ, 7 tests) โ”œโ”€โ”€ crypto/ โ”‚ โ”œโ”€โ”€ sha256/ ๐Ÿ”’ SHA-256 ๅ“ˆๅธŒ (10 tests) โ”‚ โ”œโ”€โ”€ sha512/ ๐Ÿ”’ SHA-512 ๅ“ˆๅธŒ (8 tests) โ”‚ โ”œโ”€โ”€ sha3/ ๐Ÿ”’ SHA-3 (Keccak) ๅ“ˆๅธŒ (8 tests) โ”‚ โ”œโ”€โ”€ sha1/ ๐Ÿ”’ SHA-1 ๅ“ˆๅธŒ (10 tests) โ”‚ โ”œโ”€โ”€ blake2/ ๐Ÿ”’ BLAKE2 ๅ“ˆๅธŒ (8 tests) โ”‚ โ”œโ”€โ”€ blake3/ ๐Ÿ”’ BLAKE3 ๅ“ˆๅธŒ (8 tests) โ”‚ โ”œโ”€โ”€ hmac/ ๐Ÿ”’ HMAC ๆถˆๆฏ่ฎค่ฏ (7 tests) โ”‚ โ”œโ”€โ”€ chacha20/ ๐Ÿ”’ ChaCha20 ๆตๅฏ†็  (8 tests) โ”‚ โ”œโ”€โ”€ chacha20_poly1305/ ๐Ÿ”’ ChaCha20-Poly1305 AEAD (7 tests) โ”‚ โ”œโ”€โ”€ xchacha20/ ๐Ÿ”’ XChaCha20 (HChaCha20 + ChaCha20, 8 tests) โ”‚ โ”œโ”€โ”€ poly1305/ ๐Ÿ”’ Poly1305 MAC (7 tests) โ”‚ โ”œโ”€โ”€ hkdf/ ๐Ÿ”’ HKDF ๅฏ†้’ฅๆดพ็”Ÿ (7 tests) โ”‚ โ”œโ”€โ”€ pbkdf2/ ๐Ÿ”’ PBKDF2 ๅฏ†็ ๆดพ็”Ÿ (6 tests) โ”‚ โ”œโ”€โ”€ scrypt/ ๐Ÿ”’ scrypt ๅฏ†็ ๅ“ˆๅธŒ (6 tests) โ”‚ โ”œโ”€โ”€ bcrypt/ ๐Ÿ”’ bcrypt ๅฏ†็ ๅ“ˆๅธŒ (8 tests) โ”‚ โ”œโ”€โ”€ argon2/ ๐Ÿ”’ Argon2 ๅฏ†็ ๅ“ˆๅธŒ (6 tests) โ”‚ โ”œโ”€โ”€ aes/ ๐Ÿ”’ AES ๅฏน็งฐๅŠ ๅฏ† (constant-time S-box, 8 tests) โ”‚ โ”œโ”€โ”€ aes_ccm/ ๐Ÿ”’ AES-CCM AEAD (7 tests) โ”‚ โ”œโ”€โ”€ rsa/ ๐Ÿ”’ RSA ้žๅฏน็งฐๅŠ ๅฏ† (OAEP/PSS, 7 tests) โ”‚ โ”œโ”€โ”€ ecdsa/ ๐Ÿ”’ ECDSA P-256 (RFC 6979, 13 tests) โ”‚ โ”œโ”€โ”€ ed25519/ ๐Ÿ”’ Ed25519 ็ญพๅ (RFC 8032, 13 tests) โ”‚ โ”œโ”€โ”€ x25519/ ๐Ÿ”’ X25519 ๅฏ†้’ฅไบคๆข (RFC 7748, 8 tests) โ”‚ โ”œโ”€โ”€ secp256k1/ ๐Ÿ”’ secp256k1 (Bitcoin/Ethereum, 10 tests) โ”‚ โ”œโ”€โ”€ csprng/ ๐Ÿ”’ CSPRNG ๅฎ‰ๅ…จ้šๆœบๆ•ฐ (6 tests) โ”‚ โ”œโ”€โ”€ base64/ ๐Ÿ”’ Base64 ็ผ–็  (7 tests) โ”‚ โ”œโ”€โ”€ base32/ ๐Ÿ”’ Base32 ็ผ–็  (9 tests) โ”‚ โ””โ”€โ”€ hex/ ๐Ÿ”’ Hex ็ผ–่งฃ็  (14 tests) โ”œโ”€โ”€ compression/ โ”‚ โ”œโ”€โ”€ huffman/ ๐Ÿ”’ Huffman ็ผ–็  (8 tests) โ”‚ โ”œโ”€โ”€ lz4/ ๐Ÿ”’ LZ4 ๅŽ‹็ผฉ (7 tests) โ”‚ โ”œโ”€โ”€ lz77/ ๐Ÿ”’ LZ77 ๅŽ‹็ผฉ (7 tests) โ”‚ โ”œโ”€โ”€ lzw/ ๐Ÿ”’ LZW ๅŽ‹็ผฉ (7 tests) โ”‚ โ”œโ”€โ”€ arithmetic_coding/ ๐Ÿ”’ ็ฎ—ๆœฏ็ผ–็  (7 tests) โ”‚ โ”œโ”€โ”€ bwt_compress/ ๐Ÿ”’ BWT ๅŽ‹็ผฉ (6 tests) โ”‚ โ”œโ”€โ”€ deflate/ ๐Ÿ”’ DEFLATE ๅŽ‹็ผฉ (RFC 1951, 8 tests) โ”‚ โ”œโ”€โ”€ gzip/ ๐Ÿ”’ gzip ๅฎนๅ™จ (RFC 1952, 7 tests) โ”‚ โ”œโ”€โ”€ zlib/ ๐Ÿ”’ zlib ๅฎนๅ™จ (RFC 1950, 7 tests) โ”‚ โ”œโ”€โ”€ snappy/ ๐Ÿ”’ Snappy ๅŽ‹็ผฉ (7 tests) โ”‚ โ”œโ”€โ”€ zstd/ ๐Ÿ”’ Zstandard ๅŽ‹็ผฉ (6 tests) โ”‚ โ””โ”€โ”€ brotli/ ๐Ÿ”’ Brotli ๅŽ‹็ผฉ (7 tests) โ”œโ”€โ”€ ml/ โ”‚ โ”œโ”€โ”€ kmeans/ ๐Ÿ”’ K-Means++ ่š็ฑป (8 tests) โ”‚ โ”œโ”€โ”€ knn/ ๐Ÿ”’ K-่ฟ‘้‚ป (KD-Tree ๅŠ ้€Ÿ, 8 tests) โ”‚ โ”œโ”€โ”€ dbscan/ ๐Ÿ”’ DBSCAN ๅฏ†ๅบฆ่š็ฑป (7 tests) โ”‚ โ”œโ”€โ”€ pca/ ๐Ÿ”’ ไธปๆˆๅˆ†ๅˆ†ๆž PCA (8 tests) โ”‚ โ”œโ”€โ”€ svm/ ๐Ÿ”’ ๆ”ฏๆŒๅ‘้‡ๆœบ SVM (8 tests) โ”‚ โ”œโ”€โ”€ logistic_regression/ ๐Ÿ”’ ้€ป่พ‘ๅ›žๅฝ’ (8 tests) โ”‚ โ”œโ”€โ”€ decision_tree/ ๐Ÿ”’ ๅ†ณ็ญ–ๆ ‘ CART (8 tests) โ”‚ โ”œโ”€โ”€ random_forest/ ๐Ÿ”’ ้šๆœบๆฃฎๆž— (ๅˆ†็ฑป+ๅ›žๅฝ’+OOB, 8 tests) โ”‚ โ”œโ”€โ”€ gradient_boosting/ ๐Ÿ”’ ๆขฏๅบฆๆๅ‡ (GBDT, 7 tests) โ”‚ โ”œโ”€โ”€ adaboost/ ๐Ÿ”’ AdaBoost (6 tests) โ”‚ โ”œโ”€โ”€ mlp/ ๐Ÿ”’ ๅคšๅฑ‚ๆ„Ÿ็Ÿฅๆœบ MLP (8 tests) โ”‚ โ”œโ”€โ”€ gmm/ ๐Ÿ”’ ้ซ˜ๆ–ฏๆททๅˆๆจกๅž‹ GMM (EM, 7 tests) โ”‚ โ”œโ”€โ”€ hierarchical_clustering/ ๐Ÿ”’ ๅฑ‚ๆฌก่š็ฑป (7 tests) โ”‚ โ”œโ”€โ”€ gaussian_process/ ๐Ÿ”’ ้ซ˜ๆ–ฏ่ฟ‡็จ‹ๅ›žๅฝ’ (6 tests) โ”‚ โ”œโ”€โ”€ naive_bayes/ ๐Ÿ”’ ๆœด็ด ่ดๅถๆ–ฏ (8 tests) โ”‚ โ””โ”€โ”€ model_evaluation/ ๐Ÿ”’ ๆจกๅž‹่ฏ„ไผฐ (accuracy/precision/recall/F1/AUC, 10 tests) โ”œโ”€โ”€ stats/ โ”‚ โ”œโ”€โ”€ descriptive/ ๐Ÿ”’ ๆ่ฟฐ็ปŸ่ฎก (9 tests) โ”‚ โ”œโ”€โ”€ linear_regression/ ๐Ÿ”’ ็บฟๆ€งๅ›žๅฝ’ (8 tests) โ”‚ โ”œโ”€โ”€ hypothesis_testing/ ๐Ÿ”’ ๅ‡่ฎพๆฃ€้ชŒ (8 tests) โ”‚ โ”œโ”€โ”€ correlation/ ๐Ÿ”’ ็›ธๅ…ณ็ณปๆ•ฐ (Pearson/Spearman, 7 tests) โ”‚ โ”œโ”€โ”€ confidence_interval/ ๐Ÿ”’ ็ฝฎไฟกๅŒบ้—ด (7 tests) โ”‚ โ”œโ”€โ”€ bootstrap/ ๐Ÿ”’ Bootstrap ้‡้‡‡ๆ ท (7 tests) โ”‚ โ”œโ”€โ”€ distributions/ ๐Ÿ”’ ๆฆ‚็އๅˆ†ๅธƒ (Normal/Exp/Binomial/Poisson/Beta/t/Chi2/F/Gamma, 38 tests) โ”‚ โ”œโ”€โ”€ anova/ ๐Ÿ”’ ๆ–นๅทฎๅˆ†ๆž ANOVA (8 tests) โ”‚ โ””โ”€โ”€ nonparametric/ ๐Ÿ”’ ้žๅ‚ๆ•ฐๆฃ€้ชŒ (Mann-Whitney/Wilcoxon/Kruskal-Wallis, 8 tests) โ”œโ”€โ”€ serialization/ โ”‚ โ”œโ”€โ”€ json/ ๐Ÿ”’ JSON ็ผ–่งฃ็  (7 tests) โ”‚ โ”œโ”€โ”€ msgpack/ ๐Ÿ”’ MessagePack ็ผ–่งฃ็  (7 tests) โ”‚ โ”œโ”€โ”€ csv/ ๐Ÿ”’ CSV ็ผ–่งฃ็  (6 tests) โ”‚ โ”œโ”€โ”€ toml/ ๐Ÿ”’ TOML 1.0.0 ่งฃๆžๅ™จ (15 tests) โ”‚ โ”œโ”€โ”€ yaml/ ๐Ÿ”’ YAML ่งฃๆžๅ™จ (8 tests) โ”‚ โ”œโ”€โ”€ cbor/ ๐Ÿ”’ CBOR ็ผ–่งฃ็  (7 tests) โ”‚ โ””โ”€โ”€ protobuf/ ๐Ÿ”’ Protobuf ็ผ–่งฃ็  (6 tests) โ”œโ”€โ”€ time/ โ”‚ โ””โ”€โ”€ chrono/ ๐Ÿ”’ ๆ—ฅๆœŸๆ—ถ้—ดๅบ“ (ISO 8601, Duration, ๆ—ถๅŒบ, 15 tests) โ”œโ”€โ”€ utils/ โ”‚ โ”œโ”€โ”€ (utils) ๐Ÿ”’ ๅ…ฑไบซๅทฅๅ…ท (swap/str_cmp/next_pow2/encoding/approx_eq) โ”‚ โ”œโ”€โ”€ prng/ ๐Ÿ”’ PRNG (SplitMix64/XorShift64/LCG) โ”‚ โ”œโ”€โ”€ itertools/ ๐Ÿ”’ itertools (range/repeat/enumerate/window/chunk/fold) โ”‚ โ”œโ”€โ”€ structured_logging/ ๐Ÿ”’ ็ป“ๆž„ๅŒ–ๆ—ฅๅฟ— (6 tests) โ”‚ โ””โ”€โ”€ error_chain/ ๐Ÿ”’ ้”™่ฏฏ้“พ (5 tests) โ”œโ”€โ”€ test/ โ”‚ โ”œโ”€โ”€ property_test/ ๐Ÿ”’ QuickCheck ้ฃŽๆ ผๅฑžๆ€งๆต‹่ฏ•ๆก†ๆžถ (้šๆœบ่พ“ๅ…ฅ็”Ÿๆˆ + ๅไพ‹็ผฉๅ‡) โ”‚ โ”œโ”€โ”€ fuzz/ ๐Ÿ”’ Fuzz ๆต‹่ฏ• + ๅฏนๆŠ—ๆ€ง่พ“ๅ…ฅๆต‹่ฏ• โ”‚ โ”œโ”€โ”€ stress/ ๐Ÿ”’ ๅŽ‹ๅŠ›ๆต‹่ฏ• (ๆŽ’ๅบ็ฝฎๆข้ชŒ่ฏ, LIS ๅญๅบๅˆ—้ชŒ่ฏ) โ”‚ โ”œโ”€โ”€ test_utils/ ๐Ÿ”’ ๅ…ฑไบซๆต‹่ฏ•ๅทฅๅ…ท (ๆถˆ้™ค str_cmp ้‡ๅค) โ”‚ โ””โ”€โ”€ coverage/ ๐Ÿ”’ ๆต‹่ฏ•่ฆ†็›–็އๆŠฅๅ‘Š โ”œโ”€โ”€ finance/ โ”‚ โ”œโ”€โ”€ black_scholes/ ๐Ÿ”’ Black-Scholes ๆœŸๆƒๅฎšไปท (11 tests) โ”‚ โ”œโ”€โ”€ portfolio_optimization/ ๐Ÿ”’ ๆŠ•่ต„็ป„ๅˆไผ˜ๅŒ– (Markowitz/Black-Litterman, 8 tests) โ”‚ โ”œโ”€โ”€ risk_management/ ๐Ÿ”’ ้ฃŽ้™ฉ็ฎก็† (VaR/CVaR/ๅŽ‹ๅŠ›ๆต‹่ฏ•, 8 tests) โ”‚ โ”œโ”€โ”€ greeks/ ๐Ÿ”’ Greeks ้ฃŽ้™ฉๆ•ๆ„Ÿๅบฆ (Delta/Gamma/Vega/Theta/Rho, 9 tests) โ”‚ โ”œโ”€โ”€ time_series/ ๐Ÿ”’ ๆ—ถ้—ดๅบๅˆ—ๅˆ†ๆž (ARIMA/GARCH/ADF, 12 tests) โ”‚ โ”œโ”€โ”€ execution/ ๐Ÿ”’ ๆ‰ง่กŒ็ฎ—ๆณ• (TWAP/VWAP/Implementation Shortfall, 8 tests) โ”‚ โ””โ”€โ”€ backtest/ ๐Ÿ”’ ๅ›žๆต‹ๆก†ๆžถ (ไบ‹ไปถ้ฉฑๅŠจ/็ปฉๆ•ˆๅˆ†ๆž, 9 tests) โ”œโ”€โ”€ docs/ โ”‚ โ””โ”€โ”€ API_STABILITY.md ๐Ÿ“‹ API ็จณๅฎšๆ€ง็ญ–็•ฅไธŽ็‰ˆๆœฌๅކๅฒ โ”œโ”€โ”€ benchmarks/ ๐Ÿ”’ ๆ€ง่ƒฝๅŸบๅ‡†ๆต‹่ฏ• (wall-clock + ๅคๆ‚ๅบฆ้ชŒ่ฏ) โ”œโ”€โ”€ .github/workflows/ โ”‚ โ”œโ”€โ”€ ci.yml โœ… GitHub Actions CI (check + test + prove, Ubuntu/macOS/Windows) โ”‚ โ”œโ”€โ”€ codeql.yml โœ… CodeQL ๅฎ‰ๅ…จๅˆ†ๆž โ”‚ โ”œโ”€โ”€ dependency-review.yml โœ… ไพ่ต–ๅฎกๆŸฅ โ”‚ โ”œโ”€โ”€ nightly.yml โœ… ๆฏๆ—ฅๆž„ๅปบ (flaky test ๆฃ€ๆต‹) โ”‚ โ””โ”€โ”€ release.yml โœ… ๅ‘ๅธƒๆต็จ‹ (checksums + tag) โ”œโ”€โ”€ CHANGELOG.md ๐Ÿ“‹ Semantic Versioning changelog โ”œโ”€โ”€ moon.mod โ”œโ”€โ”€ LICENSE โ””โ”€โ”€ README.md

ๅ›พไพ‹๏ผšโœ… = ๅฎŒๆ•ดๆญฃ็กฎๆ€ง้ชŒ่ฏ | ๐Ÿ”ถ = ๅขžๅผบ้ชŒ่ฏ | โš ๏ธ = ้ƒจๅˆ†้ชŒ่ฏ | ๐Ÿ”’ = ไป…ๆต‹่ฏ•้ชŒ่ฏ

#ๆต‹่ฏ•็ปŸ่ฎก

ๅŒ…ๆต‹่ฏ•ๆ•ฐmoon proveๆณ›ๅž‹
binary_search8โœ… ๅฎŒๆ•ดๆญฃ็กฎๆ€งโœ… generic
bound_search11๐Ÿ”’ testedโœ… generic
linear_search8โœ… ๅฎŒๆ•ดๆญฃ็กฎๆ€งโœ… generic
max_element7โœ… ๅฎŒๆ•ดๆญฃ็กฎๆ€งโœ… generic
min_element7โœ… ๅฎŒๆ•ดๆญฃ็กฎๆ€งโœ… generic
interpolation_search11๐Ÿ”’ testedโŒ
exponential_search11๐Ÿ”’ testedโŒ
insertion_sort12โš ๏ธ ้ƒจๅˆ†้ชŒ่ฏโœ… generic
selection_sort10๐Ÿ”’ testedโœ… generic
merge_sort15โš ๏ธ ้ƒจๅˆ†้ชŒ่ฏโœ… generic
quick_sort15๐Ÿ”’ testedโœ… generic
heap_sort12๐Ÿ”’ testedโœ… generic
counting_sort12๐Ÿ”’ testedโŒ
radix_sort11๐Ÿ”’ testedโŒ
is_sorted10โœ… ๅฎŒๆ•ดๆญฃ็กฎๆ€งโœ… generic
binary_heap17โš ๏ธ ้ƒจๅˆ†้ชŒ่ฏโœ… HeapG[T]
hash_table19๐Ÿ”’ testedโœ… HashTable[K,V]
lru_cache8๐Ÿ”’ testedโŒ
bloom_filter9๐Ÿ”’ testedโŒ
union_find16โš ๏ธ ้ƒจๅˆ†้ชŒ่ฏโŒ (pub struct)
bst19๐Ÿ”’ testedโŒ
avl17๐Ÿ”’ testedโŒ
red_black_tree23โš ๏ธ ้ƒจๅˆ†้ชŒ่ฏโœ… generic
btree16๐Ÿ”’ testedโŒ
segment_tree19๐Ÿ”’ testedโŒ
fenwick14๐Ÿ”’ testedโŒ
trie17๐Ÿ”’ testedโœ… String
skip_list13๐Ÿ”’ testedโŒ
treap13๐Ÿ”’ testedโŒ
bfs_dfs34๐Ÿ”’ testedโŒ
adj_list23๐Ÿ”’ testedโŒ
topological_sort12โš ๏ธ ้ƒจๅˆ†้ชŒ่ฏโŒ
topological_sort_adj16๐Ÿ”’ testedโŒ
kruskal14โš ๏ธ ้ƒจๅˆ†้ชŒ่ฏโŒ
prim11๐Ÿ”’ testedโŒ
scc12๐Ÿ”’ testedโŒ
dijkstra11โš ๏ธ ้ƒจๅˆ†้ชŒ่ฏโŒ
dijkstra_heap11๐Ÿ”’ testedโŒ
johnson11๐Ÿ”’ testedโŒ
bidirectional_bfs13๐Ÿ”’ testedโŒ
a_star11๐Ÿ”’ testedโŒ
max_flow12๐Ÿ”’ testedโŒ
advanced19๐Ÿ”’ testedโŒ
kmp17โš ๏ธ ้ƒจๅˆ†้ชŒ่ฏโŒ
rabin_karp25๐Ÿ”’ testedโŒ
suffix_array15๐Ÿ”’ testedโŒ
z_function19๐Ÿ”’ testedโŒ
manacher23๐Ÿ”’ testedโŒ
gcd8๐Ÿ”ถ ๅขžๅผบ้ชŒ่ฏโŒ
fast_power12๐Ÿ”ถ ๅขžๅผบ้ชŒ่ฏโŒ
prime18๐Ÿ”’ testedโŒ
miller_rabin11๐Ÿ”’ testedโŒ
crt20๐Ÿ”’ testedโŒ
array_sum7๐Ÿ”ถ ๅขžๅผบ้ชŒ่ฏโŒ
dp21๐Ÿ”’ testedโŒ
lis14๐Ÿ”’ testedโŒ
convex_hull9๐Ÿ”’ testedโŒ
andrew_hull11๐Ÿ”’ testedโŒ
aho_corasick9๐Ÿ”’ testedโŒ
min_cost_flow9๐Ÿ”’ testedโŒ
two_sat8๐Ÿ”’ testedโŒ
splay10๐Ÿ”’ testedโŒ
bsgs8๐Ÿ”’ testedโŒ
pollard_rho10๐Ÿ”’ testedโŒ
kd_tree13๐Ÿ”’ testedโŒ
rotating_calipers14๐Ÿ”’ testedโŒ
euler_sieve11๐Ÿ”’ testedโŒ
sparse_table13๐Ÿ”’ testedโœ… generic
lca11๐Ÿ”’ testedโŒ
dinic8๐Ÿ”’ testedโŒ
closest_pair9๐Ÿ”’ testedโŒ
segment_ops33๐Ÿ”’ testedโŒ
combinatorics15โš ๏ธ ้ƒจๅˆ†้ชŒ่ฏโŒ
matrix12โš ๏ธ ้ƒจๅˆ†้ชŒ่ฏโŒ
priority_queue15๐Ÿ”’ testedโœ… HeapG[T]
monotonic21๐Ÿ”’ testedโŒ
interval_dp22๐Ÿ”’ testedโŒ
tree_dp19๐Ÿ”’ testedโŒ
bridge_articulation15๐Ÿ”’ testedโŒ
euler_path14๐Ÿ”’ testedโŒ
hungarian10๐Ÿ”’ testedโŒ
ntt11๐Ÿ”’ testedโŒ
boyer_moore14๐Ÿ”’ testedโŒ
lcp_array13๐Ÿ”’ testedโŒ
suffix_automaton12๐Ÿ”’ testedโŒ
segment_tree_lazy9๐Ÿ”’ testedโŒ
suffix_tree12๐Ÿ”’ testedโŒ
palindromic_tree11๐Ÿ”’ testedโŒ
rolling_hash12๐Ÿ”’ testedโŒ
lyndon13๐Ÿ”’ testedโŒ
link_cut12๐Ÿ”’ testedโŒ
persistent_vector9๐Ÿ”’ testedโŒ
hopcroft_karp9๐Ÿ”’ testedโŒ
stoer_wagner10๐Ÿ”’ testedโŒ
max_clique12๐Ÿ”’ testedโŒ
convex_hull_3d12๐Ÿ”’ testedโŒ
half_plane_intersection9๐Ÿ”’ testedโŒ
matrix_decomp16๐Ÿ”’ testedโŒ
newton_method23๐Ÿ”’ testedโŒ
berlekamp_massey10๐Ÿ”’ testedโŒ
fft11๐Ÿ”’ testedโŒ
simplex10๐Ÿ”’ testedโŒ
digit_dp11๐Ÿ”’ testedโŒ
w_tinylfu11๐Ÿ”’ testedโŒ
ttl_cache10๐Ÿ”’ testedโŒ
cuckoo_filter8๐Ÿ”’ testedโŒ
count_min_sketch10๐Ÿ”’ testedโŒ
hyperloglog10๐Ÿ”’ testedโŒ
nim_sg13๐Ÿ”’ testedโŒ
reservoir_sampling8๐Ÿ”’ testedโŒ
int64_utils21๐Ÿ”’ testedโŒ
Total643217 ๅŒ…้€š่ฟ‡ moon prove๏ผˆ5 ๅฎŒๆ•ด, 3 ๅขžๅผบ, 9 ้ƒจๅˆ†๏ผ‰, ๅ…ถไฝ™ไป…ๆต‹่ฏ•้ชŒ่ฏ17 generic

ๆณจ๏ผšไธŠ่กจไป…ๅˆ—ๅ‡บ้ƒจๅˆ†ไปฃ่กจๆ€งๅŒ…ใ€‚ๅฎŒๆ•ด 337 ไธชๅŒ…็š„ๆต‹่ฏ•็ปŸ่ฎก่ฏท่ฟ่กŒ moon test ๆŸฅ็œ‹ใ€‚

#ๅ‚่€ƒ่ต„ๆบ

#่ฎธๅฏ่ฏ

Apache-2.0

Powered by MoonBit

Site sourceReport issuePackagesBuild queueSkillsStatistics

ยฉ 2026 mooncakes.io