@@ -251,8 +251,10 @@ <h3 class="text-xl font-semibold text-teal-800 mt-6 mb-3">戦略のポイント<
251251 TypeScript実装(最適化版)
252252 </ h2 >
253253
254- < pre class ="line-numbers "> < code class ="language-typescript "> declare interface Array< T > {
255- snail(rowsCount: number, colsCount: number): T[][];
254+ < pre class ="line-numbers "> < code class ="language-typescript "> declare global {
255+ interface Array<T> {
256+ snail(this: T[], rowsCount: number, colsCount: number): T[][];
257+ }
256258}
257259
258260/**
@@ -1297,18 +1299,20 @@ <h3 class="text-xl font-semibold text-teal-800 mt-8 mb-4">実装方法の比較<
12971299 < p className = "font-semibold text-emerald-900" >
12981300 Snail Traversalパターン:
12991301 </ p >
1300- { visual . result2d [ 0 ] . map ( ( _ , colIdx ) => {
1301- const isEvenCol = colIdx % 2 === 0 ;
1302- const colValues = isEvenCol
1303- ? visual . result2d . map ( r => r [ colIdx ] )
1304- : [ ...visual . result2d ] . reverse ( ) . map ( r => r [ colIdx ] ) ;
1305-
1306- return (
1307- < li key = { colIdx } >
1308- • 列{ colIdx } : { isEvenCol ? '上から下' : '下から上' } [{ colValues . join ( ', ' ) } ]
1309- </ li >
1310- ) ;
1311- } ) }
1302+ < ul >
1303+ { visual . result2d [ 0 ] . map ( ( _ , colIdx ) => {
1304+ const isEvenCol = colIdx % 2 === 0 ;
1305+ const colValues = isEvenCol
1306+ ? visual . result2d . map ( r => r [ colIdx ] )
1307+ : [ ...visual . result2d ] . reverse ( ) . map ( r => r [ colIdx ] ) ;
1308+
1309+ return (
1310+ < li key = { colIdx } >
1311+ • 列{ colIdx } : { isEvenCol ? '上から下' : '下から上' } [{ colValues . join ( ', ' ) } ]
1312+ </ li >
1313+ ) ;
1314+ } ) }
1315+ </ ul >
13121316 </ div >
13131317 </ div >
13141318 ) }
@@ -1619,10 +1623,5 @@ <h3 className="mt-0 text-teal-800 text-xl font-semibold">
16191623 const root = ReactDOM . createRoot ( document . getElementById ( 'react-root' ) ) ;
16201624 root . render ( < SnailTraversalSteps /> ) ;
16211625 </ script >
1622- < script src ="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js "> </ script >
1623- < script src ="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-typescript.min.js "> </ script >
1624- < script src ="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/line-numbers/prism-line-numbers.min.js "> </ script >
1625- < script src ="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/toolbar/prism-toolbar.min.js "> </ script >
1626- < script src ="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js "> </ script >
16271626 </ body>
16281627</ html>
0 commit comments