From 6e600f5ba710254d46d4db1bd3eea2297f5eb917 Mon Sep 17 00:00:00 2001 From: Yudong Jin Date: Tue, 31 Mar 2026 21:24:11 +0800 Subject: [PATCH] Add animation player (#1877) * Add auto slide controller. * Fix the animation blocks. * renamed as animation_player * Bug fixes * Refine animation player controls --- docs/chapter_graph/graph_operations.md | 20 +- .../graph_traversal.assets/graph_bfs.png | Bin 20781 -> 20824 bytes .../graph_traversal.assets/graph_dfs.png | Bin 20563 -> 22719 bytes docs/chapter_stack_and_queue/deque.md | 20 +- docs/chapter_stack_and_queue/queue.md | 12 +- docs/chapter_stack_and_queue/stack.md | 12 +- en/docs/chapter_graph/graph_operations.md | 20 +- en/docs/chapter_stack_and_queue/deque.md | 20 +- en/docs/chapter_stack_and_queue/queue.md | 12 +- en/docs/chapter_stack_and_queue/stack.md | 12 +- ja/docs/chapter_graph/graph_operations.md | 20 +- ja/docs/chapter_stack_and_queue/deque.md | 20 +- ja/docs/chapter_stack_and_queue/queue.md | 12 +- ja/docs/chapter_stack_and_queue/stack.md | 12 +- .../zensical/javascripts/animation_player.js | 253 ++++++++++++++++++ .../zensical/stylesheets/animation_player.css | 178 ++++++++++++ overrides/zensical/zensical.toml | 6 + ru/docs/chapter_graph/graph_operations.md | 20 +- ru/docs/chapter_stack_and_queue/deque.md | 20 +- ru/docs/chapter_stack_and_queue/queue.md | 12 +- ru/docs/chapter_stack_and_queue/stack.md | 12 +- .../docs/chapter_graph/graph_operations.md | 20 +- .../graph_traversal.assets/graph_bfs.png | Bin 21162 -> 21449 bytes .../graph_traversal.assets/graph_dfs.png | Bin 20657 -> 22836 bytes zh-hant/docs/chapter_stack_and_queue/deque.md | 20 +- zh-hant/docs/chapter_stack_and_queue/queue.md | 12 +- zh-hant/docs/chapter_stack_and_queue/stack.md | 12 +- 27 files changed, 597 insertions(+), 160 deletions(-) create mode 100644 overrides/zensical/javascripts/animation_player.js create mode 100644 overrides/zensical/stylesheets/animation_player.css diff --git a/docs/chapter_graph/graph_operations.md b/docs/chapter_graph/graph_operations.md index 4ca441d37..8443edb5f 100644 --- a/docs/chapter_graph/graph_operations.md +++ b/docs/chapter_graph/graph_operations.md @@ -11,19 +11,19 @@ - **删除顶点**:在邻接矩阵中删除一行一列。当删除首行首列时达到最差情况,需要将 $(n-1)^2$ 个元素“向左上移动”,从而使用 $O(n^2)$ 时间。 - **初始化**:传入 $n$ 个顶点,初始化长度为 $n$ 的顶点列表 `vertices` ,使用 $O(n)$ 时间;初始化 $n \times n$ 大小的邻接矩阵 `adjMat` ,使用 $O(n^2)$ 时间。 -=== "初始化邻接矩阵" +=== "<1>" ![邻接矩阵的初始化、增删边、增删顶点](graph_operations.assets/adjacency_matrix_step1_initialization.png) -=== "添加边" +=== "<2>" ![adjacency_matrix_add_edge](graph_operations.assets/adjacency_matrix_step2_add_edge.png) -=== "删除边" +=== "<3>" ![adjacency_matrix_remove_edge](graph_operations.assets/adjacency_matrix_step3_remove_edge.png) -=== "添加顶点" +=== "<4>" ![adjacency_matrix_add_vertex](graph_operations.assets/adjacency_matrix_step4_add_vertex.png) -=== "删除顶点" +=== "<5>" ![adjacency_matrix_remove_vertex](graph_operations.assets/adjacency_matrix_step5_remove_vertex.png) 以下是基于邻接矩阵表示图的实现代码: @@ -42,19 +42,19 @@ - **删除顶点**:需遍历整个邻接表,删除包含指定顶点的所有边,使用 $O(n + m)$ 时间。 - **初始化**:在邻接表中创建 $n$ 个顶点和 $2m$ 条边,使用 $O(n + m)$ 时间。 -=== "初始化邻接表" +=== "<1>" ![邻接表的初始化、增删边、增删顶点](graph_operations.assets/adjacency_list_step1_initialization.png) -=== "添加边" +=== "<2>" ![adjacency_list_add_edge](graph_operations.assets/adjacency_list_step2_add_edge.png) -=== "删除边" +=== "<3>" ![adjacency_list_remove_edge](graph_operations.assets/adjacency_list_step3_remove_edge.png) -=== "添加顶点" +=== "<4>" ![adjacency_list_add_vertex](graph_operations.assets/adjacency_list_step4_add_vertex.png) -=== "删除顶点" +=== "<5>" ![adjacency_list_remove_vertex](graph_operations.assets/adjacency_list_step5_remove_vertex.png) 以下是邻接表的代码实现。对比上图,实际代码有以下不同。 diff --git a/docs/chapter_graph/graph_traversal.assets/graph_bfs.png b/docs/chapter_graph/graph_traversal.assets/graph_bfs.png index a5010895d934423c1599960cf733bc4bd9366c49..db62ecd736fcdde26afcf640e054c040017d97e7 100644 GIT binary patch literal 20824 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 L*H^1nL5Kez0xaux literal 20563 zcmdRWgzg2!Qy$Ly+*-Rd#J zbWt>P2LQaU|6QPDRy?Z5n;>^B1sR}blzQi}0=1P^l?H&%3D~z5|KaOvsOZQ)JUqN> z582$@6crVXjEuZ#NR1shK`o&k)5hP8^NWkZ;R1Je_tDW&Gc&W=+FHE~-G#*kRaMoy zh2gyXyiduW?)NuQzbg?HazqS8ax{y1nRuMHsifA_xFi#8!4sJ2L{`?7v zqJs@^JlqE!g1M5BsJE^bvTNHXo!3c+hrti+0Gs7;pCKeD>=Zksqv+-pc?V$frKJsa z#DnYPR{|FE=Dup6^H}Wwbim+R#vw8b%&WHjz(#!#heXOK<90E-0! zHinvBD01bNb?B|w=Y>mWGy)%CUrm$i=nW>&YC?zUHOB3$9}^;Lu0QPV@UODf-ol_h zfrgAL$ZqCtA5xzo*3c01xizyD*xd0TVok6a75X>ae}C`yiIM-lBqf(MW}3J;cuT&V z#&D{`x>&qQGRM}C13$#Lpk(+X=ts(uBH_V8wcM@%J z+|bYztL;4Vyw+^PyVYS_H&j(upa9O{KNDJUSkf#~o7*vYI8}|?%gY?@WvA^JvBOd+ zswZQ;T16{1yy3x%4f3i9*{BDNSvMrxcYV5 zIgiPl2Tr{^g0deSDM`A?B35Sfcpnf4-ktv%HdPlh`B{_PiyFKra$X7qu#^-EKqZ{p zZ4EmFIYo1WI=c9BJx%bhSV2O|YmIBbNOS5w-vg3J@z>~&17k5_!PMicaR340C z3QhmCy^Sa{tZ3D?eq`jet4~_2KS+Dh?IN^8lGVCU%+i%iavH!H&pI*4N8Pvv9-K1KzQ4^1bJyfrKb~;+4w^9Vh zI~+70>s^$Z?w;diV(pdC@$QM+xacglIYzXSPiUSec&_M0TEa?7WkkP@u-RO!dY^F>riuu8Qdv@^ReGJljnj@%xO6`W9(DxYelp%s7tbiHkcJ z{T%UtC-9X)_w2y%+f(n+gRsSUfco6!o?$0k?>_Ni8pHD4mJYBry_snD*(oFx;^Mt9 z`1$UAt^lF{iqmeRiLo|&&&RRtoW#ekN-Zc&Ou*T>3cQ1H`3loM!f<)%x-pb%>7l0o5lzVJvpqTLrzzjR^wr(+VJ4#4Bd%)*s`Dq7x#Cs zjGsp^(+M^Ae~%&*AV&)B{SE3&WDI<0^t7bn=R>?Bpk6=|yq*>p3z zYhUq1(OLF;P1-|BG!Md=!#Ns?Jz@RJVk@The;Pmfx(pW$#V7~pO9aweHm?dr>6g}y zLHkwoi!R*Ty4X2HG@qHVK9q)_?))?FP?(J=MCit9Rxc?m848gqeO*MD#lb zmaX`)eTVw`)0Prr3=+%rY@bZ|Q;8Ul8fO6Q_E&dJrRAlveW zoU2A=AQ{=+3XwSPZ`x(fnZJ;@cNhF^Q>q7ECw$7Q%}(rtW;H`}6s4XCkRZEff9R`~ zj8M@OYCrWIhtXyKb9fo9wo#JO=AYj5gqVjn8L1wy@K?r8^;M$k6XZE<+HWI3;E+&q ziOlres)x8O#oUnPJDF?DHjF4R(YuH16%wYd7KGK+?6r zWQ%(mncS3q*}xVI>MJjU(14#9LEX;QYaPd_X-JAVzlLl?5Q0=>h-Bmj3!c7{J^zc6I8LNJ`Ts=#EwF zv6~pJ0Nno&8<5Ib81tu3d)vQEnvV>+{_AqDQtnENzIK!8Ob6tN)igLNgAyk-KWAw^ z&M1|Gj}@ZI9}J0lhq z%+RfN!K-C9aI2z(AlBZ+*=`Bf@z^5hwJ|lX@`}9#EI*bJ4#)#9KmR>(!b18jDG~6o zLbx7G0GX73LYS!2Tma5nM*QVe8-)Bi@4|L$_&rW}cu_E2E}vQ^$Q>vmtDdRf|FZF6 zk|53`_<0%qdt|o^#gxNC7QXyT;IAS_DsN+$%2%KP+=u){fw(gpxMf1W@>(8@s^xV4 zh2MkbtbZTSb&CebL~@4V$Sf;jOKr`E?$RPLYmw2_qyrAjN^fZWfGT7AI~^aph3_SS zMKc+dA*l6H+NdrMU&RD`x>PQ+gRTVP6@y1xi zUPyBcjd8}g0grh)@0~hZO``PhbG3Hti}#FLnch|;$YHZ>T4W>mS5&SBx+@tx9RBO) zKg?7fuuHIn%Lg=!jyK9BpZ1#gR8;!flb=`U*T7I>jShz8)_(I{Ti&e8Sb#PgZ}~@8 z;N&Y9i?_L=cNn&ZbvwWSd}|A47D^CeuSHNyVZ<}ZYx zBEHGp*q@Kj6A3lrjveE6iT@lM{_BUxb&v3&O8X!LuA$`-=oIoZ{X%BOF#wFzg|5YK zXi?YL5|84SY7ey;%q%v*#|}F_BQeAp98aH0ae-g&Y|=jU7oVOG|G+~o6xL|-i8ggo zf?8XI5Zs%?BLm>X^rMjN%a`U-ExGKAn{|PJ(PUITt)E|QS&jFEysvZBkll+&3h+3* zoX6`KV_>E&5V;D?dt?4id|+5Nl9%Jn4FjI+T*9^Y@!ySgtNH$D8q@2qiht~<$$lPe z4|&~-ynR&76!pv?el-15Uk;Z^KASS^iPonz%4*}T0E_I4--8$JJ>0!x=YGIfliFsn z#qU$rie+dB1;yz$)RgBO;ZUat*hT&JbdS@_eT#>;?)px`(}){WqvegHVisIPxY0B_zV zg1zF3#K0~u+|IqjhlV#Q6R;cRz2Z;or&GocydPC3T??hbO0Diw%`PpGf<`ve?yw{$ z5s1SF>bNH;S3c_JC9cAd5_w85sQtW(h`t5tu%XjRB-cTb%-3>M)!plIh zW!12G#3M8olITUb_NX7+?yu_(RSP5?G)jubB$cIT!q#=v--cvZ|JE;o1JCI-(>ScA zJ<=2VAqZm#ijN4d^4zU^K@VI$yA)hjnRJ4uwhd@>xVgPOlR~%RUJkOD zuQBEZeFqJ^>DAG1{QX=S_Ov(Cku&a>e*R>+aA^aBNJx+93mw5y=Il#P+zv7%)YJf) z*T6}&h_??!a!m>o4hn@l<$Z$eZAFE9Ey+5H@PtW%j}HA%vZAcPHKQA?!=n;uuu;iz z;I`Ph!;uPUgZ+%2Is@IBOX;_Fg~cIzj~z9jT&kEC_jLiWf(&Ea0VPu88W?OFdwhIN zgpV|EwJcF1=6cRLsQ8m0tw?>jH3-*Yrd)v@@J<8!ej6PmJ{0X+!7$`w2AnQ{ifQ*Rnrr6w&k^XPje;*M~28%tp)ucTZGCYk+UDr z105PkR4E7pR@!THXEEQc2-|x&#nN&!k+6h>Tkgea_q*hH(12R0uW|Cb}ss?JF;4+AUMfzZ%2lekX|RX_Y@x0E`!deno+;bNg9036hssT zu(rRpjwFaA*FlQPr{@}V#5F>G0i4>!A34OyxL(`IGe;AupZ=<87~W59Lnio&1WL+F zxg)yroatH}=|ECrxkYBi82s}l;vzlC5`9o@R3dAlUgto85-01Mor%AdjSqW_Cmkof zDUoHN49}k7dmPgtX3yc5cLy-kozlfobrvVN6{}ix09Ao?!ZD}0bPK+5Ga6`aDGG!b zNjp@}u)tK5b*ffMUrMcZ`3Y9;ErYykFth7hDq^F7Yz#U>^|{3_)8DXvQs8Ky#KcKU z8FW-O;acA3onI4pBCwhgc_nZ*vpK@X#^JCdWix^)dztL>%*G=}=@h?qquk^K( z;j)^b&t;D__R(9a%upQXUllbN<7Emflg4GI6C5%35^^rXcU^LgNf$$QG74EbW)Wig z!MW~pA4jK*J8EC~)ECJ8uG)IQqerG7@ew6c0y95e-RxG6RWA|H%u`z~JR_Su@bL4P zmpSlV9Duygqz4|}Wp#t^E(K(gN4U3I>(G2yvK;1%9RB6jRXHCW9o5sw0JqVP_HAr^ z?0aK;Hk%X2Xl_9#7(0F2OO;>cUTIpmv2%|0%K$QgZSlRs;vbCo;b`FY8ST-m9OG9v zMyjR$e-fiZ>-NF`8G7&^sVCDX`y6X}Hf@s^V*4^;%++_-pITs8^0C zPoK5sEwA9hZMocjZ!{Er(w}u1B&}_D-VbGex>|HpqC;ewTk&eSm+)4K(^l%wO?5!y zi;!Nr*RmraQga0t6(KaaGW^GEt1YTMc_57x1QY%HdJ5kYGCeF>*+#M|A}H4FsO>f{ zM>G5d-$Zg!y{EFoD=cv2XLaiYWTn!i2A_f|R4&w;sul~?XTYqI9z5_+T5i4AHJpjG z!6#U(V0^zgDZ6y2Zy74}6u*dH&0(+f|_06=Oc)5kiA(X+i&OmSn?<~;$?*)?sOEmIiX#ibS8(T@YE5(9XP=q)T z8RBJ9UEbxM+SGp_(2;UP+ddSo{+2=SBys;kC227y=aQE|T!^0Qyh68f{z=rbEu5Pf zQ4pJL;5J_cp%MOEZ-gHHb)~XJRr2dlXkyuR)+S7g}7zr`Y$JfMjoz{Sn$ z9x{Dpi6lY}gAj!^U*@Y7?>IkgF_Y{D0$FooWKSR-*W>{zL`A9lbD0g)aeu6Lfl!A# z!?mR`FoqftLp;^J1qYjUCSp(-E$RccKhy3AG;5dF42)2WmcG{vygmF5UE z?#Ms2P&hyBXf-7E5TY^DNAVE(rYKK>4ynBb-s4%%{JFv(P6y{FeBblq;B5)cmb_f> zbHD<{=?*Y$L&+t8b+&^bE_d@-nNC&R^C8nV3fS{L^$g5XTh(rkl$D%&0xsPG+Yx_ zY&#Iwhv0)1leM2&5kdU-6 z8%X?Gw~n3BMoQ!DY^+*1AP1;vW{*W#8OB49Owct!$Wc8mP@s{EgZcq^+zwwDmEmy- z>Av`q#xy1Rt>ls$x<(zitwKPui`~xi_{d0^Kqvhb6B;;}Anac>%;%pDVt;U~af$*_ z7xDweH1(n~W8ymjQoT`!%!gQ8TB8hq1`QMm$mJ6tYXO4qz$zG3ts}$9?k7Z>(6M~% zBSd}VkY_fL#Sw0ZfUeQ~Oeh>9;~@wGmY4v}G_;)^U|5uvshB$K%!PnY4q9Ln{S+WX zvbqIJN#aQof?^2Lo*g4$a-9Hbr*9vIGKa#=M${BSx-BKa=uq0@-MpHhwkY%Qka3c!y_n)N>;RKT8|hZ& zd$%`F?-YoXe55z@{ zK1OFxDV_wCWjcHl-%?n%@BMpU7gjxyN|4sE>J%6&`@;%dY=7R9)NP=3%p+`6Jbswp=^_HpuvIcrqH-Ltm$`GE|5m&4iK zWapb1%P^qIQpmStJVzn@Dv9aahhi%RAOZ(|oA9|WQWGT-9UTFvob4zsd<*yU)Zt_LzHKLxL1!-x5ZB@I+oH{@E!4TfBhcRZLgI*rk%Zf?j>u z;ZmLCiPomHVKJWT`=oiGfC?esce}V-*RSvnU_vhe>Lmc))5SAWWzlXeIzn`=F|7Ar zn=uEzsM#ifdU?^2>-|7>N^R)1&Hsx9h=nYP?j*9ug8uRY_G8V<6QSHvn~k-*#_eXo zRRAocG@3IL&$aF95dNM@`hLFCOi4%k`4%Or@GX#T0&EEt5HTk7jn3|fx@eMU%3W=v z(Bbwzu`7JfZMjHs-l8N5x}^24tG$q=&2BOX9v1BV#-h*LSCW?sdL`rKzyJ30?= zKUB=CW(z%V$cDo9pzwzz!&Og!Ej$9Civ!`wp+a)5w!Wb-1o5+8xYGA6Yl%gFWXj)C zIk<@h@@Na#em(sHO7Vm$I2n~N7CIPHB)sK({fatvouFlww~G>H24)Op+-p{km5J23Qi1{G1M8t@PHx3 z3oq5@dXYcj0X(oYxvncpZkG&e9fKh4EVB&vt4)*yz1xf5fe3;x)}HPm=Qy=P=M}ak z(Gds5tDL#2VUz4T6q;ZSahw@b3@6oeSL!@VobRJ(%{Hqh9l~$PUg-;wa_|-gN0l*P z-T=dJz&eZT2fTo&R-ShHAMjq|k^=n<6VNtv>C4Wp=_Hh@tX}=DN&Y=CXLNI?Ncze1 zr(z$r`QLvf)Oy_~i!{xc$XIv41)fM4sY^oE5XyzQW+D1&7~u7@l}Ho>$SB!g-q9YS z)n^?6_mP%g)1@1n)d8?$XABe%qrzhxZAH^*RN zP#0yZ8v;Y>SMPv}Tk`cYXM*X!FRRfTu*3DBj`X^5 z%TsJ+BfB_X0WLjBM#iU;iai||D3RWzKTha9ljiS$tir=NGF}o_YuRrOEQXfsPI+74 zQf3u`8rhUrSzjqJu?(Kn+3j0fIUab)-hk*Ha1ZeJUxa99_WF6E8(_UOlq{IZ*GwyN zvu49bUXSzOGVKpOvMg_N26~?cqkM|CWMMEVJ)*Mf$)UkwM^dYNOEI)9C*>(PAr; z*Y#ysNPr0J5t}aNz(Y(Qn1m0_Ab`+)2e^(vuzL=V(F8@ch+@)7o)X!&gq$xldq4y4 z+j+8aCZAG~bm(+XCU+~v#DUE8^fA~=zmi0mS)^Md(|fCA5^X=2abm|BK7%vFoNgSM z@YETsIcK4rwV(TKY!_pa>cOyJ|IPj(}PyfQYIWm_Md&n zf-P35xC4QHnPiR9;_ghftd0HFiqI)p$oO`|oZ1zOg)=yoGa(XNkHlC7!VO#gC1d%o zOJ%CQ^m{JkIUd#)XO?f2jThq@LGY+`k2dD3wx*i9;EPdtB~2PwpOgz6GZozPxjEor zdua&?e;*_BI_thg?SR@d+wpMY^zg5VR?eOmrH$E{{^w0Jyb1%-6}kC3(lLJC)F!8T zWY1TC2kbEZ%F^a!F5$Pjq%KM__YwC~FgDj{GVzcwTT2mm|dif^BX zy9s_n!2lTO=D{>$fd74q2@1K0G`V;yhz1ye^CFBx)U|)MeWBD`62}K0Wq~HMZg?*h|-WK*ZC2qunRPCIs3ajElTL%XL;x;Y>_q5xLbxY!6_fSn{H-VboQ!xxPSwk;14Ts zrMm|x8O6~cFi?Dw0uHS0(r5(G`n;P_`n6LX##gIE2|B{!Cw&jE0&xjSr~3tkO3-1C z92t1$#o6MMG3fAp|1u5b{0w#)B)Q)myqp}Lsf>*92)SEtP#HLU%t1#YYO zWkaLoeCKUEMRd6?WU3U<3GhMSNBdVtf<$TX%N=B$AlBIq@XFGf;+c{%F7k7_2)kn>dg? z^>{{|?ovFoVWjg>N=N@YV3Ett-y;1I*(ieL_AB<)r??04dZqpaXUKqi#opqTG=|-x zN#Ac;bPj>!X{RZlIwS{fo)}qRfM#=p_B%|nU#Jac$H1vx)rh%kBd|(wTE3P!GaDj4 zN$V=t7J2mW<2zuF;mXU{O=O|0N#lxyZUf^j$Dw#E;F_Q6IbE5E*y2)6j8n!zum~UW z#K6N3W|ax`Iv#2j;Rurz5*^cN!{>iRt+TCL9xU~dJAbJ>$83!q4a;&6_o zl#M1^wRmAA+MvO|X`zjW9*4#cha9rn$gcE+y)d*DOpOwSqz%)>H{ZuPjmJQst9*6Gp zyfl?!+H1-LlUeb9$UD&@KE zW9dAKhHc+g7>YxSVyI{*`^#_ShKQ6pAHSd{0Ln+7!$-sbuc$$A7HoKVK#9Oq~c$SMc<@db_NXRP8X zbSOQku?$~0M@F%IuEtkw{rY{Z!NVZ?DQnng8oafM_vEJx_^JWk|uLQOo*W@T5Va3joc$T$a-h; zl~@dSz;r~-9WB6y@w2NbesIyNN=1$^DnN@HBOHzB(|k{s#z+}!KB!0vS5TQdMS>MS z<>F_`f+%j`*MK*iv|sDhLuk|=_10vvx)jWl`GRLGh1fVQadi5C9$wpIXn^6PIOptb zj*IvafICE6NQorqvMtCReIoTL8FOoYUPX6HBO8BU;AI=*VEQD>1~#SiZ@9sNvhsp2 zlH{5B^eoW%s91L3m7Hvq`jvrzjKP#aWD191uRSNwB|UZc!0#%4anj&@kKy4HVM(ZE zDc2NZ$S-?ZY>=QuVwggTW}fwvBd09u#Ql~GqzF@*HbVsW zp6jVH_oWk?LH2hz_Ey>%<+2MwEQj&dR2gg2rNHR-rrIZaZ-tBuO|W(oJ%(dUzWm*h zvqmEzsuT#NL{1~A{#zYP3KzMrzo>YPS~-;B*RKLzWaIsFc(BFkMSd>Li9TeJ_2gii zm^iaA=cLJ822Z9*lVE!sJRu!_lJ<`wk~JvJOjrKHAJebryw3+kQtr#sx`(9Pk;CET zNm-9e8I2iqYBs0yx78I}GXnH6n}#4$xd|V0ae7rANmrJHx{}WHn3yr!HypayupSjO z^ywZ-B1>GLSX{K|=#BdWPYks0kpB8UE4Lc|)y`|-y$vz#dU`%w=XvlW%q>d93AXs{ zuOfMa@_QBH71UrH5F zhfmcQEDbMhH~ULZ$IHRwD>moBh_3(?oxUGeMk^X&;d$(E0J9wfo5YEbb4FORku>(bFeJ@k{ygHbq z=^yPydVmh|0I_Z-e<(xllg>>>Cd26w@^N!81Z&as1V5!0DaB!JGNCLN=9G{5+v7## z;QMTl%MKUCm*P zWau?UH93NmOxPhN68N4IAat*O8+cZ$hp1oGdsRazyU@pOnsi15>2|F)qrW%Nul*(> z+2wNdP@bzv70rr30}EromxB)zv$a+Kyu#c6%atbE+rP9*dW8WN9u3*SZpoY%!uM=~ z{W%hwde(a}GSA8UZ8^c-P&Icbmu{c7%m-0G-nF>j!p+J;HL0zejxoKo=_tH3cTlXo*3%z+@|lC1BI|JmKSYe}d9oH`r*mdu1YSyp~_Yfwr^-H1JVq^x3JZ;U8k1 zSL-^G##-hvAq<&uA>C`%@seh?=d#8k0+V8`$wPWhtpr)btp@2LUPbsonF(EpBBTz_ zBn=HABRTv#Z7lfV4dMIAB)QdOGhC2pQ^DPSD)|Q|)fXR<$wr_2Jjrn1-QFqYNwgXw zb7^@Av5RR7a790QZs|X2{YFrXN)DnysQg!~`!7TTEjOA8Dy513v>24=o_wq^h?vJE z@x>!j?(gYcTckYGidgI@h}{HG@8go600P8TRZcpi*1+)w7%5D@+MTzatwh?ADk9wF zXs6uo_0vkkdAnYBu?dNe+-1h^;th9(qFz2&vAC8Xep0(81qiS2aj|_&&NPG4f7A;qY-6*+9|Sz+ z7Y;^Y%>%3|HpALI;6xU5C`wT?Ov^!2deE^Ve&-M?n%+=}A1Cay&dm=$CHjkZrRf-! zChc5CVRhv$013~hBfuk8C*_c3JZBKJAjkqjNj}XU-^PZ!-(FT2i=G6>!0fe6l+Y=O~05fHbAcDK-K7mRg{WI_`x# zh4!J6uV{38lk^ls@s(k$9oh6I8t{xJkUVM%Q=(WA#Knw`In=2bG0vhjGlof=H_#lq zhDNtpSo{+^LO^iVYl)rKxPN%tYxU#%`LE_a^9v)R5$-^&Lw@F-S1RyHq>BbT87ZRT zLo{2U2U98dg@$E_r4ze^sG)6`2Vz6@#14VlN*a!m_zaC+g8Ik@30~yk@n`7WP zuXp~kV3g%;wMToudtTCh@$7(v1}U%(gYriP0~P7W zc&>M*KenkgoFHuoe}+8|8)kf4aZl|WKev>)zQ1r7ZlDICBrTfm*H*O@ABsK+JwCsiG^J4c64g;1!iP9S8#!7 zrFFYgPu1p3=o&}T#D82hkb7BPpY>7(;`}NdBdREUC0sWFA z>FkZE$!vT+`xb}}vBkH4CMvuB-Ty-UaGITk*=74o1+(ao^$^FFHso_(3+JLn2C0O#`-F370$0+Oyl%@T~?vF3gX6b&zmW;O>X1pp& zLaYJAjpE6%zfWE95=HxLUxcf8y_Q{MSUVW2$KzJ-?v>;%x{;l(1W*jnK6N=Pb9P=#)I=2gCeiQL{fJVZ1oCdw< zMv~yRYc4wVvmfHwYBr(w)O5kVc3XD`b7$kXb81VIR$fw+?@>>r16N1AkkxI~AHZvm zTo>@qSFJVg^R%ab8?fPni{er!xv<>yQOkg=o!Y!x0_7E_pdosOqvTXgQ)dQ~s)ulX zPJvDW1cAD7&gQ^L*=gV1z&zY%<3VYC!S-9)o#FYWJ#x=%5GqY5HB3DrAPM5w2?^Mj z-j55!1-gCb+u1K<-dz1rlgQCxTf`aawF6#O{m^PDL1Gh@-*GKm(F+Y{cFa@(KS?zy>Ke!(hNYR8@Tu1?R4Ki(A~DQP`6?c0jlIBH z&5WkJ%#tdfX!z8+np_;$=--+5NSqh>IayZ8)^!-6)^2u5ouK=v9BeEK-B+f1RH-Vn zU`I{|$!2XT$k%2-_0p}rJ*-Ys@|8ko)HvO7hy_nft&^PuhR;SzBoAkW6`to5%)MEH z&Cd~FhRmsbiJ~={Pi|DsrQ0#O>4&2ojK2a`y{49}|@iTY2 zoDCqPvX?y>v7+*hqYWfwlj7+*9lhYpVgKWaC6+xVyN%j2fsZnRd93GwA@L zgnu@0J5rv%j_A7YU#xMx5cJCeRSm0-yhXAqt(3Ab4Lvon#=?>p&yepkr8?nI&2+T- zM4zrDl(l7Jqo~Jm@SIS)y&*Vf@RvGKrM)oJp)%g&qspfYx>LqtCDsr8F){}ki30~e zUcVqhyY0{MEWy*ZRAsYEhAxfKBe-c6#Z?|AdMbyvfmISD0koPdgm?Gp>;9CeXWm=m z7{+Mmz*CqJC78K%R!@DnwrK|Nimy@!BRZCipGgxmz8)DtAI;OT6-@~xz0HB5*jH(Y z-{pBiTpsS!EJcskleEVma5gwpT9N?MJICZ8)k)7kv``&81SAD}7Ze{-U2f(P)B8&= zqB9wUm^D2;^#zvJXQ9&L>TX<(uDnZmi{`UhC6~c^q!hq=_#b(wqbX<1d1&>A`}*C1 zGy6Zn_si0o-#`8XM0KR$uz#+EYZc3N8AJEIJGzAj4y&9ln2%_7n{a9=^4>cC{eMAV zWJg8sA@p5ds@6E;1=Ie4V_c!b;-Me+Ff;`IhvqD#4MhO$tjrN4r(k|0afK9_hJztJ zE(#&ACU~q8|F22_z@!PFfXpK#CcsTa@h-1=$2SlOJdQJ1+8m6)cx*bW0UTM+K#zrz zM-pHQX{wMD?*&0tF1Uo*d>i>w9LJ-g7gO@({`;Cix1xLp{4gS+NUz1CLBXg6_r zpbNu!ny}RIH6`BzTC%A7*7PZ1zqab z1CC32JzB87m0xf*jJf!(A+N?Tg@OP6xy(3cq^QL4I1pd*b~qb*A73}S9M>i|?q@aV z=+T4a*`Z2}RfwMT;kgCZ+~@|z;X_vF|Fv%2Pfa#md+(b7p-7V=AQA-&9i$@)NE1** zBmpTBMU)!R(4@#66tU1AA2HI40#bxXm6}@w3m|IfRRkeQjezv>@%;twyfg3qbarOX zH9Kd|T<6U0Udqlfv4SoaJ8(-R`~F<+gQT)`DJhH8$)ZrHxC;c{f-hx?8Aq4Klv+!( zSO(H_@3faCx-MLOUs!siGi$G_B-k=9IFXhA&-T;6#`-}X{Te&^_{;{4cP-Qj_R;KG z`|aO)HjjYx{pq}XqWSz%WJ)-DOAC=hI8mlTZ(7bhc?m9R!wcfj?=s=T1(nnEo)4Ff zyINXTQk=E%P{yl_hn!!ezH_m<*5h|WmDFQFa5+7|3;_}RBCK>(Xsa*hwp!3wUblnk zxhnzdx%)7|>5tpFX*EM$Zl|pN;tadCWX%ykr%D-!z4?27h?_S1{DunJzkS;!zN0ih zERTFAC%k%)Q^E|kvrIIVo6BWXp32wJg-7gPGnsHkTuVDfw0iU6X?Bn7k>>!9U)sA+ z9DO<4Ek&qx;SQLhQUt-M@W`QMxTj3O6tE!sQ43ChV(Ls*kzpEDYQpC(Z`d zruj6H4RXK08Uf{XBHR$Xb0Q{%MT1(Z54AW8^o}tJ$Yx_bDZpyh(tfw-`LaW-*~ZaT z=iw)39-HYAxu1J(GD@AduF^Dzj(%3 z0gaZcAA6@9Z;e!H%oYwa0{($UmRWC=S<993#M-u;BLhwLFKY;9RsI^=m@P5<2qX=&jn0jJS5w!A9ek{($4PxSp?j-LB6}X8Vsz~&Ae`RSDTsa zALE@bbCT-4zEEGy-MeBnQSB+kUv`TTC#Scc;1aZ=u~K57ObPf3UUU1o#bZACdeokY zQ+$(BO=onLn~%F?bUa(ECq~@$Ki*(d_&$2AC&1kLc~H-VC5Ii^47~B^RK&Bc)pRja zmlT<-0ihM2)R%k(ewUPdT_3pRJ2S}Y!K6vQ^6U#;0jmyHrK51|x@I2Y!37%QR*rtJ{>WE9Zsp;BG}5U7Bv5OydR#(-WbC`r-dKS6N;0B8m-nhyw0G8wpyN%e;+w53C)9mHp1-0XDE<{Hhpq+;<{-yx*BKyY^ z0-(1L(EB)H5GsOe&4h^FNAew^%IoXPr{v1JUx5nIlNi@uoDht@Us;xpcIA?(us(zp z_s`mO7P8#W5ZQLe@L5IKytTK>>Tx0G%`iolsCg$jVUv4{u>Vro`;L>Azq2z1+9|C) ztHVWLyjkdJfa%Cr4X%dC9CPVNvnf?PVOCT~WKox$4g*0m!`&cutNiI%wF9Rq29mFk zaqi8JvR{R>sr~c4tq)(%HX6ax*Nxc2t+QZ``)Y8dtEyQ9L+-5iVPgYM52-!gC-yXK zQ6C!S7@HpC%vT!l+LL^5$TuO+R%~0D>eXC7-v!oVkZsEn1Gzjh(oXp%Z=+`+{#qle zfY%ahqJZ z&G-SlO}@M-v$DBP)VXu5_Dm!jk?3mtx9Y7TZu%&!SN-`{NeUe1jZP7IP+5ZTftMU4 zM`KxUeZf?a$m=y*K(z9d1W|mxCbd=y4SR_3f~poTrYN#=!XB4L2Q{?@*sP~}!h83o z%Gvf{Y25M(wT&UwE>rs99*-?^~EIdAWkBg_=kQK zzV~|xSet`J>{AB^k#^ht_Vq=M&N3eGJJPp9J)f?K|M<`#I$~x;R6u_|*2oYe?(XiB zva5J9HQkhMyMNO$;w?H{EJ>w_N-RaITJN?H@-kFA4_#l>2|HHU9WuE9cV>C#epZgj zEdS-$byNphOR9G-d2pz@=vOi@`AJ_g*izjVXKSIRCCm^|g1j#%H^`-o-5C&glti+P zYAB)LtIEIBiR^Ele>i~uR4~APzd7PSZ^Zk=qqok<`L4+BVg5UrfZ@ord0w=b;r*6I}gQtY?-P;yyo0Ea&kNz{ z=kV@#9M9t?H*NCp=aR1T*e5Rev)vG9rzK@sIu+&DC=HP9&!nw3ee@z5e-6~m!Gsfg zuL0ptdTcGS1(v@(Ram;MrD2y|@>9x;RnAKKFz>~=r8(448XRV~I7DYP#k+oxjZ?nu zqKWVYiUIdhKHXZ;tM3H;_C`cvUfyAUrs#|}km4xAp&F-dw*vOLfP&qcty)nz7BOnnd4#qE4Y^Ps^ z+(IR6lifdr^RxG|b-R@%cR11?AjZU%xS3mMo?_wBabY4;WT&ye%YZcf{Nvy0H%u8$ zUp|6flqVjq>i?o}vzVh>X1iGg@OQ}#t=b^rSifR8aJJ)eCC9!sRG)7T$Sy#lZsm@i zlnxdc;a52bnq*J{>GQhrr6!tG+y*C5X7cl?qx* zRCaJvL`R&t6vNa_+D%QS3?^Mc?~&^%xQmDviI1l1@=Y3;$Qk}t81h>B;iq^9LSlLR zNc+pZ-si9eqQ36Xv)h(_m~Ralt1Fmmga82fnOJ*tQ_>;T9ZrwsQBA_9+Hkse z!|m)%cg;Q6&|I~Dk+Ls$y_2tQDPkUg9jPzeSt$L`f}I!q(}{*ua@Z++dF95@*iPYI2Gy6FHA z2iDC{Y517M{7uO4iuhNN%F*zRf4NrqLH2X+8B4VigEcx3D1p+3?gp1;bY*nzxMyn; z=d}0V)lw3CRl#Cz^@(y_1F&Hmci4W#)w!mr3SF=VqV?WFI?}q;YX1V4t7y644b`Rz6npb%J zbf3hWiwdA@U*%Z&0g7^Xj7MD0^%wI0vK@d`O~swA%?&aNAqS`SaQY4B^Tm)(&0ReO zW~G7NG;`c@SAt_*V2(N~-wdh1=A=IFixX1Qh^yozT8Cp?9{78y|JlbzGrL`(MDsc; zn9>7cYG3rZ-*YM+z$*Ry*c42UhZr&R^jGO1Lv9&cB4n;~Bc|=4pI&9(Aoio1NsrZ- z9Owx4T)kwf^9thxIhaxRxtM(|=9!fnB*{pT5sj^sdF^pc^h1T{+n$cppX2AM;w%H= z({I1GZTk^2M|ND^gQ%~Y4R>k9ijTYuR)HMMU&h@{v2Z96Tz`Czi8%*g*KG5d{%lsv zcaQgH?ND9c<{iC$JzWZsyE!+_xT!M0>o=Pu{+dbvS`ap@?9Urt{p*rnh8_3nmMUg6 z`=nh8;z!qSKVu5LDOw9G^lBAFZY)%Lhgfg5ggkk}5uC&)Pob39G5eeJEnV4J-`cw# zHF)(pDaM*6JnlZq@{n3KOFOt2Aoyb3wms^{sRmnSzxkBs)^W?(5NTq%u9y+S5hIA8 zRLsabp;O05=az)dS9vz&BR-??MfUh8fR4fy#zRdwPOIb5P(t&_5C-BSPL3R#^c`B^1WLtTHw jUbGXx2K|RD47+2nuVHUcx~I&O|6gfgYHd<{k{J1a*q2a^ diff --git a/docs/chapter_stack_and_queue/deque.md b/docs/chapter_stack_and_queue/deque.md index e38b5e535..5bd6ccde0 100644 --- a/docs/chapter_stack_and_queue/deque.md +++ b/docs/chapter_stack_and_queue/deque.md @@ -399,19 +399,19 @@ 如下图所示,我们将双向链表的头节点和尾节点视为双向队列的队首和队尾,同时实现在两端添加和删除节点的功能。 -=== "LinkedListDeque" +=== "<1>" ![基于链表实现双向队列的入队出队操作](deque.assets/linkedlist_deque_step1.png) -=== "push_last()" +=== "<2>" ![linkedlist_deque_push_last](deque.assets/linkedlist_deque_step2_push_last.png) -=== "push_first()" +=== "<3>" ![linkedlist_deque_push_first](deque.assets/linkedlist_deque_step3_push_first.png) -=== "pop_last()" +=== "<4>" ![linkedlist_deque_pop_last](deque.assets/linkedlist_deque_step4_pop_last.png) -=== "pop_first()" +=== "<5>" ![linkedlist_deque_pop_first](deque.assets/linkedlist_deque_step5_pop_first.png) 实现代码如下所示: @@ -424,19 +424,19 @@ 如下图所示,与基于数组实现队列类似,我们也可以使用环形数组来实现双向队列。 -=== "ArrayDeque" +=== "<1>" ![基于数组实现双向队列的入队出队操作](deque.assets/array_deque_step1.png) -=== "push_last()" +=== "<2>" ![array_deque_push_last](deque.assets/array_deque_step2_push_last.png) -=== "push_first()" +=== "<3>" ![array_deque_push_first](deque.assets/array_deque_step3_push_first.png) -=== "pop_last()" +=== "<4>" ![array_deque_pop_last](deque.assets/array_deque_step4_pop_last.png) -=== "pop_first()" +=== "<5>" ![array_deque_pop_first](deque.assets/array_deque_step5_pop_first.png) 在队列的实现基础上,仅需增加“队首入队”和“队尾出队”的方法: diff --git a/docs/chapter_stack_and_queue/queue.md b/docs/chapter_stack_and_queue/queue.md index 86ae6bef3..0758fafc4 100755 --- a/docs/chapter_stack_and_queue/queue.md +++ b/docs/chapter_stack_and_queue/queue.md @@ -368,13 +368,13 @@ 如下图所示,我们可以将链表的“头节点”和“尾节点”分别视为“队首”和“队尾”,规定队尾仅可添加节点,队首仅可删除节点。 -=== "LinkedListQueue" +=== "<1>" ![基于链表实现队列的入队出队操作](queue.assets/linkedlist_queue_step1.png) -=== "push()" +=== "<2>" ![linkedlist_queue_push](queue.assets/linkedlist_queue_step2_push.png) -=== "pop()" +=== "<3>" ![linkedlist_queue_pop](queue.assets/linkedlist_queue_step3_pop.png) 以下是用链表实现队列的代码: @@ -396,13 +396,13 @@ 可以看到,入队和出队操作都只需进行一次操作,时间复杂度均为 $O(1)$ 。 -=== "ArrayQueue" +=== "<1>" ![基于数组实现队列的入队出队操作](queue.assets/array_queue_step1.png) -=== "push()" +=== "<2>" ![array_queue_push](queue.assets/array_queue_step2_push.png) -=== "pop()" +=== "<3>" ![array_queue_pop](queue.assets/array_queue_step3_pop.png) 你可能会发现一个问题:在不断进行入队和出队的过程中,`front` 和 `rear` 都在向右移动,**当它们到达数组尾部时就无法继续移动了**。为了解决此问题,我们可以将数组视为首尾相接的“环形数组”。 diff --git a/docs/chapter_stack_and_queue/stack.md b/docs/chapter_stack_and_queue/stack.md index cd3042f66..9b03591ae 100755 --- a/docs/chapter_stack_and_queue/stack.md +++ b/docs/chapter_stack_and_queue/stack.md @@ -365,13 +365,13 @@ 如下图所示,对于入栈操作,我们只需将元素插入链表头部,这种节点插入方法被称为“头插法”。而对于出栈操作,只需将头节点从链表中删除即可。 -=== "LinkedListStack" +=== "<1>" ![基于链表实现栈的入栈出栈操作](stack.assets/linkedlist_stack_step1.png) -=== "push()" +=== "<2>" ![linkedlist_stack_push](stack.assets/linkedlist_stack_step2_push.png) -=== "pop()" +=== "<3>" ![linkedlist_stack_pop](stack.assets/linkedlist_stack_step3_pop.png) 以下是基于链表实现栈的示例代码: @@ -384,13 +384,13 @@ 使用数组实现栈时,我们可以将数组的尾部作为栈顶。如下图所示,入栈与出栈操作分别对应在数组尾部添加元素与删除元素,时间复杂度都为 $O(1)$ 。 -=== "ArrayStack" +=== "<1>" ![基于数组实现栈的入栈出栈操作](stack.assets/array_stack_step1.png) -=== "push()" +=== "<2>" ![array_stack_push](stack.assets/array_stack_step2_push.png) -=== "pop()" +=== "<3>" ![array_stack_pop](stack.assets/array_stack_step3_pop.png) 由于入栈的元素可能会源源不断地增加,因此我们可以使用动态数组,这样就无须自行处理数组扩容问题。以下为示例代码: diff --git a/en/docs/chapter_graph/graph_operations.md b/en/docs/chapter_graph/graph_operations.md index e35eba12b..61cf5b536 100644 --- a/en/docs/chapter_graph/graph_operations.md +++ b/en/docs/chapter_graph/graph_operations.md @@ -11,19 +11,19 @@ Given an undirected graph with $n$ vertices, the various operations are implemen - **Removing a vertex**: Delete a row and a column in the adjacency matrix. The worst case occurs when removing the first row and column, requiring $(n-1)^2$ elements to be "moved up and to the left", thus using $O(n^2)$ time. - **Initialization**: Pass in $n$ vertices, initialize a vertex list `vertices` of length $n$, using $O(n)$ time; initialize an adjacency matrix `adjMat` of size $n \times n$, using $O(n^2)$ time. -=== "Initialize adjacency matrix" +=== "<1>" ![Initialization, adding and removing edges, adding and removing vertices in adjacency matrix](graph_operations.assets/adjacency_matrix_step1_initialization.png) -=== "Add an edge" +=== "<2>" ![adjacency_matrix_add_edge](graph_operations.assets/adjacency_matrix_step2_add_edge.png) -=== "Remove an edge" +=== "<3>" ![adjacency_matrix_remove_edge](graph_operations.assets/adjacency_matrix_step3_remove_edge.png) -=== "Add a vertex" +=== "<4>" ![adjacency_matrix_add_vertex](graph_operations.assets/adjacency_matrix_step4_add_vertex.png) -=== "Remove a vertex" +=== "<5>" ![adjacency_matrix_remove_vertex](graph_operations.assets/adjacency_matrix_step5_remove_vertex.png) The following is the implementation code for graphs represented using an adjacency matrix: @@ -42,19 +42,19 @@ Given an undirected graph with a total of $n$ vertices and $m$ edges, the variou - **Removing a vertex**: Traverse the entire adjacency list and remove all edges containing the specified vertex, using $O(n + m)$ time. - **Initialization**: Create $n$ vertices and $2m$ edges in the adjacency list, using $O(n + m)$ time. -=== "Initialize adjacency list" +=== "<1>" ![Initialization, adding and removing edges, adding and removing vertices in adjacency list](graph_operations.assets/adjacency_list_step1_initialization.png) -=== "Add an edge" +=== "<2>" ![adjacency_list_add_edge](graph_operations.assets/adjacency_list_step2_add_edge.png) -=== "Remove an edge" +=== "<3>" ![adjacency_list_remove_edge](graph_operations.assets/adjacency_list_step3_remove_edge.png) -=== "Add a vertex" +=== "<4>" ![adjacency_list_add_vertex](graph_operations.assets/adjacency_list_step4_add_vertex.png) -=== "Remove a vertex" +=== "<5>" ![adjacency_list_remove_vertex](graph_operations.assets/adjacency_list_step5_remove_vertex.png) The following is the adjacency list code implementation. Compared to the figure above, the actual code has the following differences. diff --git a/en/docs/chapter_stack_and_queue/deque.md b/en/docs/chapter_stack_and_queue/deque.md index 2b45609de..af6ea5187 100644 --- a/en/docs/chapter_stack_and_queue/deque.md +++ b/en/docs/chapter_stack_and_queue/deque.md @@ -399,19 +399,19 @@ For a deque, both the front and rear can perform enqueue and dequeue operations. As shown in the figure below, we treat the head and tail nodes of the doubly linked list as the front and rear of the deque, implementing functionality to add and remove nodes at both ends. -=== "LinkedListDeque" +=== "<1>" ![Enqueue and dequeue operations in linked list implementation of deque](deque.assets/linkedlist_deque_step1.png) -=== "push_last()" +=== "<2>" ![linkedlist_deque_push_last](deque.assets/linkedlist_deque_step2_push_last.png) -=== "push_first()" +=== "<3>" ![linkedlist_deque_push_first](deque.assets/linkedlist_deque_step3_push_first.png) -=== "pop_last()" +=== "<4>" ![linkedlist_deque_pop_last](deque.assets/linkedlist_deque_step4_pop_last.png) -=== "pop_first()" +=== "<5>" ![linkedlist_deque_pop_first](deque.assets/linkedlist_deque_step5_pop_first.png) The implementation code is shown below: @@ -424,19 +424,19 @@ The implementation code is shown below: As shown in the figure below, similar to implementing a queue based on an array, we can also use a circular array to implement a deque. -=== "ArrayDeque" +=== "<1>" ![Enqueue and dequeue operations in array implementation of deque](deque.assets/array_deque_step1.png) -=== "push_last()" +=== "<2>" ![array_deque_push_last](deque.assets/array_deque_step2_push_last.png) -=== "push_first()" +=== "<3>" ![array_deque_push_first](deque.assets/array_deque_step3_push_first.png) -=== "pop_last()" +=== "<4>" ![array_deque_pop_last](deque.assets/array_deque_step4_pop_last.png) -=== "pop_first()" +=== "<5>" ![array_deque_pop_first](deque.assets/array_deque_step5_pop_first.png) Based on the queue implementation, we only need to add methods for "enqueue at front" and "dequeue from rear": diff --git a/en/docs/chapter_stack_and_queue/queue.md b/en/docs/chapter_stack_and_queue/queue.md index 9f311d6b2..f4cefc09b 100755 --- a/en/docs/chapter_stack_and_queue/queue.md +++ b/en/docs/chapter_stack_and_queue/queue.md @@ -368,13 +368,13 @@ To implement a queue, we need a data structure that allows adding elements at on As shown in the figure below, we can treat the "head node" and "tail node" of a linked list as the "front" and "rear" of the queue, respectively, with the rule that nodes can only be added at the rear and removed from the front. -=== "LinkedListQueue" +=== "<1>" ![Enqueue and dequeue operations in linked list implementation of queue](queue.assets/linkedlist_queue_step1.png) -=== "push()" +=== "<2>" ![linkedlist_queue_push](queue.assets/linkedlist_queue_step2_push.png) -=== "pop()" +=== "<3>" ![linkedlist_queue_pop](queue.assets/linkedlist_queue_step3_pop.png) Below is the code for implementing a queue using a linked list: @@ -396,13 +396,13 @@ Based on this design, **the valid interval containing elements in the array is ` As you can see, both enqueue and dequeue operations require only one operation, with a time complexity of $O(1)$. -=== "ArrayQueue" +=== "<1>" ![Enqueue and dequeue operations in array implementation of queue](queue.assets/array_queue_step1.png) -=== "push()" +=== "<2>" ![array_queue_push](queue.assets/array_queue_step2_push.png) -=== "pop()" +=== "<3>" ![array_queue_pop](queue.assets/array_queue_step3_pop.png) You may notice a problem: as we continuously enqueue and dequeue, both `front` and `rear` move to the right. **When they reach the end of the array, they cannot continue moving**. To solve this problem, we can treat the array as a "circular array" with head and tail connected. diff --git a/en/docs/chapter_stack_and_queue/stack.md b/en/docs/chapter_stack_and_queue/stack.md index 17abd04f4..b3513480a 100755 --- a/en/docs/chapter_stack_and_queue/stack.md +++ b/en/docs/chapter_stack_and_queue/stack.md @@ -365,13 +365,13 @@ When implementing a stack using a linked list, we can treat the head node of the As shown in the figure below, for the push operation, we simply insert an element at the head of the linked list. This node insertion method is called the "head insertion method." For the pop operation, we just need to remove the head node from the linked list. -=== "LinkedListStack" +=== "<1>" ![Push and pop operations in linked list implementation of stack](stack.assets/linkedlist_stack_step1.png) -=== "push()" +=== "<2>" ![linkedlist_stack_push](stack.assets/linkedlist_stack_step2_push.png) -=== "pop()" +=== "<3>" ![linkedlist_stack_pop](stack.assets/linkedlist_stack_step3_pop.png) Below is sample code for implementing a stack based on a linked list: @@ -384,13 +384,13 @@ Below is sample code for implementing a stack based on a linked list: When implementing a stack using an array, we can treat the end of the array as the top of the stack. As shown in the figure below, push and pop operations correspond to adding and removing elements at the end of the array, both with a time complexity of $O(1)$. -=== "ArrayStack" +=== "<1>" ![Push and pop operations in array implementation of stack](stack.assets/array_stack_step1.png) -=== "push()" +=== "<2>" ![array_stack_push](stack.assets/array_stack_step2_push.png) -=== "pop()" +=== "<3>" ![array_stack_pop](stack.assets/array_stack_step3_pop.png) Since elements pushed onto the stack may increase continuously, we can use a dynamic array, which eliminates the need to handle array expansion ourselves. Here is the sample code: diff --git a/ja/docs/chapter_graph/graph_operations.md b/ja/docs/chapter_graph/graph_operations.md index 070081a37..0b386649f 100644 --- a/ja/docs/chapter_graph/graph_operations.md +++ b/ja/docs/chapter_graph/graph_operations.md @@ -11,19 +11,19 @@ - **頂点の削除**:隣接行列から 1 行 1 列を削除します。先頭行と先頭列を削除する場合が最悪で、$(n-1)^2$ 個の要素を「左上へ移動」させる必要があるため、$O(n^2)$ 時間です。 - **初期化**:$n$ 個の頂点を受け取り、長さ $n$ の頂点リスト `vertices` を初期化するのに $O(n)$ 時間、サイズ $n \times n$ の隣接行列 `adjMat` を初期化するのに $O(n^2)$ 時間かかります。 -=== "隣接行列の初期化" +=== "<1>" ![隣接行列の初期化、辺の追加と削除、頂点の追加と削除](graph_operations.assets/adjacency_matrix_step1_initialization.png) -=== "辺の追加" +=== "<2>" ![adjacency_matrix_add_edge](graph_operations.assets/adjacency_matrix_step2_add_edge.png) -=== "辺の削除" +=== "<3>" ![adjacency_matrix_remove_edge](graph_operations.assets/adjacency_matrix_step3_remove_edge.png) -=== "頂点の追加" +=== "<4>" ![adjacency_matrix_add_vertex](graph_operations.assets/adjacency_matrix_step4_add_vertex.png) -=== "頂点の削除" +=== "<5>" ![adjacency_matrix_remove_vertex](graph_operations.assets/adjacency_matrix_step5_remove_vertex.png) 以下は、隣接行列でグラフを表した実装コードです: @@ -42,19 +42,19 @@ - **頂点の削除**:隣接リスト全体を走査し、指定した頂点を含むすべての辺を削除する必要があるため、$O(n + m)$ 時間です。 - **初期化**:隣接リストに $n$ 個の頂点と $2m$ 本の辺を作成するため、$O(n + m)$ 時間です。 -=== "隣接リストの初期化" +=== "<1>" ![隣接リストの初期化、辺の追加と削除、頂点の追加と削除](graph_operations.assets/adjacency_list_step1_initialization.png) -=== "辺の追加" +=== "<2>" ![adjacency_list_add_edge](graph_operations.assets/adjacency_list_step2_add_edge.png) -=== "辺の削除" +=== "<3>" ![adjacency_list_remove_edge](graph_operations.assets/adjacency_list_step3_remove_edge.png) -=== "頂点の追加" +=== "<4>" ![adjacency_list_add_vertex](graph_operations.assets/adjacency_list_step4_add_vertex.png) -=== "頂点の削除" +=== "<5>" ![adjacency_list_remove_vertex](graph_operations.assets/adjacency_list_step5_remove_vertex.png) 以下は隣接リストのコード実装です。上図と比べると、実際のコードには次の違いがあります。 diff --git a/ja/docs/chapter_stack_and_queue/deque.md b/ja/docs/chapter_stack_and_queue/deque.md index d76851a46..929f7c6d6 100644 --- a/ja/docs/chapter_stack_and_queue/deque.md +++ b/ja/docs/chapter_stack_and_queue/deque.md @@ -399,19 +399,19 @@ 次の図に示すように、双方向連結リストの先頭ノードと末尾ノードを両端キューの先頭と末尾と見なし、両端でノードを追加および削除する機能を実現します。 -=== "LinkedListDeque" +=== "<1>" ![連結リストによる両端キューのエンキューとデキュー](deque.assets/linkedlist_deque_step1.png) -=== "push_last()" +=== "<2>" ![linkedlist_deque_push_last](deque.assets/linkedlist_deque_step2_push_last.png) -=== "push_first()" +=== "<3>" ![linkedlist_deque_push_first](deque.assets/linkedlist_deque_step3_push_first.png) -=== "pop_last()" +=== "<4>" ![linkedlist_deque_pop_last](deque.assets/linkedlist_deque_step4_pop_last.png) -=== "pop_first()" +=== "<5>" ![linkedlist_deque_pop_first](deque.assets/linkedlist_deque_step5_pop_first.png) 実装コードは次のとおりです: @@ -424,19 +424,19 @@ 次の図に示すように、配列によるキュー実装と同様に、循環配列を使って両端キューを実装することもできます。 -=== "ArrayDeque" +=== "<1>" ![配列による両端キューのエンキューとデキュー](deque.assets/array_deque_step1.png) -=== "push_last()" +=== "<2>" ![array_deque_push_last](deque.assets/array_deque_step2_push_last.png) -=== "push_first()" +=== "<3>" ![array_deque_push_first](deque.assets/array_deque_step3_push_first.png) -=== "pop_last()" +=== "<4>" ![array_deque_pop_last](deque.assets/array_deque_step4_pop_last.png) -=== "pop_first()" +=== "<5>" ![array_deque_pop_first](deque.assets/array_deque_step5_pop_first.png) キュー実装を土台として、「先頭へのエンキュー」と「末尾からのデキュー」のメソッドを追加するだけで済みます: diff --git a/ja/docs/chapter_stack_and_queue/queue.md b/ja/docs/chapter_stack_and_queue/queue.md index 996ba59bf..7766c7aa6 100644 --- a/ja/docs/chapter_stack_and_queue/queue.md +++ b/ja/docs/chapter_stack_and_queue/queue.md @@ -368,13 +368,13 @@ 下図のように、連結リストの「先頭ノード」と「末尾ノード」をそれぞれ「キュー先頭」と「キュー末尾」とみなし、キュー末尾ではノードの追加のみ、キュー先頭ではノードの削除のみを行うようにします。 -=== "LinkedListQueue" +=== "<1>" ![連結リストでキューを実装したエンキューとデキュー操作](queue.assets/linkedlist_queue_step1.png) -=== "push()" +=== "<2>" ![linkedlist_queue_push](queue.assets/linkedlist_queue_step2_push.png) -=== "pop()" +=== "<3>" ![linkedlist_queue_pop](queue.assets/linkedlist_queue_step3_pop.png) 以下は連結リストでキューを実装するコードです: @@ -396,13 +396,13 @@ このように、エンキューとデキューはいずれも 1 回の操作だけで済み、時間計算量はともに $O(1)$ です。 -=== "ArrayQueue" +=== "<1>" ![配列でキューを実装したエンキューとデキュー操作](queue.assets/array_queue_step1.png) -=== "push()" +=== "<2>" ![array_queue_push](queue.assets/array_queue_step2_push.png) -=== "pop()" +=== "<3>" ![array_queue_pop](queue.assets/array_queue_step3_pop.png) ここで 1 つ問題があります。エンキューとデキューを繰り返すと、`front` と `rear` はどちらも右へ移動し続け、**配列の末尾に達するとそれ以上進めなくなります**。この問題を解決するために、配列を先頭と末尾がつながった「環状配列」とみなします。 diff --git a/ja/docs/chapter_stack_and_queue/stack.md b/ja/docs/chapter_stack_and_queue/stack.md index 75529a332..aae83ac95 100644 --- a/ja/docs/chapter_stack_and_queue/stack.md +++ b/ja/docs/chapter_stack_and_queue/stack.md @@ -365,13 +365,13 @@ 下図のように、プッシュ操作では要素を連結リストの先頭に挿入するだけでよく、このノード挿入方法は「頭部挿入法」と呼ばれます。ポップ操作では、先頭ノードを連結リストから削除するだけです。 -=== "LinkedListStack" +=== "<1>" ![連結リストによるスタック実装のプッシュ・ポップ操作](stack.assets/linkedlist_stack_step1.png) -=== "push()" +=== "<2>" ![linkedlist_stack_push](stack.assets/linkedlist_stack_step2_push.png) -=== "pop()" +=== "<3>" ![linkedlist_stack_pop](stack.assets/linkedlist_stack_step3_pop.png) 以下は、連結リストによってスタックを実装したコード例です: @@ -384,13 +384,13 @@ 配列でスタックを実装する場合、配列の末尾をスタックトップとして扱えます。下図のように、プッシュとポップはそれぞれ配列末尾への要素追加と削除に対応し、どちらの時間計算量も $O(1)$ です。 -=== "ArrayStack" +=== "<1>" ![配列によるスタック実装のプッシュ・ポップ操作](stack.assets/array_stack_step1.png) -=== "push()" +=== "<2>" ![array_stack_push](stack.assets/array_stack_step2_push.png) -=== "pop()" +=== "<3>" ![array_stack_pop](stack.assets/array_stack_step3_pop.png) プッシュされる要素は際限なく増える可能性があるため、動的配列を使えば、配列の拡張を自前で処理する必要がありません。以下にコード例を示します: diff --git a/overrides/zensical/javascripts/animation_player.js b/overrides/zensical/javascripts/animation_player.js new file mode 100644 index 000000000..9bb22fbfb --- /dev/null +++ b/overrides/zensical/javascripts/animation_player.js @@ -0,0 +1,253 @@ +(() => { + const ANIMATION_LABEL_PATTERN = /^<\d+>$/; + const AUTO_SLIDE_INITIAL_DELAY_MS = 1000; + const AUTO_SLIDE_INTERVAL_MS = 1500; + const PLAY_LABEL = "播放幻灯片"; + const PAUSE_LABEL = "暂停幻灯片"; + const SVG_NS = "http://www.w3.org/2000/svg"; + const FA_PLAY_PATH = + "M91.2 36.9c-12.4-6.8-27.4-6.5-39.6.7S32 57.9 32 72v368c0 14.1 7.5 27.2 19.6 34.4s27.2 7.5 39.6.7l336-184c12.8-7 20.8-20.5 20.8-35.1s-8-28.1-20.8-35.1z"; + const FA_PAUSE_PATH = + "M48 32C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm224 0c-26.5 0-48 21.5-48 48v352c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z"; + const FA_ARROW_LEFT_PATH = + "M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H109.3l105.4-105.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z"; + const FA_ARROW_RIGHT_PATH = + "M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h370.7L297.3 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z"; + const initializedSets = new WeakSet(); + const controllers = new Set(); + + const getCheckedIndex = (inputs) => { + const checkedIndex = inputs.findIndex((input) => input.checked); + return checkedIndex === -1 ? 0 : checkedIndex; + }; + + const setCheckedIndex = (inputs, index) => { + const normalizedIndex = ((index % inputs.length) + inputs.length) % inputs.length; + inputs[normalizedIndex].checked = true; + return normalizedIndex; + }; + + const isAnimationSet = (tabbedSet) => { + const labels = Array.from(tabbedSet.querySelectorAll(":scope > .tabbed-labels > label")); + if (labels.length < 2) { + return false; + } + return labels.every((label) => ANIMATION_LABEL_PATTERN.test(label.textContent.trim())); + }; + + const createSvgIcon = ({ className, path, viewBox, width, height }) => { + const icon = document.createElementNS(SVG_NS, "svg"); + const iconPath = document.createElementNS(SVG_NS, "path"); + + icon.setAttribute("class", className); + icon.setAttribute("aria-hidden", "true"); + icon.setAttribute("viewBox", viewBox); + icon.setAttribute("focusable", "false"); + if (width) { + icon.setAttribute("width", width); + } + if (height) { + icon.setAttribute("height", height); + } + iconPath.setAttribute("d", path); + icon.append(iconPath); + return { icon, iconPath }; + }; + + const createIconButton = ({ className, ariaLabel, path }) => { + const button = document.createElement("button"); + const { icon } = createSvgIcon({ + className: "animation-controls__nav-icon", + path, + viewBox: "0 0 512 512", + }); + + button.type = "button"; + button.className = `animation-controls__button ${className}`; + button.setAttribute("aria-label", ariaLabel); + button.append(icon); + return button; + }; + + const createPlayButton = () => { + const button = document.createElement("button"); + const glyph = document.createElement("span"); + const { icon, iconPath } = createSvgIcon({ + className: "animation-controls__play-icon", + path: FA_PLAY_PATH, + viewBox: "0 0 448 512", + width: "12", + height: "12", + }); + const srOnly = document.createElement("span"); + + button.type = "button"; + button.className = "animation-controls__button animation-controls__play"; + button.setAttribute("aria-label", PLAY_LABEL); + + glyph.className = "animation-controls__play-glyph"; + + icon.setAttribute("preserveAspectRatio", "xMidYMid meet"); + glyph.append(icon); + + srOnly.className = "animation-controls__sr-only"; + srOnly.textContent = PLAY_LABEL; + + button.append(glyph, srOnly); + return { button, srOnly, icon, iconPath }; + }; + + const initAnimationSet = (tabbedSet) => { + if (initializedSets.has(tabbedSet) || !isAnimationSet(tabbedSet)) { + return; + } + + const inputs = Array.from(tabbedSet.querySelectorAll(':scope > input[type="radio"]')); + const tabbedContent = tabbedSet.querySelector(":scope > .tabbed-content"); + if (inputs.length < 2 || !tabbedContent) { + return; + } + + initializedSets.add(tabbedSet); + tabbedSet.dataset.autoSlide = "true"; + + const controls = document.createElement("div"); + controls.className = "animation-controls"; + + const playControl = createPlayButton(); + const playButton = playControl.button; + const nav = document.createElement("div"); + nav.className = "animation-controls__nav"; + + const prevButton = createIconButton({ + className: "animation-controls__prev", + ariaLabel: "上一页", + path: FA_ARROW_LEFT_PATH, + }); + const pageIndicator = document.createElement("span"); + pageIndicator.className = "animation-controls__page"; + pageIndicator.setAttribute("aria-live", "polite"); + + const nextButton = createIconButton({ + className: "animation-controls__next", + ariaLabel: "下一页", + path: FA_ARROW_RIGHT_PATH, + }); + + nav.append(prevButton, pageIndicator, nextButton); + controls.append(playButton, nav); + tabbedContent.insertAdjacentElement("afterend", controls); + + const state = { + inputs, + currentIndex: getCheckedIndex(inputs), + intervalId: null, + timeoutId: null, + isPlaying: false, + }; + + const updatePlayButton = () => { + const label = state.isPlaying ? PAUSE_LABEL : PLAY_LABEL; + playButton.setAttribute("aria-label", label); + playButton.classList.toggle("is-playing", state.isPlaying); + playControl.srOnly.textContent = label; + playControl.icon.setAttribute("viewBox", state.isPlaying ? "0 0 384 512" : "0 0 448 512"); + playControl.icon.setAttribute("width", state.isPlaying ? "10" : "12"); + playControl.iconPath.setAttribute("d", state.isPlaying ? FA_PAUSE_PATH : FA_PLAY_PATH); + }; + + const updatePageIndicator = () => { + pageIndicator.textContent = `${state.currentIndex + 1} / ${inputs.length}`; + }; + + const stop = () => { + if (state.timeoutId !== null) { + window.clearTimeout(state.timeoutId); + state.timeoutId = null; + } + if (state.intervalId !== null) { + window.clearInterval(state.intervalId); + state.intervalId = null; + } + state.isPlaying = false; + updatePlayButton(); + }; + + const syncCurrentIndex = () => { + state.currentIndex = getCheckedIndex(inputs); + }; + + const moveTo = (index) => { + state.currentIndex = setCheckedIndex(inputs, index); + updatePageIndicator(); + }; + + const step = (delta) => { + moveTo(state.currentIndex + delta); + }; + + const start = () => { + if (state.isPlaying) { + return; + } + state.isPlaying = true; + updatePlayButton(); + state.timeoutId = window.setTimeout(() => { + step(1); + state.timeoutId = null; + state.intervalId = window.setInterval(() => { + step(1); + }, AUTO_SLIDE_INTERVAL_MS); + }, AUTO_SLIDE_INITIAL_DELAY_MS); + }; + + playButton.addEventListener("click", () => { + if (state.isPlaying) { + stop(); + return; + } + syncCurrentIndex(); + start(); + }); + + prevButton.addEventListener("click", () => { + syncCurrentIndex(); + step(-1); + }); + + nextButton.addEventListener("click", () => { + syncCurrentIndex(); + step(1); + }); + + inputs.forEach((input, index) => { + input.addEventListener("change", () => { + if (input.checked) { + state.currentIndex = index; + updatePageIndicator(); + } + }); + }); + + controllers.add(stop); + updatePlayButton(); + updatePageIndicator(); + }; + + const initAutoSlide = () => { + document.querySelectorAll(".tabbed-set").forEach(initAnimationSet); + }; + + document.addEventListener("visibilitychange", () => { + if (!document.hidden) { + return; + } + controllers.forEach((stop) => stop()); + }); + + if (document.readyState === "loading") { + document.addEventListener("DOMContentLoaded", initAutoSlide, { once: true }); + } else { + initAutoSlide(); + } +})(); diff --git a/overrides/zensical/stylesheets/animation_player.css b/overrides/zensical/stylesheets/animation_player.css new file mode 100644 index 000000000..e311a3f50 --- /dev/null +++ b/overrides/zensical/stylesheets/animation_player.css @@ -0,0 +1,178 @@ +.md-typeset .tabbed-set[data-auto-slide="true"] { + margin-bottom: 1.5em; + overflow: hidden; + border-radius: 0.45rem; + background: var(--md-default-bg-color); + box-shadow: 0 0.12rem 0.45rem var(--md-default-fg-color--lightest); +} + +.md-typeset .tabbed-set[data-auto-slide="true"] > .tabbed-labels { + display: none; +} + +.md-typeset .tabbed-set[data-auto-slide="true"] > .tabbed-content { + margin-top: 0; + margin-bottom: 0; + background: var(--md-default-bg-color); +} + +.md-typeset .tabbed-set[data-auto-slide="true"] > .tabbed-content > .tabbed-block > p { + margin: 0; +} + +.md-typeset .tabbed-set[data-auto-slide="true"] .animation-figure { + border-radius: 0; + box-shadow: none; +} + +.animation-controls { + display: flex; + align-items: center; + justify-content: space-between; + gap: 0.55rem; + width: 100%; + margin: 0 auto; + padding: 0.14rem 0.3rem; + border-radius: 0; + background: color-mix(in srgb, var(--md-code-bg-color) 97.5%, var(--md-default-fg-color) 2.5%); + box-sizing: border-box; +} + +.animation-controls__nav { + display: flex; + align-items: center; + gap: 0.03rem; + margin-left: auto; + padding-left: 0.36rem; +} + +.animation-controls__button { + display: inline-flex; + align-items: center; + justify-content: center; + min-height: 1.64rem; + min-width: 1.64rem; + padding: 0.1rem; + border: 0; + background: transparent; + border-radius: 999px; + color: var(--md-default-fg-color); + cursor: pointer; + transition: + color 0.15s ease, + background-color 0.15s ease; +} + +.animation-controls__button:hover, +.animation-controls__button:focus-visible { + background: color-mix(in srgb, var(--md-code-bg-color) 92%, var(--md-default-fg-color) 8%); + color: var(--md-accent-fg-color); +} + +.animation-controls__play { + flex: 0 0 auto; + line-height: 0; +} + +.animation-controls__play-glyph { + display: inline-flex; + align-items: center; + justify-content: center; + width: 0.72rem; + height: 0.72rem; + flex: 0 0 auto; + overflow: hidden; +} + +.animation-controls__play-icon { + display: block; + width: 100%; + height: 100%; + fill: currentColor; + flex: 0 0 auto; +} + +.animation-controls__play-glyph .animation-controls__play-icon { + transform: translateX(0.04rem); +} + +.animation-controls__play.is-playing .animation-controls__play-glyph { + width: 0.6rem; +} + +.animation-controls__play.is-playing .animation-controls__play-glyph .animation-controls__play-icon { + transform: none; +} + +.animation-controls__nav-icon { + width: 0.72rem; + height: 0.72rem; + fill: currentColor; + flex: 0 0 auto; +} + +.animation-controls__page { + min-width: 2.25rem; + padding: 0 0.01rem; + color: var(--md-typeset-color); + font-size: 0.75rem; + font-variant-numeric: tabular-nums; + line-height: 1; + text-align: center; +} + +.animation-controls__sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0 0 0 0); + white-space: nowrap; + border: 0; +} + +[data-md-color-scheme="slate"] .animation-controls { + background: color-mix(in srgb, var(--md-code-bg-color) 91%, black 9%); +} + +[data-md-color-scheme="slate"] .animation-controls__button:hover, +[data-md-color-scheme="slate"] .animation-controls__button:focus-visible { + background: color-mix(in srgb, var(--md-code-bg-color) 92%, white 8%); +} + +[data-md-color-scheme="slate"] .md-typeset .tabbed-set[data-auto-slide="true"] { + background: var(--md-code-bg-color); + box-shadow: 0 0.2rem 0.75rem rgb(0 0 0 / 0.18); +} + +[data-md-color-scheme="slate"] .md-typeset .tabbed-set[data-auto-slide="true"] > .tabbed-content { + background: var(--md-code-bg-color); +} + +@media screen and (max-width: 44.9375em) { + .animation-controls { + flex-wrap: nowrap; + justify-content: space-between; + gap: 0.32rem; + padding: 0.11rem 0.22rem; + } + + .animation-controls__nav { + gap: 0.02rem; + padding-left: 0.16rem; + } + + .animation-controls__button { + min-width: 1.48rem; + min-height: 1.48rem; + padding: 0.08rem; + } + + .animation-controls__page { + min-width: 2rem; + padding: 0; + font-size: 0.7rem; + } +} diff --git a/overrides/zensical/zensical.toml b/overrides/zensical/zensical.toml index d4e36734f..60b6d9994 100644 --- a/overrides/zensical/zensical.toml +++ b/overrides/zensical/zensical.toml @@ -1,6 +1,12 @@ [project] extra_css = [ "stylesheets/extra.css", + "stylesheets/animation_player.css", +] +extra_javascript = [ + "javascripts/mathjax.js", + "https://cdnjs.cloudflare.com/ajax/libs/mathjax/3.2.2/es5/tex-mml-chtml.min.js", + "javascripts/animation_player.js", ] [project.theme] diff --git a/ru/docs/chapter_graph/graph_operations.md b/ru/docs/chapter_graph/graph_operations.md index f74b7cf04..5d873a5c2 100644 --- a/ru/docs/chapter_graph/graph_operations.md +++ b/ru/docs/chapter_graph/graph_operations.md @@ -11,19 +11,19 @@ - **Удаление вершины**: из матрицы смежности удаляется строка и столбец. При удалении первой строки и первого столбца достигается худший случай, когда требуется "сдвинуть влево вверх" $(n-1)^2$ элементов, поэтому используется $O(n^2)$ времени. - **Инициализация**: передаются $n$ вершин, затем инициализируется список вершин `vertices` длины $n$ , что требует $O(n)$ времени; после этого инициализируется матрица смежности `adjMat` размера $n \times n$ , что требует $O(n^2)$ времени. -=== "Инициализация матрицы смежности" +=== "<1>" ![Инициализация матрицы смежности, добавление и удаление ребер и вершин](graph_operations.assets/adjacency_matrix_step1_initialization.png) -=== "Добавление ребра" +=== "<2>" ![adjacency_matrix_add_edge](graph_operations.assets/adjacency_matrix_step2_add_edge.png) -=== "Удаление ребра" +=== "<3>" ![adjacency_matrix_remove_edge](graph_operations.assets/adjacency_matrix_step3_remove_edge.png) -=== "Добавление вершины" +=== "<4>" ![adjacency_matrix_add_vertex](graph_operations.assets/adjacency_matrix_step4_add_vertex.png) -=== "Удаление вершины" +=== "<5>" ![adjacency_matrix_remove_vertex](graph_operations.assets/adjacency_matrix_step5_remove_vertex.png) Ниже приведен код реализации графа на основе матрицы смежности: @@ -42,19 +42,19 @@ - **Удаление вершины**: требуется пройти по всему списку смежности и удалить все ребра, содержащие указанную вершину; это требует $O(n + m)$ времени. - **Инициализация**: в списке смежности создаются $n$ вершин и $2m$ ребер; это требует $O(n + m)$ времени. -=== "Инициализация списка смежности" +=== "<1>" ![Инициализация списка смежности, добавление и удаление ребер и вершин](graph_operations.assets/adjacency_list_step1_initialization.png) -=== "Добавление ребра" +=== "<2>" ![adjacency_list_add_edge](graph_operations.assets/adjacency_list_step2_add_edge.png) -=== "Удаление ребра" +=== "<3>" ![adjacency_list_remove_edge](graph_operations.assets/adjacency_list_step3_remove_edge.png) -=== "Добавление вершины" +=== "<4>" ![adjacency_list_add_vertex](graph_operations.assets/adjacency_list_step4_add_vertex.png) -=== "Удаление вершины" +=== "<5>" ![adjacency_list_remove_vertex](graph_operations.assets/adjacency_list_step5_remove_vertex.png) Ниже приведен код списка смежности. По сравнению с рисунками выше, реальная реализация имеет следующие отличия. diff --git a/ru/docs/chapter_stack_and_queue/deque.md b/ru/docs/chapter_stack_and_queue/deque.md index 3e8d40e6f..b4940865f 100644 --- a/ru/docs/chapter_stack_and_queue/deque.md +++ b/ru/docs/chapter_stack_and_queue/deque.md @@ -399,19 +399,19 @@ Как показано на рисунках ниже, мы рассматриваем головной и хвостовой узлы двусвязного списка как голову и хвост двусторонней очереди и одновременно реализуем функции добавления и удаления узлов с обеих сторон. -=== "LinkedListDeque" +=== "<1>" ![Операции enqueue и dequeue для двусторонней очереди на связном списке](deque.assets/linkedlist_deque_step1.png) -=== "push_last()" +=== "<2>" ![linkedlist_deque_push_last](deque.assets/linkedlist_deque_step2_push_last.png) -=== "push_first()" +=== "<3>" ![linkedlist_deque_push_first](deque.assets/linkedlist_deque_step3_push_first.png) -=== "pop_last()" +=== "<4>" ![linkedlist_deque_pop_last](deque.assets/linkedlist_deque_step4_pop_last.png) -=== "pop_first()" +=== "<5>" ![linkedlist_deque_pop_first](deque.assets/linkedlist_deque_step5_pop_first.png) Код реализации приведен ниже: @@ -424,19 +424,19 @@ Как показано на рисунках ниже, аналогично реализации обычной очереди на массиве мы также можем использовать кольцевой массив для реализации двусторонней очереди. -=== "ArrayDeque" +=== "<1>" ![Операции enqueue и dequeue для двусторонней очереди на массиве](deque.assets/array_deque_step1.png) -=== "push_last()" +=== "<2>" ![array_deque_push_last](deque.assets/array_deque_step2_push_last.png) -=== "push_first()" +=== "<3>" ![array_deque_push_first](deque.assets/array_deque_step3_push_first.png) -=== "pop_last()" +=== "<4>" ![array_deque_pop_last](deque.assets/array_deque_step4_pop_last.png) -=== "pop_first()" +=== "<5>" ![array_deque_pop_first](deque.assets/array_deque_step5_pop_first.png) На основе реализации обычной очереди нужно лишь добавить методы добавления в голову очереди и удаления из хвоста: diff --git a/ru/docs/chapter_stack_and_queue/queue.md b/ru/docs/chapter_stack_and_queue/queue.md index dbc817e05..1d63626c7 100644 --- a/ru/docs/chapter_stack_and_queue/queue.md +++ b/ru/docs/chapter_stack_and_queue/queue.md @@ -368,13 +368,13 @@ Как показано на рисунке ниже, мы можем рассматривать головной узел и хвостовой узел связного списка как голову очереди и хвост очереди соответственно, договорившись, что добавлять узлы можно только в хвост, а удалять - только из головы. -=== "LinkedListQueue" +=== "<1>" ![Операции enqueue и dequeue в реализации очереди на связном списке](queue.assets/linkedlist_queue_step1.png) -=== "push()" +=== "<2>" ![linkedlist_queue_push](queue.assets/linkedlist_queue_step2_push.png) -=== "pop()" +=== "<3>" ![linkedlist_queue_pop](queue.assets/linkedlist_queue_step3_pop.png) Ниже приведен код реализации очереди на связном списке: @@ -396,13 +396,13 @@ Можно увидеть, что и `enqueue` , и `dequeue` требуют всего одной операции, а значит обе имеют временную сложность $O(1)$ . -=== "ArrayQueue" +=== "<1>" ![Операции enqueue и dequeue в реализации очереди на массиве](queue.assets/array_queue_step1.png) -=== "push()" +=== "<2>" ![array_queue_push](queue.assets/array_queue_step2_push.png) -=== "pop()" +=== "<3>" ![array_queue_pop](queue.assets/array_queue_step3_pop.png) Ты можешь заметить еще одну проблему: при непрерывных операциях `enqueue` и `dequeue` значения `front` и `rear` оба движутся вправо, и **когда они доходят до конца массива, дальше сдвигаться уже нельзя**. Чтобы решить эту проблему, можно рассматривать массив как кольцевой массив, у которого начало и конец соединены. diff --git a/ru/docs/chapter_stack_and_queue/stack.md b/ru/docs/chapter_stack_and_queue/stack.md index f07ace915..6369412a1 100644 --- a/ru/docs/chapter_stack_and_queue/stack.md +++ b/ru/docs/chapter_stack_and_queue/stack.md @@ -365,13 +365,13 @@ Как показано на рисунке ниже, для операции `push` достаточно вставить элемент в голову связного списка. Такой способ вставки называется вставкой в голову. Для операции `pop` достаточно удалить головной узел из списка. -=== "LinkedListStack" +=== "<1>" ![Операции push и pop в реализации стека на связном списке](stack.assets/linkedlist_stack_step1.png) -=== "push()" +=== "<2>" ![linkedlist_stack_push](stack.assets/linkedlist_stack_step2_push.png) -=== "pop()" +=== "<3>" ![linkedlist_stack_pop](stack.assets/linkedlist_stack_step3_pop.png) Ниже приведен пример кода реализации стека на основе связного списка: @@ -384,13 +384,13 @@ Если реализовывать стек на основе массива, то хвост массива можно рассматривать как вершину стека. Как показано на рисунке ниже, операции `push` и `pop` соответствуют добавлению элемента в конец массива и удалению элемента из конца, обе имеют временную сложность $O(1)$ . -=== "ArrayStack" +=== "<1>" ![Операции push и pop в реализации стека на массиве](stack.assets/array_stack_step1.png) -=== "push()" +=== "<2>" ![array_stack_push](stack.assets/array_stack_step2_push.png) -=== "pop()" +=== "<3>" ![array_stack_pop](stack.assets/array_stack_step3_pop.png) Поскольку количество элементов, помещаемых в стек, может непрерывно расти, мы можем использовать динамический массив и тем самым не заниматься расширением массива вручную. Ниже приведен пример кода: diff --git a/zh-hant/docs/chapter_graph/graph_operations.md b/zh-hant/docs/chapter_graph/graph_operations.md index 08d964048..7cd784f6e 100644 --- a/zh-hant/docs/chapter_graph/graph_operations.md +++ b/zh-hant/docs/chapter_graph/graph_operations.md @@ -11,19 +11,19 @@ - **刪除頂點**:在鄰接矩陣中刪除一行一列。當刪除首行首列時達到最差情況,需要將 $(n-1)^2$ 個元素“向左上移動”,從而使用 $O(n^2)$ 時間。 - **初始化**:傳入 $n$ 個頂點,初始化長度為 $n$ 的頂點串列 `vertices` ,使用 $O(n)$ 時間;初始化 $n \times n$ 大小的鄰接矩陣 `adjMat` ,使用 $O(n^2)$ 時間。 -=== "初始化鄰接矩陣" +=== "<1>" ![鄰接矩陣的初始化、增刪邊、增刪頂點](graph_operations.assets/adjacency_matrix_step1_initialization.png) -=== "新增邊" +=== "<2>" ![adjacency_matrix_add_edge](graph_operations.assets/adjacency_matrix_step2_add_edge.png) -=== "刪除邊" +=== "<3>" ![adjacency_matrix_remove_edge](graph_operations.assets/adjacency_matrix_step3_remove_edge.png) -=== "新增頂點" +=== "<4>" ![adjacency_matrix_add_vertex](graph_operations.assets/adjacency_matrix_step4_add_vertex.png) -=== "刪除頂點" +=== "<5>" ![adjacency_matrix_remove_vertex](graph_operations.assets/adjacency_matrix_step5_remove_vertex.png) 以下是基於鄰接矩陣表示圖的實現程式碼: @@ -42,19 +42,19 @@ - **刪除頂點**:需走訪整個鄰接表,刪除包含指定頂點的所有邊,使用 $O(n + m)$ 時間。 - **初始化**:在鄰接表中建立 $n$ 個頂點和 $2m$ 條邊,使用 $O(n + m)$ 時間。 -=== "初始化鄰接表" +=== "<1>" ![鄰接表的初始化、增刪邊、增刪頂點](graph_operations.assets/adjacency_list_step1_initialization.png) -=== "新增邊" +=== "<2>" ![adjacency_list_add_edge](graph_operations.assets/adjacency_list_step2_add_edge.png) -=== "刪除邊" +=== "<3>" ![adjacency_list_remove_edge](graph_operations.assets/adjacency_list_step3_remove_edge.png) -=== "新增頂點" +=== "<4>" ![adjacency_list_add_vertex](graph_operations.assets/adjacency_list_step4_add_vertex.png) -=== "刪除頂點" +=== "<5>" ![adjacency_list_remove_vertex](graph_operations.assets/adjacency_list_step5_remove_vertex.png) 以下是鄰接表的程式碼實現。對比上圖,實際程式碼有以下不同。 diff --git a/zh-hant/docs/chapter_graph/graph_traversal.assets/graph_bfs.png b/zh-hant/docs/chapter_graph/graph_traversal.assets/graph_bfs.png index 6da42d7ee2cdbdfddbd853aee6813b8d44eb6c2a..fcc37fbf12125248ccdcb865717411d0c7abd392 100644 GIT binary patch literal 21449 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 bdYdakPq_2U_s2urf1%f{9j;Vd_I~_7#Kbz! diff --git a/zh-hant/docs/chapter_graph/graph_traversal.assets/graph_dfs.png b/zh-hant/docs/chapter_graph/graph_traversal.assets/graph_dfs.png index 51558df90994a7dd2fe93ea20e7211e19e2fe2e8..7dbd4c18a06142edbf51bcd835b3ccea00e553e4 100644 GIT binary patch literal 22836 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 literal 20657 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 Sh6I=Y=ILq~-YCC@kNh7vv-dgx diff --git a/zh-hant/docs/chapter_stack_and_queue/deque.md b/zh-hant/docs/chapter_stack_and_queue/deque.md index c56a3d2c0..777c3a9e0 100644 --- a/zh-hant/docs/chapter_stack_and_queue/deque.md +++ b/zh-hant/docs/chapter_stack_and_queue/deque.md @@ -399,19 +399,19 @@ 如下圖所示,我們將雙向鏈結串列的頭節點和尾節點視為雙向佇列的佇列首和佇列尾,同時實現在兩端新增和刪除節點的功能。 -=== "LinkedListDeque" +=== "<1>" ![基於鏈結串列實現雙向佇列的入列出列操作](deque.assets/linkedlist_deque_step1.png) -=== "push_last()" +=== "<2>" ![linkedlist_deque_push_last](deque.assets/linkedlist_deque_step2_push_last.png) -=== "push_first()" +=== "<3>" ![linkedlist_deque_push_first](deque.assets/linkedlist_deque_step3_push_first.png) -=== "pop_last()" +=== "<4>" ![linkedlist_deque_pop_last](deque.assets/linkedlist_deque_step4_pop_last.png) -=== "pop_first()" +=== "<5>" ![linkedlist_deque_pop_first](deque.assets/linkedlist_deque_step5_pop_first.png) 實現程式碼如下所示: @@ -424,19 +424,19 @@ 如下圖所示,與基於陣列實現佇列類似,我們也可以使用環形陣列來實現雙向佇列。 -=== "ArrayDeque" +=== "<1>" ![基於陣列實現雙向佇列的入列出列操作](deque.assets/array_deque_step1.png) -=== "push_last()" +=== "<2>" ![array_deque_push_last](deque.assets/array_deque_step2_push_last.png) -=== "push_first()" +=== "<3>" ![array_deque_push_first](deque.assets/array_deque_step3_push_first.png) -=== "pop_last()" +=== "<4>" ![array_deque_pop_last](deque.assets/array_deque_step4_pop_last.png) -=== "pop_first()" +=== "<5>" ![array_deque_pop_first](deque.assets/array_deque_step5_pop_first.png) 在佇列的實現基礎上,僅需增加“佇列首入列”和“佇列尾出列”的方法: diff --git a/zh-hant/docs/chapter_stack_and_queue/queue.md b/zh-hant/docs/chapter_stack_and_queue/queue.md index 5d00e6acd..b4fef52d2 100755 --- a/zh-hant/docs/chapter_stack_and_queue/queue.md +++ b/zh-hant/docs/chapter_stack_and_queue/queue.md @@ -368,13 +368,13 @@ 如下圖所示,我們可以將鏈結串列的“頭節點”和“尾節點”分別視為“佇列首”和“佇列尾”,規定佇列尾僅可新增節點,佇列首僅可刪除節點。 -=== "LinkedListQueue" +=== "<1>" ![基於鏈結串列實現佇列的入列出列操作](queue.assets/linkedlist_queue_step1.png) -=== "push()" +=== "<2>" ![linkedlist_queue_push](queue.assets/linkedlist_queue_step2_push.png) -=== "pop()" +=== "<3>" ![linkedlist_queue_pop](queue.assets/linkedlist_queue_step3_pop.png) 以下是用鏈結串列實現佇列的程式碼: @@ -396,13 +396,13 @@ 可以看到,入列和出列操作都只需進行一次操作,時間複雜度均為 $O(1)$ 。 -=== "ArrayQueue" +=== "<1>" ![基於陣列實現佇列的入列出列操作](queue.assets/array_queue_step1.png) -=== "push()" +=== "<2>" ![array_queue_push](queue.assets/array_queue_step2_push.png) -=== "pop()" +=== "<3>" ![array_queue_pop](queue.assets/array_queue_step3_pop.png) 你可能會發現一個問題:在不斷進行入列和出列的過程中,`front` 和 `rear` 都在向右移動,**當它們到達陣列尾部時就無法繼續移動了**。為了解決此問題,我們可以將陣列視為首尾相接的“環形陣列”。 diff --git a/zh-hant/docs/chapter_stack_and_queue/stack.md b/zh-hant/docs/chapter_stack_and_queue/stack.md index 70b5ba854..f57133d2d 100755 --- a/zh-hant/docs/chapter_stack_and_queue/stack.md +++ b/zh-hant/docs/chapter_stack_and_queue/stack.md @@ -365,13 +365,13 @@ 如下圖所示,對於入堆疊操作,我們只需將元素插入鏈結串列頭部,這種節點插入方法被稱為“頭插法”。而對於出堆疊操作,只需將頭節點從鏈結串列中刪除即可。 -=== "LinkedListStack" +=== "<1>" ![基於鏈結串列實現堆疊的入堆疊出堆疊操作](stack.assets/linkedlist_stack_step1.png) -=== "push()" +=== "<2>" ![linkedlist_stack_push](stack.assets/linkedlist_stack_step2_push.png) -=== "pop()" +=== "<3>" ![linkedlist_stack_pop](stack.assets/linkedlist_stack_step3_pop.png) 以下是基於鏈結串列實現堆疊的示例程式碼: @@ -384,13 +384,13 @@ 使用陣列實現堆疊時,我們可以將陣列的尾部作為堆疊頂。如下圖所示,入堆疊與出堆疊操作分別對應在陣列尾部新增元素與刪除元素,時間複雜度都為 $O(1)$ 。 -=== "ArrayStack" +=== "<1>" ![基於陣列實現堆疊的入堆疊出堆疊操作](stack.assets/array_stack_step1.png) -=== "push()" +=== "<2>" ![array_stack_push](stack.assets/array_stack_step2_push.png) -=== "pop()" +=== "<3>" ![array_stack_pop](stack.assets/array_stack_step3_pop.png) 由於入堆疊的元素可能會源源不斷地增加,因此我們可以使用動態陣列,這樣就無須自行處理陣列擴容問題。以下為示例程式碼: