เบžเบฒเบชเบฒเบญเบฑเบ‡เบเบดเบ”เบžเบฒเบชเบฒเบเบฃเบฑเปˆเบ‡เปเบญเบชเบ›เบฒเป‚เบเบ™

OnWorks favicon

PDL::Threadingp - เบญเบญเบ™เบฅเบฒเบเปƒเบ™เบ„เบฅเบฒเบง

เปเบฅเปˆเบ™ PDL::Threadingp เปƒเบ™ OnWorks เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป‚เบฎเบ”เบ•เบดเป‰เบ‡เบŸเบฃเบตเบœเปˆเบฒเบ™ Ubuntu Online, Fedora Online, Windows online emulator เบซเบผเบท MAC OS online emulator

เบ™เบตเป‰เปเบกเปˆเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ PDL::Threadingp เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป„เบ”เป‰เปƒเบ™ OnWorks เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เป‚เบฎเบ”เบ•เบดเป‰เบ‡เบŸเบฃเบตเป‚เบ”เบเปƒเบŠเป‰เบซเบ™เบถเปˆเบ‡เปƒเบ™เบซเบผเบฒเบเป†เบšเปˆเบญเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบญเบญเบ™เป„เบฅเบ™เปŒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบŠเบฑเปˆเบ™ Ubuntu Online, Fedora Online, Windows online emulator เบซเบผเบท MAC OS online emulator

เป‚เบ„เบ‡เบเบฒเบ™:

NAME


PDL::Threading - Tutorial เบชเปเบฒเบฅเบฑเบšเบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ” Threading เบ‚เบญเบ‡ PDL

เบžเบฒเบเบชเบฐเป€เบซเบ™เบต


เบซเบ™เบถเปˆเบ‡เปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡ PDL เปเบกเปˆเบ™ เบเบฐเบ—เบนเป‰, เบŠเบถเปˆเบ‡เบชเบฒเบกเบฒเบ”เบœเบฐเบฅเบดเบ”เบซเบ™เบฒเปเบซเบ™เป‰เบ™เบซเบผเบฒเบเปเบฅเบฐ
เบฅเบฐเบซเบฑเบ” PDL เบ—เบตเปˆเป„เบงเบซเบผเบฒเบเป‚เบ”เบเบเบฒเบ™เบซเบผเบตเบเบฅเปˆเบฝเบ‡เบซเบผเบฒเบ nested เบชเปเบฒเบฅเบฑเบš loops เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰ C เปเบฅเบฐ BASIC เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™
เบ„เบธเป‰เบ™เป€เบ„เบตเบเบเบฑเบš. เบšเบฑเบ™เบซเบฒเปเบกเปˆเบ™เบงเปˆเบฒเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป€เบงเบฅเบฒเบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบ„เบธเป‰เบ™เป€เบ„เบตเบเบเบฑเบš, เปเบฅเบฐเบœเบนเป‰เปƒเบŠเป‰เปƒเบซเบกเปˆเบญเบฒเบ”เบˆเบฐเบšเปเปˆ
เบฎเบนเป‰เบˆเบฑเบเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ‚เบญเบ‡ threading.

เบžเบฒเบชเบฒ vector เบญเบทเปˆเบ™เป†, เป€เบŠเบฑเปˆเบ™ MATLAB, เปƒเบŠเป‰ subset เบ‚เบญเบ‡เป€เบ•เบฑเบเบ™เบดเบเบเบฒเบ™ threading, เปเบ•เปˆ
PDL เบชเปˆเบญเบ‡เปเบชเบ‡เป‚เบ”เบเบเบฒเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบžเบงเบเบกเบฑเบ™เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™เบชเปเบฒเบฅเบฑเบšเบ—เบธเบเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆ vector.

เป€เบ—เบเป‚เบ™เป‚เบฅเบเบต: PIDDLE


MATLAB เป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบดเบซเบกเบฒเบเป€เบ–เบดเบ‡ vectors, matrices, เปเบฅเบฐ arrays. Perl เบกเบต arrays เปเบฅเป‰เบง, เปเบฅเบฐ
เบ„เปเบฒเบชเบฑเบš "vector" เปเบฅเบฐ "matrix" เป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบดเบซเบกเบฒเบเป€เบ–เบดเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบซเบ™เบถเปˆเบ‡เปเบฅเบฐเบชเบญเบ‡เบกเบดเบ•เบดเบฅเบฐเบ”เบฑเบšเบ‚เบญเบ‡
เบ‚เปเป‰เบกเบนเบ™. เบšเปเปˆเบกเบตเบ„เปเบฒเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบˆเบฐเบญเบฐเบ—เบดเบšเบฒเบเบงเบฑเบ”เบ–เบธเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ, เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ PDL เป„เบ”เป‰เบชเป‰เบฒเบ‡เบ„เปเบฒเบชเบฑเบš
"เบ›เบดเบง"เป€เบžเบทเปˆเบญเปƒเบซเป‰เบŠเบทเปˆเบเบฑเบšเบ›เบฐเป€เบžเบ”เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ.

A เบ›เบดเบง เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบŠเบธเบ”เบ‚เบญเบ‡เบ•เบปเบงเป€เบฅเบเบ—เบตเปˆเบˆเบฑเบ”เป€เบ›เบฑเบ™เบŠเบธเบ”เบ‚เปเป‰เบกเบนเบ™ N-dimensional. เบ›เป‰เบฒ
เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปเบฅเบฐเบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเป„เบงเบ‚เบญเบ‡ matrices N-dimensional เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ. เบžเบงเบโ€‹เป€เบ‚เบปเบฒโ€‹เปเบกเปˆเบ™
เป€เปเบฒเบฐเบชเบณเบฅเบฑเบšเบงเบฝเบเบ•เบปเบงเป€เบฅเบ.

เบ„เบดเบ” IN เบ‚เปเป‰เบเปเบฒเบ™เบปเบ” OF เบเบฒเบ™เบฅเบปเบ‡เบ—เบทเบ™


เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป„เบ”เป‰เปƒเบŠเป‰ PDL เป€เบ›เบฑเบ™เป€เบงเบฅเบฒเป€เบฅเบฑเบเบ™เป‰เบญเบเปเบฅเป‰เบง, เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเปƒเบŠเป‰ threading เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™
เบฎเบฑเบšเบฎเบนเป‰เบกเบฑเบ™. เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบเบฐ PDL (เบžเบดเบก "perldl" เบซเบผเบท "pdl2" เบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบšเบดเบ™). เบ•เบปเบงเบขเปˆเบฒเบ‡เบชเปˆเบงเบ™เปƒเบซเบเปˆ
เปƒเบ™เบšเบปเบ”เบชเบญเบ™เบ™เบตเป‰เปƒเบŠเป‰เปเบเบฐ PDL. เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒ PDL::NiceSlice เปเบฅเบฐ PDL::AutoLoader เปเบกเปˆเบ™
เป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡:

% pdl2
perlDL shell v1.352
...
เป€เบ›เบตเบ”เปƒเบŠเป‰ ReadLines, NiceSlice, MultiLines เปเบฅเป‰เบง
...
เปเบฒเบเป€เบซเบ”: AutoLoader เบšเปเปˆเป„เบ”เป‰เป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™ ('เปƒเบŠเป‰ PDL::AutoLoader' เปเบ™เบฐเบ™เบณ)

pdl>

เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบตเป‰, NiceSlice เป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เปเบ•เปˆ AutoLoader เบšเปเปˆเปเบกเปˆเบ™. เป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™
เบกเบฑเบ™, เบžเบดเบก "เปƒเบŠเป‰ PDL::AutoLoader".

เปƒเบซเป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบชเบญเบ‡เบกเบดเบ•เบด เบ›เบดเบง:

pdl> $a = เบฅเปเบฒเบ”เบฑเบš(11,9)
pdl> p $a
[
[ 0 1 2 3 4 5 6 7 8 9 10 ]
[ 11 12 13 14 15 16 17 18 19 20 21 ]
[ 22 23 24 25 26 27 28 29 30 31 32 ]
[ 33 34 35 36 37 38 39 40 41 42 43 ]
[ 44 45 46 47 48 49 50 51 52 53 54 ]
[ 55 56 57 58 59 60 61 62 63 64 65 ]
[ 66 67 68 69 70 71 72 73 74 75 76 ]
[ 77 78 79 80 81 82 83 84 85 86 87 ]
[ 88 89 90 91 92 93 94 95 96 97 98 ]
]

เบงเบดเบ—เบตเบเบฒเบ™ "เบ‚เปเป‰เบกเบนเบ™" เป€เบฎเบฑเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบกเบตเบ‚เปเป‰เบกเบนเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบเปˆเบฝเบงเบเบฑเบš a เบ›เบดเบง:

pdl> p $a->เบ‚เปเป‰เบกเบนเบ™
PDL: Double D [11,9]

เบญเบฑเบ™เบ™เบตเป‰เบšเบญเบเบžเบงเบเป€เบฎเบปเบฒเบงเปˆเบฒ $a เปเบกเปˆเบ™ 11 x 9 เบ›เบดเบง เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบ•เบปเบงเป€เบฅเบเบ„เบงเบฒเบกเปเบกเปˆเบ™เบเปเบฒเบชเบญเบ‡เป€เบ—เบปเปˆเบฒ. เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒ
เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบก 3 เปƒเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบฑเบ‡เปเบปเบ”เปƒเบ™ "nxm", เบžเบฒเบชเบฒเบžเบทเป‰เบ™เป€เบกเบทเบญเบ‡เบˆเบฐเปƒเบŠเป‰เบชเบญเบ‡
nested for-loops:

# Pseudo-code. เบงเบดเบ—เบตเบเบฒเบ™เปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบกเป€เบžเบทเปˆเบญเป€เบžเบตเปˆเบก 3 เปƒเบชเปˆเบญเบฒเป€เบฃ.
เบชเปเบฒเบฅเบฑเบš (x=0; x < n; x++) {
เบชเปเบฒเบฅเบฑเบš (y=0; y < m; y++) {
a(x,y) = a(x,y) + 3
}
}

เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹: เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเบ”เบฑเบ”เบŠเบฐเบ™เบตเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆเบ—เบตเปˆ 0, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบš Perl, C เปเบฅเบฐ Java (เปเบฅเบฐเปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฒเบ MATLAB เปเบฅเบฐ IDL).

เปเบ•เปˆเบ”เป‰เบงเบ PDL, เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™:

pdl> $b = $a + 3
pdl> p $b
[
[ 3 4 5 6 7 8 9 10 11 12 13 ]
[ 14 15 16 17 18 19 20 21 22 23 24 ]
[ 25 26 27 28 29 30 31 32 33 34 35 ]
[ 36 37 38 39 40 41 42 43 44 45 46 ]
[ 47 48 49 50 51 52 53 54 55 56 57 ]
[ 58 59 60 61 62 63 64 65 66 67 68 ]
[ 69 70 71 72 73 74 75 76 77 78 79 ]
[ 80 81 82 83 84 85 86 87 88 89 90 ]
[ 91 92 93 94 95 96 97 98 99 100 101 ]
]

เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡ threading, เปเบฅเบฐเบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบŠเบญเบšเปเบงเบ•เบปเบงเป€เบฅเบเบ—เบฑเบ‡เบซเบกเบปเบ”
เป€เบ„เบทเปˆเบญเบ‡โ€‹เบกเบทโ€‹เป€เบฎเบฑเบ”. เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™ "+ 3" เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ•เบฒเบกเบชเบญเบ‡เบกเบดเบ•เบด. เบ•เบญเบ™เบ™เบตเป‰เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒ
เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบฅเบปเบšเป€เบชเบฑเป‰เบ™เบˆเบฒเบเบ—เบธเบเป†เปเบ–เบงเปƒเบ™ $a:

pdl> $line = เบฅเปเบฒเบ”เบฑเบš(11โ€‹)
pdl> p $line
[ 0 1 2 3 4 5 6 7 8 9 10 ]
pdl> $c = $a - $line
pdl> p $c
[
[ 0 0 0 0 0 0 0 0 0 0 0 ]
[ 11 11 11 11 11 11 11 11 11 11 11 ]
[ 22 22 22 22 22 22 22 22 22 22 22 ]
[ 33 33 33 33 33 33 33 33 33 33 33 ]
[ 44 44 44 44 44 44 44 44 44 44 44 ]
[ 55 55 55 55 55 55 55 55 55 55 55 ]
[ 66 66 66 66 66 66 66 66 66 66 66 ]
[ 77 77 77 77 77 77 77 77 77 77 77 ]
[ 88 88 88 88 88 88 88 88 88 88 88 ]
]

เบชเบญเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบ„เบงเบ™เบชเบฑเบ‡เป€เบเบ”เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰: เบซเบ™เป‰เบฒเบ—เปเบฒเบญเบดเบ”, เบกเบนเบ™เบ„เปˆเบฒเบ‚เบญเบ‡ $a เปเบกเปˆเบ™เบเบฑเบ‡เบ„เบทเบเบฑเบ™. เบฅเบญเบ‡ "p $a" เป€เบžเบทเปˆเบญเบเบงเบ”เป€เบšเบดเปˆเบ‡.
เบญเบฑเบ™เบ—เบตเบชเบญเบ‡, PDL เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบฅเบปเบš $line เบˆเบฒเบเปเบ•เปˆเบฅเบฐเปเบ–เบงเปƒเบ™ $a. เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบกเบฑเบ™เบˆเบถเปˆเบ‡เป€เบฎเบฑเบ”เปเบ™เบงเบ™เบฑเป‰เบ™? เปƒเบซเป‰
เป€เบšเบดเปˆเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ $a, $line เปเบฅเบฐ $c:

pdl> p $line->info => PDL: Double D [11]
pdl> p $a->info => PDL: Double D [11,9]
pdl> p $c->info => PDL: Double D [11,9]

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ—เบฑเบ‡ $a เปเบฅเบฐ $line เบกเบตเบˆเปเบฒเบ™เบงเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ”เบฝเบงเบเบฑเบ™เบขเบนเปˆเปƒเบ™เบกเบดเบ•เบดเบ—เบต 0! PDL เปเบกเปˆเบ™เบซเบเบฑเบ‡
did เปเบกเปˆเบ™ thread เปƒเบ™เป„เบฅเบเบฐเบ‚เบฐเบซเบ™เบฒเบ”เบ—เบตเปˆเบชเบนเบ‡เบเบงเปˆเบฒเปƒเบ™ $a เปเบฅเบฐเป€เบฎเบฑเบ”เบŠเป‰เปเบฒเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ”เบฝเบงเบเบฑเบ™ 9 เป€เบ—เบทเปˆเบญ
เปเบ–เบงเบ—เบฑเบ‡เปเบปเบ”เปƒเบ™ $a. เบ™เบตเป‰เปเบกเปˆเบ™ PDL threading เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”.

เบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบฅเบปเบš $line เบˆเบฒเบเปเบ–เบงเบ—เปเบฒเบญเบดเบ”เปƒเบ™ $a เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™? เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปเบ™เบงเบ™เบฑเป‰เบ™เป‚เบ”เบ
เบฅเบฐเบšเบธเบชเบฒเบเบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡:

pdl> $a(:,0) -= $line
pdl> p $a
[
[ 0 0 0 0 0 0 0 0 0 0 0 ]
[ 11 12 13 14 15 16 17 18 19 20 21 ]
[ 22 23 24 25 26 27 28 29 30 31 32 ]
[ 33 34 35 36 37 38 39 40 41 42 43 ]
[ 44 45 46 47 48 49 50 51 52 53 54 ]
[ 55 56 57 58 59 60 61 62 63 64 65 ]
[ 66 67 68 69 70 71 72 73 74 75 76 ]
[ 77 78 79 80 81 82 83 84 85 86 87 ]
[ 88 89 90 91 92 93 94 95 96 97 98 ]
]

เป€เบšเบดเปˆเบ‡ PDL::Indexing เปเบฅเบฐ PDL::NiceSlice เป€เบžเบทเปˆเบญเบฎเบฝเบ™เบฎเบนเป‰เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบฅเบฐเบšเบธเบŠเบธเบ”เบเปˆเบญเบเบˆเบฒเบ piddles.

เบžเบฐเบฅเบฑเบ‡เบ‡เบฒเบ™เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบ‚เบญเบ‡ threading เบกเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบฎเบฑเบšเบฎเบนเป‰เบงเปˆเบฒ piddle เบชเบฒเบกเบฒเบ”เบกเบตเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบเบฒเบ™
เบ‚เบฐเปœเบฒเบ”! เบกเบฒเบชเป‰เบฒเบ‡ piddle 4 เบกเบดเบ•เบด:

pdl> $piddle_4D = เบฅเปเบฒเบ”เบฑเบš(11,3,7,2)
pdl> $c = $piddle_4D - $line

เบ”เบฝเบงเบ™เบตเป‰ $c เป€เบ›เบฑเบ™ piddle เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ”เบฝเบงเบเบฑเบ™เบเบฑเบš $piddle_4D.

pdl> p $piddle_4D->info => PDL: Double D [11,3,7,2]
pdl> p $c->info => PDL: Double D [11,3,7,2]

เป€เบงเบฅเบฒเบ™เบตเป‰ PDL เป„เบ”เป‰เบ–เบฑเบ”เปƒเบชเปˆเบชเบฒเบกเบกเบดเบ•เบดเบ—เบตเปˆเบชเบนเบ‡เบเบงเปˆเบฒเป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เบฅเบปเบš $line
เบ—เบธเบเบงเบดเบ—เบตเบ—เบฒเบ‡.

เปเบ•เปˆ, เบšเบฒเบ‡เบ—เบตเป€เบˆเบปเป‰เบฒเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบฅเบปเบšเบญเบญเบเบˆเบฒเบเปเบ–เบง (เบกเบดเบ•เบด 0), เปเบ•เปˆเบˆเบฒเบเบ–เบฑเบ™.
(เบกเบดเบ•เบด 1). เบ‚เป‰เบญเบเบˆเบฐเบฅเบปเบšเบ–เบฑเบ™เบ•เบปเบงเป€เบฅเบเบˆเบฒเบเปเบ•เปˆเบฅเบฐเบ–เบฑเบ™เปƒเบ™ $a เป„เบ”เป‰เปเบ™เบงเปƒเบ”?

pdl> $cols = เบฅเปเบฒเบ”เบฑเบš(9โ€‹)
pdl> p $a->info => PDL: Double D [11,9]
pdl> p $cols->info => PDL: Double D [9]

เบ•เบฒเบกเบ—เปเบฒเบกเบฐเบŠเบฒเบ”, เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบชเบฒเบกเบฒเบ”เบžเบฝเบ‡เปเบ•เปˆเบžเบดเบก "$a - $cols". เบ‚เบฐเปœเบฒเบ”เบšเปเปˆเบเบปเบ‡เบเบฑเบ™:

pdl> p $a - $cols
PDL: PDL::Ops::minus(a,b,c): เบžเบฒเบฃเบฒเบกเบดเป€เบ•เบต 'b'
PDL: เบ‚เบฐเปœเบฒเบ”เบเบฐเบ—เบนเป‰เบ—เบตเปˆเบšเปเปˆเบเบปเบ‡เบเบฑเบ™ 0: เบ„เบงเบ™เป€เบ›เบฑเบ™ 11, เปเบกเปˆเบ™ 9

เบžเบงเบเป€เบฎเบปเบฒเบšเบญเบ PDL เปเบ™เบงเปƒเบ”เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบฅเบปเบšเบญเบญเบเบˆเบฒเบเบกเบดเบ•เบด 1 เปเบ—เบ™?

เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™ DIMENSIONS


เบกเบตเบซเบผเบฒเบเบŸเบฑเบ‡เบŠเบฑเบ™ PDL เบ—เบตเปˆเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบˆเบฑเบ”เบฅเบฝเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ PDL arrays. เบžเบงเบโ€‹เป€เบ‚เบปเบฒโ€‹เปเบกเปˆเบ™
เบชเปˆเบงเบ™เปƒเบซเบเปˆเบเบงเบกเป€เบญเบปเบฒเปƒเบ™ PDL::Slices. เบชเบฒเบกเบญเบฑเบ™เบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบชเบธเบ”เปเบกเปˆเบ™:

xchg
mv
เบˆเบฑเบ”เบฎเบฝเบ‡ เปƒเปเปˆ

เบงเบดเบ—เบตเบเบฒเบ™: "xchg"
เบงเบดเบ—เบตเบเบฒเบ™ "xchg" "เบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™"เบชเบญเบ‡เบกเบดเบ•เบดเปƒเบ™ piddle:

pdl> $a = เบฅเปเบฒเบ”เบฑเบš(6,7,8,9)
pdl> $a_xchg = $a->xchg(0,3)

pdl> p $a->info => PDL: Double D [6,7,8,9]
pdl> p $a_xchg->info => PDL: Double D [9,7,8,6]
| |
VV
(เบกเบทเบ” 0) (เบกเบทเบ” 3)

เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเบ‚เบฐเบซเบ™เบฒเบ” 0 เปเบฅเบฐ 3 เป„เบ”เป‰เบ–เบทเบเปเบฅเบเบ›เปˆเบฝเบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบ‚เบฐเบซเบ™เบฒเบ”เบญเบทเปˆเบ™เป†.
เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒ "xchg" เบšเปเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡ $a. เบ•เบปเบงเปเบ›เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš $a เบเบฑเบ‡เบšเปเปˆเบ–เบทเบเปเบ•เบฐเบ•เป‰เบญเบ‡.

เบงเบดเบ—เบตเบเบฒเบ™: "mv"
เบงเบดเบ—เบตเบเบฒเบ™ "mv"เบเป‰เบฒเบ"เบซเบ™เบถเปˆเบ‡เบกเบดเบ•เบด, เปƒเบ™ piddle, เบเบฒเบ™เบ›เปˆเบฝเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบญเบทเปˆเบ™เป†เป€เบ›เบฑเบ™
เบˆเปเบฒเป€เบ›เบฑเบ™.

pdl> $a = sequence(6,7,8,9) (dim 0)
pdl> $a_mv = $a->mv(0,3) |
pdl> V _____
pdl> p $a->info => PDL: Double D [6,7,8,9]
pdl> p $a_mv->info => PDL: Double D [7,8,9,6]
----- |
V
(เบกเบทเบ” 3)

เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเป€เบกเบทเปˆเบญเบกเบดเบ•เบด 0 เบ–เบทเบเบเป‰เบฒเบเป„เบ›เบ•เบณเปเปœเปˆเบ‡ 3, เบกเบดเบ•เบดเบญเบทเปˆเบ™เบ—เบฑเบ‡เปเบปเบ”เบˆเบฐเบ•เป‰เบญเบ‡เป€เบ›เบฑเบ™
เบ›เปˆเบฝเบ™โ€‹เป„เบ›โ€‹เป€เบŠเบฑเปˆเบ™โ€‹เบ”เบฝเบงโ€‹เบเบฑเบ™. เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒ "mv" เบšเปเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡ $a. เบ•เบปเบงเปเบ›เป€เบ”เบตเบก $a เบเบฑเบ‡เบ„เบปเบ‡เบขเบนเปˆ
เบšเปเปˆเปเบ•เบฐเบ•เป‰เบญเบ‡.

เบงเบดเบ—เบตเบเบฒเบ™: "เบˆเบฑเบ”เบฅเปเบฒเบ”เบฑเบšเบ„เบทเบ™"
เบงเบดเบ—เบตเบเบฒเบ™ "เบˆเบฑเบ”เบฅเปเบฒเบ”เบฑเบšเปƒเบซเบกเปˆ" เปเบกเปˆเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ—เบปเปˆเบงเป„เบ›เบ‚เบญเบ‡ "xchg" เปเบฅเบฐ "mv". เบกเบฑเบ™ "เบชเบฑเปˆเบ‡เบ„เบทเบ™"
เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบ™เบงเบดเบ—เบตเปƒเบ”เบเปเปˆเบ•เบฒเบกเบ—เบตเปˆเบ—เปˆเบฒเบ™เบฅเบฐเบšเบธ:

pdl> $a = เบฅเปเบฒเบ”เบฑเบš(6,7,8,9)
pdl> $a_reorder = $a->เบชเบฑเปˆเบ‡เบ„เบทเบ™(3,0,2,1)
pdl>
pdl> p $a->info => PDL: Double D [6,7,8,9]
pdl> p $a_reorder->info => PDL: Double D [9,6,8,7]
| | | |
VV v V
เบ‚เบฐเปœเบฒเบ”: 0 1 2 3

เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™. เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเบ‚เบฝเบ™ "reorder(3,0,2,1)" เบžเบงเบเป€เบฎเบปเบฒเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰ PDL:

* เปƒเบชเปˆเบกเบดเบ•เบด 3 เบเปˆเบญเบ™.
* เปƒเบชเปˆเบกเบดเบ•เบด 0 เบ•เปเปˆเป„เบ›.
* เปƒเบชเปˆเบกเบดเบ•เบด 2 เบ•เปเปˆเป„เบ›.
* เปƒเบชเปˆเบกเบดเบ•เบด 1 เบ•เปเปˆเป„เบ›.

เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™ "เบˆเบฑเบ”เบฅเปเบฒเบ”เบฑเบšเปƒเบซเบกเปˆ", เบ‚เบฐเบซเบ™เบฒเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฐเบ–เบทเบ shuffled. เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒ "เบˆเบฑเบ”เบฅเปเบฒเบ”เบฑเบšเปƒเบซเบกเปˆ"
เบšเปเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡ $a. เบ•เบปเบงเปเบ›เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš $a เบเบฑเบ‡เบšเปเปˆเบ–เบทเบเปเบ•เบฐเบ•เป‰เบญเบ‡.

GOTCHA: เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ VS เบงเบฝเบ


เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡
เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, piddles เปเบกเปˆเบ™ เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ เบฎเปˆเบงเบกเบเบฑเบ™ เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบซเบ™เบถเปˆเบ‡เบˆเบฐเบเบฑเบšเบ„เบทเบ™เป„เบ›เบšเปˆเบญเบ™เปเบฅเบฐเบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆ
เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš as เบ”เบต.

pdl> $a = เบฅเปเบฒเบ”เบฑเบš(4,5)
pdl> $a_xchg = $a->xchg(1,0)

เบ™เบตเป‰, $a_xchg is เบšเปเปˆ a เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ เบˆเบธเบ”โ€‹เบ›เบฐโ€‹เบชเบปเบ‡. เบกเบฑเบ™เป€เบ›เบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบงเบดเบ—เบตเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบšเบดเปˆเบ‡ $a. เปƒเบ”
เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™ $a_xchg เบˆเบฐเบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™ $a เป€เบŠเบฑเปˆเบ™เบเบฑเบ™.

pdl> p $a
[
[ 0 1 2 3 ]
[ 4 5 6 7 ]
[ 8 9 10 11 ]
[12 13 14 15]
[16 17 18 19]
]
pdl> $a_xchg += 3
pdl> p $a
[
[ 3 4 5 6 ]
[ 7 8 9 10 ]
[11 12 13 14]
[15 16 17 18]
[19 20 21 22]
]

เบเบฒเบ™เบกเบญเบšเบซเบกเบฒเบ
เบšเบฒเบ‡เบ„เบฑเป‰เบ‡, เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบšเปเปˆเปเบกเปˆเบ™เบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™. เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ—เปˆเบฒเบ™โ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰ piddles เป„เบ”เป‰โ€‹
เป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฒเบ”, เปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™ "เบชเปเบฒเป€เบ™เบปเบฒ":

pdl> $a = เบฅเปเบฒเบ”เบฑเบš(4,5)
pdl> $a_xchg = $a->copy->xchg(1,0)

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ $a เปเบฅเบฐ $a_xchg เปเบกเปˆเบ™เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™:

pdl> p $a
[
[ 0 1 2 3 ]
[ 4 5 6 7 ]
[ 8 9 10 11 ]
[12 13 14 15]
[16 17 18 19]
]
pdl> $a_xchg += 3
pdl> p $a
[
[ 0 1 2 3 ]
[ 4 5 6 7 ]
[ 8 9 10 11 ]
[12 13 14 15]
[16 17 18 19]
]
pdl> $a_xchg
[
[ 3 7 11 15 19 ]
[ 4 8 12 16 20 ]
[ 5 9 13 17 21 ]
[ 6 10 14 18 22 ]
]

เบงเบฒเบ‡ IT เบ—เบฑเบ‡เบซเบกเบปเบ” TOGETHER


เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบเบฐเบ•เบธเป‰เบ™เบเบฒเบ™เบชเบปเบ™เบ—เบฐเบ™เบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰:

pdl> $a = เบฅเปเบฒเบ”เบฑเบš(11,9)
pdl> $cols = เบฅเปเบฒเบ”เบฑเบš(9โ€‹)
pdl>
pdl> p $a->info => PDL: Double D [11,9]
pdl> p $cols->info => PDL: Double D [9]

เบžเบงเบเป€เบฎเบปเบฒเบšเบญเบ PDL เปƒเบซเป‰เบฅเบปเบš $cols เบ•เบฒเบกเบกเบดเบ•เบด 1 เปเบ—เบ™เบกเบดเบ•เบด 0 เปเบ™เบงเปƒเบ”? เป„เบ”เป‰
เบงเบดเบ—เบตเบ—เบตเปˆเบ‡เปˆเบฒเบเบ—เบตเปˆเบชเบธเบ”เปเบกเปˆเบ™เปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™ "xchg" เปเบฅเบฐเบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ PDL:

pdl> p $a
[
[ 0 1 2 3 4 5 6 7 8 9 10 ]
[ 11 12 13 14 15 16 17 18 19 20 21 ]
[ 22 23 24 25 26 27 28 29 30 31 32 ]
[ 33 34 35 36 37 38 39 40 41 42 43 ]
[ 44 45 46 47 48 49 50 51 52 53 54 ]
[ 55 56 57 58 59 60 61 62 63 64 65 ]
[ 66 67 68 69 70 71 72 73 74 75 76 ]
[ 77 78 79 80 81 82 83 84 85 86 87 ]
[ 88 89 90 91 92 93 94 95 96 97 98 ]
]
pdl> $a->xchg(1,0) -= $cols
pdl> p $a
[
[ 0 1 2 3 4 5 6 7 8 9 10 ]
[ 10 11 12 13 14 15 16 17 18 19 20 ]
[ 20 21 22 23 24 25 26 27 28 29 30 ]
[ 30 31 32 33 34 35 36 37 38 39 40 ]
[ 40 41 42 43 44 45 46 47 48 49 50 ]
[ 50 51 52 53 54 55 56 57 58 59 60 ]
[ 60 61 62 63 64 65 66 67 68 69 70 ]
[ 70 71 72 73 74 75 76 77 78 79 80 ]
[ 80 81 82 83 84 85 86 87 88 89 90 ]
]

เบเบธเบ”เบ—เบฐเบชเบฒเบ”เบ—เบปเปˆเบงเป„เบ›:
เบเป‰เบฒเบเบ‚เบฐ เปœเบฒเบ” เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ›เบชเบนเปˆเบˆเบธเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบ‚เบฐ เปœเบฒเบ” piddle เบ‚เบญเบ‡เบ—เปˆเบฒเบ™
เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆ. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เปƒเบซเป‰เบเบฐเบ—เบนเป‰ PDL เปƒเบ™เป„เบฅเบเบฐเบ‚เบฐเบซเบ™เบฒเบ”เบ—เบตเปˆเบชเบนเบ‡เบ‚เบถเป‰เบ™.

เบ•เบปเบงเบขเปˆเบฒเบ‡: เบ„เบญเบ™เป€เบง GAME OF เบŠเบตเบงเบดเบ”


เป‚เบญเป€เบ„, เบ—เบดเบ”เบชเบฐเบ”เบตเบžเบฝเบ‡เบžเป. เปƒเบซเป‰เป€เบฎเบฑเบ”เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบซเบผเบฒเบ: เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ‚เบฝเบ™ เบ„เบญเบ™โ€‹เป€เบง เป€เบเบก
of เบเบฒเบ™เบกเบตเบŠเบตเบงเบดเบ” เปƒเบ™ PDL เปเบฅเบฐเป€เบšเบดเปˆเบ‡เบงเปˆเบฒ PDL เบกเบตเบญเปเบฒเบ™เบฒเบ”เบซเบผเบฒเบเบ›เบฒเบ™เปƒเบ”!

เป„เบ”เป‰ เป€เบเบก of เบเบฒเบ™เบกเบตเบŠเบตเบงเบดเบ” เป€เบ›เบฑเบ™เบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡เปเบฅเปˆเบ™เบขเบนเปˆเปƒเบ™เบ•เบฒเบ‚เปˆเบฒเบเป„เบŸเบŸเป‰เบฒเบชเบญเบ‡เบกเบดเบ•เบดเบญเบฑเบ™เปƒเบซเบเปˆ. เปเบ•เปˆเบฅเบฐเป€เบŠเบฅเปƒเบ™เบ•เบฒเบ‚เปˆเบฒเบ
เบชเบฒเบกเบฒเบ”เบกเบตเบŠเบตเบงเบดเบ”เบขเบนเปˆเบซเบผเบทเบ•เบฒเบ (เบชเบฐเปเบ”เบ‡เป‚เบ”เบ 1 เบซเบผเบท 0). เบเบฒเบ™เบœเบฐเบฅเบดเบ”เบ•เปเปˆเป„เบ›เบ‚เบญเบ‡เบˆเบธเบฅเบฑเบ‡เปƒเบ™
เบ•เบฒโ€‹เบ‚เปˆเบฒเบโ€‹เป„เบŸโ€‹เบŸเป‰เบฒโ€‹เปเบกเปˆเบ™โ€‹เบ„เปเบฒโ€‹เบ™เบงเบ™โ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบเบปเบ”โ€‹เบฅเบฐโ€‹เบšเบฝเบšโ€‹เบ‡เปˆเบฒเบโ€‹เบ”เบฒเบโ€‹เบญเบตเบ‡โ€‹เบ•เบฒเบกโ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบ‚เบญเบ‡โ€‹เบˆเบธโ€‹เบฅเบฑเบ‡โ€‹เบกเบตโ€‹เบŠเบตโ€‹เบงเบดเบ”โ€‹เบขเบนเปˆโ€‹เปƒเบ™โ€‹เบกเบฑเบ™โ€‹
เบšเป‰เบฒเบ™เปƒเบเป‰เป€เบฎเบทเบญเบ™เบ„เบฝเบ‡เบ—เบฑเบ™เบ—เบต:

1โ€‹) เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบซเป‰เบญเบ‡โ€‹เบ—เบตเปˆโ€‹เป€เบ›เบปเปˆเบฒโ€‹เบซเบงเปˆเบฒเบ‡โ€‹เบกเบตโ€‹เบชเบฒเบกโ€‹เบ›เบฐโ€‹เป€เบ—เบ”โ€‹เป€เบžเบทเปˆเบญเบ™โ€‹เบšเป‰เบฒเบ™โ€‹, เบซเป‰เบญเบ‡โ€‹เบกเบตโ€‹เบŠเบตโ€‹เบงเบดเบ”โ€‹เบˆเบฐโ€‹เบ–เบทเบโ€‹เบชเป‰เบฒเบ‡โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ‚เบถเป‰เบ™โ€‹.

2) เบ–เป‰เบฒเบˆเบธเบฅเบฑเบ‡เบ—เบตเปˆเบกเบตเบŠเบตเบงเบดเบ”เบกเบตเป€เบžเบทเปˆเบญเบ™เบšเป‰เบฒเบ™เบซเบ™เป‰เบญเบเบเบงเปˆเบฒเบชเบญเบ‡เบ„เบปเบ™, เบกเบฑเบ™เบ•เบฒเบเบเป‰เบญเบ™เบเบฒเบ™เปƒเบซเป‰เบญเบฒเบซเบฒเบ™เบซเบผเบฒเบเป€เบเบตเบ™เป„เบ›.

3) เบ–เป‰เบฒเบˆเบธเบฅเบฑเบ‡เบ—เบตเปˆเบกเบตเบŠเบตเบงเบดเบ”เบกเบตเป€เบžเบทเปˆเบญเบ™เบšเป‰เบฒเบ™ 4 เบ„เบปเบ™เบซเบผเบทเบซเบผเบฒเบเบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบกเบฑเบ™เบ•เบฒเบเบเป‰เบญเบ™เบ„เบงเบฒเบกเบญเบถเบ”เบซเบดเบง.

เบกเบตเบžเบฝเบ‡เปเบ•เปˆเบˆเบธเบฅเบฑเบ‡เบเบฒเบ™เบœเบฐเบฅเบดเบ”เบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบœเบนเป‰เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เป„เบ”เป‰
simulation เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™เบ•เบฒเบกเบเบปเบ”เบฅเบฐเบšเบฝเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เป€เบžเบทเปˆเบญเบ„เบดเบ”เป„เบฅเปˆเบเบฒเบ™เบœเบฐเบฅเบดเบ”เบ•เปเปˆเป„เบ›, เบ—เปˆเบฒเบ™
เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบ•เป‰เบญเบ‡โ€‹เป„เบ”เป‰โ€‹เป€เบšเบดเปˆเบ‡โ€‹เปเบ•เปˆโ€‹เบฅเบฐโ€‹เบซเป‰เบญเบ‡โ€‹เปƒเบ™โ€‹เบžเบฒเบโ€‹เบชเบฐโ€‹เบซเบ™เบฒเบก 2D (เบฎเบฝเบโ€‹เบฎเป‰เบญเบ‡โ€‹เปƒเบซเป‰โ€‹เบกเบตโ€‹เบชเบญเบ‡ loopsโ€‹)โ€‹, เบเบฒเบ™โ€‹เบ„เบดเบ”โ€‹เป„เบฅเปˆโ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบ‚เบญเบ‡โ€‹
เบˆเบธเบฅเบฑเบ‡เบ—เบตเปˆเบกเบตเบŠเบตเบงเบดเบ”เบขเบนเปˆเบ•เบดเบ”เบเบฑเบšเป€เบŠเบ™เบ™เบตเป‰ (เบ•เป‰เบญเบ‡เบเบฒเบ™เบญเบตเบเบชเบญเบ‡ loops) เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ•เบทเปˆเบกเบ‚เปเป‰เบกเบนเบ™เบ•เปเปˆเป„เบ›
เบ•เบฒเบ‚เปˆเบฒเบเบเบฒเบ™เบœเบฐเบฅเบดเบ”.

เบ„เบฅเบฒเบชเบชเบดเบ เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”
เบ™เบตเป‰เปเบกเปˆเบ™เบงเบดเบ—เบตเบเบฒเบ™เปเบšเบšเบ„เบฅเบฒเบชเบชเบดเบเบ‚เบญเบ‡เบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบผเปเบเบผเบกเบ™เบตเป‰เปƒเบ™ Perl. เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเปƒเบŠเป‰ PDL เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚
เปเบ•เปˆเบฅเบฐเบˆเบธเบฅเบฑเบ‡.

#!/usr/bin/perl -w
เปƒเบŠเป‰ PDL;
เปƒเบŠเป‰ PDL::NiceSlice;

# เป€เบฎเบฑเบ”เบเบฐเบ”เบฒเบ™เบชเปเบฒเบฅเบฑเบšเป€เบเบกเบ‚เบญเบ‡เบŠเบตเบงเบดเบ”.
$nx เบ‚เบญเบ‡เบ‚เป‰เบญเบ = 20;
เบ‚เบญเบ‡เบ‚เป‰เบญเบ $ny = 20;

# เบฅเบธเป‰เบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™.
เบ‚เบญเบ‡เบ‚เป‰เบญเบ $a = zeroes($nx, $ny);

#เบฅเบธเป‰เบ™เบ•เปเปˆเป„เบ›.
เบ‚เบญเบ‡เบ‚เป‰เบญเบ $n = zeroes($nx, $ny);

# เปƒเบชเปˆเปƒเบ™ glider เบ‡เปˆเบฒเบเบ”เบฒเบ.
$a(1:3,1:3).= pdl( [1,1,1],
[0,0,1],
[0,1,0] );

เบชเปเบฒเบฅเบฑเบš ($i เบ‚เบญเบ‡เบ‚เป‰เบญเบ = 0; $i < 100; $i++) {
$n = เบชเบนเบ™($nx, $ny);
$new_a = $a->เบชเบณเป€เบ™เบปเบฒ;
เบชเปเบฒเบฅเบฑเบš ($x = 0; $x < $nx; $x++) {
เบชเปเบฒเบฅเบฑเบš ($y = 0; $y < $ny; $y++) {

# เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบซเป‰เบญเบ‡, เป€เบšเบดเปˆเบ‡เบ›เบฐเป€เบ—เบ”เป€เบžเบทเปˆเบญเบ™เบšเป‰เบฒเบ™เบญเป‰เบญเบกเบ‚เป‰เบฒเบ‡.
เบชเปเบฒเบฅเบฑเบš ($dx = -1; $dx <= 1; $dx++) {
เบชเปเบฒเบฅเบฑเบš ($dy = -1; $dy <= 1; $dy++) {
$px = $x + $dx;
$py = $y + $dy;

# เบซเปเปˆเบขเบนเปˆเปเบ„เบก.
เบ–เป‰เบฒ ($px < 0) {$px = $nx-1};
เบ–เป‰เบฒ ($py < 0) {$py = $ny-1};
เบ–เป‰เบฒ ($px >= $nx) {$px = 0};
เบ–เป‰เบฒ ($py >= $ny) {$py = 0};

$n($x,$y).= $n($x,$y) + $a($px,$py);
}
}
# เบšเปเปˆเบ™เบฑเบšเป€เบŠเบงเบเบฒเบ‡เป€เบญเบ‡.
$n($x,$y) -= $a($x,$y);

# เป€เบฎเบฑเบ”เบงเบฝเบเบญเบญเบเบ–เป‰เบฒเบˆเบธเบฅเบฑเบ‡เบกเบตเบŠเบตเบงเบดเบ”เบซเบผเบทเบ•เบฒเบ:
# เป€เบŠเบฅเบ•เบฒเบเบกเบตเบŠเบตเบงเบดเบ”เบ–เป‰เบฒ n = 3
# เป€เบŠเบฅเบ—เบตเปˆเบกเบตเบŠเบตเบงเบดเบ”เบ•เบฒเบเบ–เป‰เบฒ n เบšเปเปˆเปเบกเปˆเบ™ 2 เบซเบผเบท 3
เบ–เป‰เบฒ ($a($x,$y) == 1) {
เบ–เป‰เบฒ ($n($x,$y) < 2) {$new_a($x,$y).= 0};
เบ–เป‰เบฒ ($n($x,$y) > 3) {$new_a($x,$y).= 0};
} else {
เบ–เป‰เบฒ ($n($x,$y) == 3) {$new_a($x,$y).= 1}
}
}
}

เบžเบดเบก $a;

$a = $new_a;
}

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเบฐเป€เบซเบฑเบ™ glider เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบเบงเบฒเบ”เป€เบชเบฑเป‰เบ™เบ‚เบงเบฒเบ‡เปƒเบ™เบ—เบปเปˆเบงเบ•เบฒเบ‚เปˆเบฒเบเป„เบŸเบŸเป‰เบฒเบ‚เบญเบ‡เบชเบนเบ™.
เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบ‚เบญเบ‡เบ‚เป‰เบญเบ, เบกเบฑเบ™เบžเบดเบกเบญเบญเบเบชเบญเบ‡เบชเบฒเบกเบฅเบธเป‰เบ™เบ•เปเปˆเบงเบดเบ™เบฒเบ—เบต.

เบเบฐเบ—เบนเป‰ PDL เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”
เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เบชเบฐเบšเบฑเบš threaded เปƒเบ™ PDL. เบžเบฝเบ‡เปเบ•เปˆเบชเบตเปˆเปเบ–เบงเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ” PDL, เปเบฅเบฐเบซเบ™เบถเปˆเบ‡เปƒเบ™เบ™เบฑเป‰เบ™เปเบกเปˆเบ™
เบžเบดเบกเบญเบญเบเบฅเบธเป‰เบ™เบฅเปˆเบฒเบชเบธเบ”!

#!/usr/bin/perl -w
เปƒเบŠเป‰ PDL;
เปƒเบŠเป‰ PDL::NiceSlice;

$a เบ‚เบญเบ‡เบ‚เป‰เบญเบ = zeroes(20,20);

# เปƒเบชเปˆเปƒเบ™ glider เบ‡เปˆเบฒเบเบ”เบฒเบ.
$a(1:3,1:3).= pdl( [1,1,1],
[0,0,1],
[0,1,0] );

$n เบ‚เบญเบ‡เบ‚เป‰เบญเบ;
เบชเปเบฒเบฅเบฑเบš ($i เบ‚เบญเบ‡เบ‚เป‰เบญเบ = 0; $i < 100; $i++) {
# เบ„เบดเบ”เป„เบฅเปˆเบˆเปเบฒเบ™เบงเบ™เป€เบžเบทเปˆเบญเบ™เบšเป‰เบฒเบ™เบ•เปเปˆเบ•เบฒเบฅเบฒเบ‡.
$n = $a->range(ndcoords($a)-1,3,"periodic")->reorder(2,3,0,1);
$n = $n->sumover->sumover - $a;

# เบ„เบดเบ”เป„เบฅเปˆเบฅเบธเป‰เบ™เบ•เปเปˆเป„เบ›.
$a = ((($n == 2) + ($n == 3))* $a) + (($n==3) * !$a);

เบžเบดเบก $a;
}

เบชเบฐเบšเบฑเบš PDL threaded เปเบกเปˆเบ™เป„เบงเบเบงเปˆเบฒเบซเบผเบฒเบ:

เบ„เบฅเบฒเบชเบดเบ => 32.79 เบงเบดเบ™เบฒเบ—เบต.
เบเบฐเบ—เบนเป‰ => 0.41 เบงเบดเบ™เบฒเบ—เบต.

เบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบ
เบชเบฐเบšเบฑเบš threaded เป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”?

เบกเบตเบซเบผเบฒเบเบซเบ™เป‰เบฒเบ—เบตเปˆ PDL เบญเบญเบเปเบšเบšเบกเบฒเป€เบžเบทเปˆเบญเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” PDL threading. เปƒเบ™โ€‹เบ™เบตเป‰
เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เบซเบ™เป‰เบฒเบ—เบตเปˆเบ•เบปเป‰เบ™เบ•เปเปเบกเปˆเบ™:

เบงเบดเบ—เบตเบเบฒเบ™: "เบŠเปˆเบงเบ‡"

เปƒเบ™เบฅเบฐเบ”เบฑเบšเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ”, เบงเบดเบ—เบตเบเบฒเบ™ "เบ‚เบญเบšเป€เบ‚เบ”" เปเบกเปˆเบ™เบงเบดเบ—เบตเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ—เบตเปˆเบˆเบฐเป€เบฅเบทเบญเบเป€เบญเบปเบฒเบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡ a
เบ›เบดเบง. เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰ "$a(2,3)", เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ piddle เบญเบทเปˆเบ™.

pdl> $a = เบฅเปเบฒเบ”เบฑเบš(6,7)
pdl> p $a
[
[ 0 1 2 3 4 5 ]
[ 6 7 8 9 10 11 ]
[12 13 14 15 16 17]
[18 19 20 21 22 23]
[24 25 26 27 28 29]
[30 31 32 33 34 35]
[36 37 38 39 40 41]
]
pdl> p $a->range( pdl [1,2] )
13
pdl> p $a(1,2)
[
[13]
]

เปƒเบ™เบˆเบธเบ”เบ™เบตเป‰, เบงเบดเบ—เบตเบเบฒเบ™ "เบ‚เบญเบšเป€เบ‚เบ”" เบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบ•เปˆเบญเบ™ PDL เบ›เบปเบเบเบฐเบ•เบด. เปเบ•เปˆ
เบงเบดเบ—เบตเบเบฒเบ™ "range" เปเบกเปˆเบ™เบ—เบปเปˆเบงเป„เบ›เบซเบผเบฒเบ. เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฅเบทเบญเบเบญเบปเบ‡เบ›เบฐเบเบญเบšเบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™:

pdl> $index = pdl [ [1,2],[2,3],[3,4],[4,5]]
pdl> p $a->range($index)
[13 20 27 34]

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, "range" เปƒเบŠเป‰เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ—เบตเบชเบญเบ‡เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ chunk เบเบฑเบš
เบเบฑเบšเบ„เบทเบ™:

pdl> $size = 3
pdl> p $a->range( pdl([1,2]), $size )
[
[13 14 15]
[19 20 21]
[25 26 27]
]

เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ™เบตเป‰โ€‹เป€เบžเบทเปˆเบญโ€‹เป€เบฅเบทเบญเบโ€‹เป€เบญเบปเบฒโ€‹เบซเบ™เบถเปˆเบ‡โ€‹เบซเบผเบทโ€‹เบซเบผเบฒเบโ€‹เบเปˆเบญเบ‡ 3x3โ€‹.

เบชเบธเบ”เบ—เป‰เบฒเบ, "เบ‚เบญเบšเป€เบ‚เบ”" เบชเบฒเบกเบฒเบ”เป€เบญเบปเบฒเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ—เบตเบชเบฒเบกเป€เบญเบตเป‰เบ™เบงเปˆเบฒเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚ "เบ‚เบญเบšเป€เบ‚เบ”". เบกเบฑเบ™เบšเบญเบ PDL
เบˆเบฐเป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”เบ–เป‰เบฒเบเปˆเบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ—เบตเปˆเบ—เปˆเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเป„เบ›เป€เบเบตเบ™เบ‚เบญเบšเบ‚เบญเบ‡ piddle เป„เบ”เป‰. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเป„เบ›
เบซเบผเบฒเบเบเบงเปˆเบฒเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบฑเบ‡เบซเบกเบปเบ”. เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบˆเบฐเป€เบงเบปเป‰เบฒเบงเปˆเบฒเบ—เบฒเบ‡เป€เบฅเบทเบญเบ "เป„เบฅเบเบฐเป€เบงเบฅเบฒ" เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ piddle เป„เบ”เป‰
"เบซเปเปˆเบฎเบญเบš". เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡:

pdl> p $a
[
[ 0 1 2 3 4 5 ]
[ 6 7 8 9 10 11 ]
[12 13 14 15 16 17]
[18 19 20 21 22 23]
[24 25 26 27 28 29]
[30 31 32 33 34 35]
[36 37 38 39 40 41]
]
pdl> $size = 3
pdl> p $a->range( pdl([4,2]), $size , "เป„เบฅเบเบฐเป€เบงเบฅเบฒ" )
[
[16 17 12]
[22 23 18]
[28 29 24]
]
pdl> p $a->range( pdl([5,2]), $size , "เป„เบฅเบเบฐเป€เบงเบฅเบฒ" )
[
[17 12 13]
[23 18 19]
[29 24 25]
]

เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเบเปˆเบญเบ‡เบซเปเปˆเบญเป‰เบญเบกเบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡ piddle เปเบ™เบงเปƒเบ”.

เบงเบดเบ—เบตเบเบฒเบ™: "ndcoords"

เบงเบดเบ—เบตเบเบฒเบ™ "ndcoords" เปเบกเปˆเบ™เบงเบดเบ—เบตเบเบฒเบ™เบชเบฐเบ”เบงเบเบ—เบตเปˆเบชเบปเปˆเบ‡เบ„เบทเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆ enumerated เบ‚เบญเบ‡
เบžเบดเบเบฑเบ”เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™ "เป„เบฅเบเบฐ".

pdl> p $piddle = เบฅเปเบฒเบ”เบฑเบš(3,3)
[
[0 1 2]
[3 4 5]
[6 7 8]
]
pdl> p ndcoords($piddle)
[
[
[0 0]
[1 0]
[2 0]
]
[
[0 1]
[1 1]
[2 1]
]
[
[0 2]
[1 2]
[2 2]
]
]

เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เบเบฒเบเป€เบฅเบฑเบเบ™เป‰เบญเบ. เป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเป‰เบงเบกเบฑเบ™เบšเบญเบเบงเปˆเบฒเบˆเบธเบ”เบ›เบฐเบชเบฒเบ™เบ‡เบฒเบ™เบชเปเบฒเบฅเบฑเบšเบ—เบธเบเป†
เบญเบปเบ‡เบ›เบฐเบเบญเบšเปƒเบ™ $piddle เปเบกเปˆเบ™เปƒเบซเป‰เป‚เบ”เบ:

(0,0) (1,0) (2,0)
(1,0) (1,1) (2,1)
(2,0) (2,1) (2,2)

เบเบฒเบ™เบชเบปเบกเบ—เบปเบš "เบŠเปˆเบงเบ‡" เปเบฅเบฐ "ndcoords"

เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปเบกเปˆเบ™เบงเปˆเบฒ "ndcoords" เบ–เบทเบเบญเบญเบเปเบšเบšเบกเบฒเป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบฎเปˆเบงเบกเบเบฑเบ™เบเบฑเบš "range", เบšเปเปˆเบกเบต
เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™ $size, เบ—เปˆเบฒเบ™เป„เบ”เป‰เบฎเบฑเบš piddle เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบ„เบทเบ™เป„เบ›เบšเปˆเบญเบ™.

pdl> p $piddle
[
[0 1 2]
[3 4 5]
[6 7 8]
]
pdl> p $piddle->range( ndcoords($piddle) )
[
[0 1 2]
[3 4 5]
[6 7 8]
]

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบญเบฑเบ™เบ™เบตเป‰เบˆเบถเปˆเบ‡เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”? เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบฎเป‰เบญเบ‡เบ‚เปเปƒเบซเป‰เบกเบตเบŠเบธเบ”เบ‚เบญเบ‡ "เบเปˆเบญเบ‡" เบชเปเบฒเบฅเบฑเบšเบ—เบฑเบ‡เบซเบกเบปเบ”
เบ›เบดเบง. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเปˆเบญเบ‡ 2x2:

pdl> p $piddle->range( ndcoords($piddle), 2 , "เป„เบฅเบเบฐ" )

เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบเบ—เบตเปˆเบˆเบฐเบญเปˆเบฒเบ™เป€เบžเบฒเบฐเบงเปˆเบฒ "เบเปˆเบญเบ‡" เบ•เบฒเบกเบชเบญเบ‡เบญเบฑเบ™เบชเบธเบ”เบ—เป‰เบฒเบ
เบกเบดเบ•เบด. เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เบœเบปเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบญเปˆเบฒเบ™โ€‹เป„เบ”เป‰โ€‹เบซเบผเบฒเบโ€‹เบ‚เบถเป‰เบ™โ€‹เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เบˆเบฑเบ”โ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เปƒเบซเบกเปˆโ€‹:

pdl> p $piddle->range( ndcoords($piddle), 2 , "periodic" )->reorder(2,3,0,1)
[
[
[
[0 1]
[3 4]
]
[
[1 2]
[4 5]
]
...
]

เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰เบŠเบฑเบ”เป€เบˆเบ™เบเบงเปˆเบฒเบ™เบฑเป‰เบ™

[0 1]
[3 4]

เปเบกเปˆเบ™เบเปˆเบญเบ‡ 2x2 เบ—เบตเปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบญเบปเบ‡เบ›เบฐเบเบญเบš (0,0) เบ‚เบญเบ‡ $piddle.

เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เป€เบ—เบทเปˆเบญ. เบชเปเบฒเบฅเบฑเบšเป€เบเบกเบ‚เบญเบ‡เบŠเบตเบงเบดเบ”, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™ 3x3 เบเปˆเบญเบ‡เบˆเบฒเบ $a:

pdl> p $a
[
[ 0 1 2 3 4 5 ]
[ 6 7 8 9 10 11 ]
[12 13 14 15 16 17]
[18 19 20 21 22 23]
[24 25 26 27 28 29]
[30 31 32 33 34 35]
[36 37 38 39 40 41]
]
pdl> p $a->range( ndcoords($a), 3 , "periodic" )->reorder(2,3,0,1)
[
[
[
[ 0 1 2 ]
[ 6 7 8 ]
[12 13 14]
]
...
]

เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบขเบทเบ™เบขเบฑเบ™เบงเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบเปˆเบญเบ‡ 3x3 เบ—เบตเปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบญเบปเบ‡เบ›เบฐเบเบญเบš (0,0) เบ‚เบญเบ‡ $a. เปเบ•เปˆเบกเบต
เป€เบ›เบฑเบ™เบšเบฑเบ™เบซเบฒเบซเบ™เบถเปˆเบ‡. เปเบ—เป‰เบˆเบดเบ‡เปเบฅเป‰เบง, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบเปˆเบญเบ‡ 3x3 เปƒเบˆเบเบฒเบ‡ เบชเบธเบ” (0,0). เบ™เบฑเป‰เบ™เบšเปเปˆเปเบกเปˆเบ™
เบšเบฑเบ™เบซเบฒ. เบžเบฝเบ‡เปเบ•เปˆเบฅเบปเบš 1 เบˆเบฒเบเบˆเบธเบ”เบ›เบฐเบชเบฒเบ™เบ‡เบฒเบ™เบ—เบฑเบ‡เปเบปเบ”เปƒเบ™ "ndcoords($a)". เบˆเบทเปˆเป„เบงเป‰เบงเปˆเบฒ
เบ—เบฒเบ‡เป€เบฅเบทเบญเบ "เป„เบฅเบเบฐเป€เบงเบฅเบฒ" เปƒเบŠเป‰เป€เบงเบฅเบฒเบ”เบนเปเบฅเบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบซเปเปˆเบ›เบฐเบกเบฒเบ™.

pdl> p $a->range( ndcoords($a) - 1 , 3 , "periodic" )->reorder(2,3,0,1)
[
[
[
[41 36 37]
[ 5 0 1 ]
[11 6 7]
]
[
[36 37 38]
[ 0 1 2 ]
[ 6 7 8 ]
]
...

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบเปˆเบญเบ‡ 3x3 เบ—เบตเปˆเบกเบตเบญเบปเบ‡เบ›เบฐเบเบญเบš (0,0) เบขเบนเปˆเปƒเบˆเบเบฒเบ‡เบ‚เบญเบ‡เบเปˆเบญเบ‡.

เบงเบดเบ—เบตเบเบฒเบ™: "sumover"

เบงเบดเบ—เบตเบเบฒเบ™ "sumover" เป€เบžเบตเปˆเบกเบžเบฝเบ‡เปเบ•เปˆเบกเบดเบ•เบดเบ—เปเบฒเบญเบดเบ”. เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบชเบฐเบซเบกเบฑเบเบชเบญเบ‡เบ„เบฑเป‰เบ‡, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบ›เบฑเบ™
เป€เบžเบตเปˆเบกเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบฑเบ‡เปเบปเบ”เบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเบเปˆเบญเบ‡ 3x3.

pdl> $n = $a->range(ndcoords($a)-1,3,periodic")->reorder(2,3,0,1)
pdl> p $n
[
[
[
[41 36 37]
[ 5 0 1 ]
[11 6 7]
]
[
[36 37 38]
[ 0 1 2 ]
[ 6 7 8 ]
]
...
pdl> p $n->sumover->sumover
[
[144 135 144 153 162 153]
[ 72 63 72 81 90 81 ]
[126 117 126 135 144 135]
[180 171 180 189 198 189]
[234 225 234 243 252 243]
[288 279 288 297 306 297]
[216 207 216 225 234 225]
]

เปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบ„เบดเบ”เป€เบฅเบเป€เบžเบทเปˆเบญเบขเบทเบ™เบขเบฑเบ™เบงเปˆเบฒ 144 เปเบกเปˆเบ™เบœเบปเบ™เบฅเบงเบกเบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบฑเบ‡เปเบปเบ”เปƒเบ™เบเปˆเบญเบ‡ 3x3 เบ—เบณเบญเบดเบ”.
เปเบฅเบฐ 135 เปเบกเปˆเบ™เบœเบปเบ™เบฅเบงเบกเบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบฑเบ‡เปเบปเบ”เปƒเบ™เบเปˆเบญเบ‡ 3x3 เบ—เบตเบชเบญเบ‡.

เบเบฒเบ™เบ™เบฑเบš เป€เบžเบทเปˆเบญเบ™โ€‹เบšเป‰เบฒเบ™

เบžเบงเบเป€เบฎเบปเบฒเปƒเบเป‰เปเบฅเป‰เบง!

เบเบฒเบ™เป€เบžเบตเปˆเบกเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบฑเบ‡เปเบปเบ”เปƒเบ™เบเปˆเบญเบ‡ 3x3 เบšเปเปˆเปเบกเปˆเบ™ เบ—เบตเปˆเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡ เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™. เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ™เบฑเบš
เบ›เปˆเบญเบ‡เบเบฒเบ‡. เป‚เบŠเบเบ”เบต, เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบ‡เปˆเบฒเบเป†:

pdl> p $n->sumover->sumover - $a
[
[144 134 142 150 158 148]
[ 66 56 64 72 80 70 ]
[114 104 112 120 128 118]
[162 152 160 168 176 166]
[210 200 208 216 224 214]
[258 248 256 264 272 262]
[180 170 178 186 194 184]
]

เป€เบกเบทเปˆเบญเบ™เปเบฒเปƒเบŠเป‰เบเบฑเบšเป€เบเบกเบŠเบตเบงเบดเบ”เบ‚เบญเบ‡ Conway, เบ™เบตเป‰เบˆเบฐเบšเบญเบเบžเบงเบเป€เบฎเบปเบฒเบงเปˆเบฒเปเบ•เปˆเบฅเบฐเบ„เบปเบ™เบกเบตเบŠเบตเบงเบดเบ”เป€เบžเบทเปˆเบญเบ™เบšเป‰เบฒเบ™เบซเบผเบฒเบเบ›เบฒเบ™เปƒเบ”
เป€เบŠเบฅเบกเบต:

pdl> $a = เบชเบนเบ™(10,10)
pdl> $a(1:3,1:3).= pdl( [1,1,1],
..(> [0,0,1],
..(> [0,1,0] )
pdl> p $a
[
[ 0 0 0 0 0 0 0 0 0 0 ]
[ 0 1 1 1 0 0 0 0 0 0 ]
[ 0 0 0 1 0 0 0 0 0 0 ]
[ 0 0 1 0 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
]
pdl> $n = $a->range(ndcoords($a)-1,3,periodic")->reorder(2,3,0,1)
pdl> $n = $n->sumover->sumover - $a
pdl> p $n
[
[ 1 2 3 2 1 0 0 0 0 0 ]
[ 1 1 3 2 2 0 0 0 0 0 ]
[ 1 3 5 3 2 0 0 0 0 0 ]
[ 0 1 1 2 1 0 0 0 0 0 ]
[ 0 1 1 1 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
]

เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ™เบตเป‰เบšเบญเบเบžเบงเบเป€เบฎเบปเบฒเบงเปˆเบฒ cell (0,0) เบกเบต 1 เป€เบžเบทเปˆเบญเบ™เบšเป‰เบฒเบ™เบ—เบตเปˆเบกเบตเบŠเบตเบงเบดเบ”เบขเบนเปˆ, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ cell (2,2) เบกเบต 5.
เป€เบžเบทเปˆเบญเบ™เบšเป‰เบฒเบ™เบ—เบตเปˆเบญเบฒเป„เบชเบขเบนเปˆ.

เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆ เป„เบ”เป‰ เบ•เปเปˆเป„เบ› เบเบฒเบ™เบœเบฐเบฅเบดเบ”

เปƒเบ™เบˆเบธเบ”เบ™เบตเป‰, เบ•เบปเบงเปเบ› $n เบกเบตเบˆเปเบฒเบ™เบงเบ™เป€เบžเบทเปˆเบญเบ™เบšเป‰เบฒเบ™เบ—เบตเปˆเบกเบตเบŠเบตเบงเบดเบ”เบขเบนเปˆเบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบซเป‰เบญเบ‡. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒ
เปƒเบŠเป‰เบเบปเบ”เบฅเบฐเบšเบฝเบšเบ‚เบญเบ‡เป€เบเบกเบ‚เบญเบ‡เบŠเบตเบงเบดเบ”เป€เบžเบทเปˆเบญเบ„เบดเบ”เป„เบฅเปˆเบเบฒเบ™เบœเบฐเบฅเบดเบ”เบ•เปเปˆเป„เบ›.

เบ–เป‰เบฒเบˆเบธเบฅเบฑเบ‡เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒเบกเบตเบชเบฒเบกเบ›เบฐเป€เบ—เบ”เป€เบžเบทเปˆเบญเบ™เบšเป‰เบฒเบ™เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡, เบˆเบธเบฅเบฑเบ‡เบ—เบตเปˆเบกเบตเบŠเบตเบงเบดเบ”เบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™.
เป€เบญเบปเบฒเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบˆเบธเบฅเบฑเบ‡เบ—เบตเปˆเบกเบตเบชเบฒเบกเบ›เบฐเป€เบ—เบ”เปƒเบเป‰เบ„เบฝเบ‡:

pdl> p ($n == 3)
[
[ 0 0 1 0 0 0 0 0 0 0 ]
[ 0 0 1 0 0 0 0 0 0 0 ]
[ 0 1 0 1 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
]

เป„เบ”เป‰เบฎเบฑเบšเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡ เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ เบˆเบธเบฅเบฑเบ‡เบ—เบตเปˆเบกเบตเบชเบฒเบกเบ›เบฐเป€เบ—เบ”เปƒเบเป‰เบ„เบฝเบ‡:

pdl> p ($n == 3) * !$a

เบ–เป‰เบฒเบˆเบธเบฅเบฑเบ‡เบ—เบตเปˆเบกเบตเบŠเบตเบงเบดเบ”เบกเบตเบซเบ™เป‰เบญเบเบเบงเปˆเบฒ 2 เบซเบผเบทเบซเบผเบฒเบเบเบงเปˆเบฒ 3 เบ›เบฐเป€เบ—เบ”เป€เบžเบทเปˆเบญเบ™เบšเป‰เบฒเบ™, เบกเบฑเบ™เบ•เบฒเบ.
เป€เบญเบปเบฒเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบˆเบธเบฅเบฑเบ‡เบ—เบตเปˆเบกเบต 2 เบซเบผเบท 3 เบ›เบฐเป€เบ—เบ”เป€เบžเบทเปˆเบญเบ™เบšเป‰เบฒเบ™เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡:

pdl> p (($n == 2) + ($n == 3))
[
[ 0 1 1 1 0 0 0 0 0 0 ]
[ 0 0 1 1 1 0 0 0 0 0 ]
[ 0 1 0 1 1 0 0 0 0 0 ]
[ 0 0 0 1 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
]

เป„เบ”เป‰เบฎเบฑเบšเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡ เบ”เปเบฒเบฅเบปเบ‡เบŠเบตเบงเบดเบ” เบˆเบธเบฅเบฑเบ‡เบ—เบตเปˆเบกเบต 2 เบซเบผเบท 3 เบ›เบฐเป€เบ—เบ”เป€เบžเบทเปˆเบญเบ™เบšเป‰เบฒเบ™เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡:

pdl> p (($n == 2) + ($n == 3)) * $a

เป€เบญเบปเบฒเบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบฎเปˆเบงเบกเบเบฑเบ™, เบฅเบธเป‰เบ™เบ•เปเปˆเป„เบ›เปเบกเปˆเบ™:

pdl> $a = ((($n == 2) + ($n == 3)) * $a) + (($n == 3) * !$a)
pdl> p $a
[
[ 0 0 1 0 0 0 0 0 0 0 ]
[ 0 0 1 1 0 0 0 0 0 0 ]
[ 0 1 0 1 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
[ 0 0 0 0 0 0 0 0 0 0 ]
]

Bonus เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”: เบเบฒเบŸเบดเบ!
เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบ—เปˆเบฒเบ™โ€‹เบกเบต PDL ::Graphics::TriD เบ•เบดเบ”โ€‹เบ•เบฑเป‰เบ‡โ€‹, เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰โ€‹เป€เบ›เบฑเบ™โ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹เบ‚เบญเบ‡โ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹
เป‚เบ”เบโ€‹เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบชเบฒเบกโ€‹เปเบ–เบงโ€‹:

#!/usr/bin/perl
เปƒเบŠเป‰ PDL;
เปƒเบŠเป‰ PDL::NiceSlice;
เปƒเบŠเป‰ PDL::Graphics::TriD;

$a เบ‚เบญเบ‡เบ‚เป‰เบญเบ = zeroes(20,20);

# เปƒเบชเปˆเปƒเบ™ glider เบ‡เปˆเบฒเบเบ”เบฒเบ.
$a(1:3,1:3).= pdl( [1,1,1],
[0,0,1],
[0,1,0] );

$n เบ‚เบญเบ‡เบ‚เป‰เบญเบ;
เบชเปเบฒเบฅเบฑเบš ($i เบ‚เบญเบ‡เบ‚เป‰เบญเบ = 0; $i < 100; $i++) {
# เบ„เบดเบ”เป„เบฅเปˆเบˆเปเบฒเบ™เบงเบ™เป€เบžเบทเปˆเบญเบ™เบšเป‰เบฒเบ™เบ•เปเปˆเบ•เบฒเบฅเบฒเบ‡.
$n = $a->range(ndcoords($a)-1,3,"periodic")->reorder(2,3,0,1);
$n = $n->sumover->sumover - $a;

# เบ„เบดเบ”เป„เบฅเปˆเบฅเบธเป‰เบ™เบ•เปเปˆเป„เบ›.
$a = ((($n == 2) + ($n == 3))* $a) + (($n==3) * !$a);

# เบˆเปเบชเบฐเปเบ”เบ‡เบœเบปเบ™.
nokeepwiddling3d();
imagrgb [$a];
}

เปเบ•เปˆเบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบขเบฒเบเป€เบซเบฑเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเปเบ—เป‰เป†, เบžเบงเบเป€เบฎเบปเบฒเบ„เบงเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบญเบตเบเบชเบญเบ‡เบชเบฒเบกเบขเปˆเบฒเบ‡:

1) เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบเบฒเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เปเบšเบšเบชเบธเปˆเบกเบ‚เบญเบ‡ 1's เปเบฅเบฐ 0's.

2) เป€เบฎเบฑเบ”เปƒเบซเป‰เบ•เบฒเบ‚เปˆเบฒเบเป„เบŸเบŸเป‰เบฒเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ.

3) เบ•เบทเปˆเบกเบเบฒเบ™เปเบปเบ”เป€เบงเบฅเบฒเปœเป‰เบญเบเปœเบถเปˆเบ‡เป€เบžเบทเปˆเบญเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เป€เบเบกเบžเบฑเบ”เบ—เบฐเบ™เบฒเป„เบ”เป‰เบ”เบตเบ‚เบถเป‰เบ™.

4) เปƒเบŠเป‰ while loop เป€เบžเบทเปˆเบญเปƒเบซเป‰เป‚เบ›เบฃเปเบเบกเบชเบฒเบกเบฒเบ”เปเบฅเปˆเบ™เป„เบ”เป‰เบ”เบปเบ™เป€เบ—เบปเปˆเบฒเบ—เบตเปˆเบกเบฑเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™.

#!/usr/bin/perl
เปƒเบŠเป‰ PDL;
เปƒเบŠเป‰ PDL::NiceSlice;
เปƒเบŠเป‰ PDL::Graphics::TriD;
เปƒเบŠเป‰เป€เบงเบฅเบฒ::HiRes qw(usleep);

my $a = random(100,100);
$a = ($a < 0.5);

$n เบ‚เบญเบ‡เบ‚เป‰เบญเบ;
เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ (1) {
# เบ„เบดเบ”เป„เบฅเปˆเบˆเปเบฒเบ™เบงเบ™เป€เบžเบทเปˆเบญเบ™เบšเป‰เบฒเบ™เบ•เปเปˆเบ•เบฒเบฅเบฒเบ‡.
$n = $a->range(ndcoords($a)-1,3,"periodic")->reorder(2,3,0,1);
$n = $n->sumover->sumover - $a;

# เบ„เบดเบ”เป„เบฅเปˆเบฅเบธเป‰เบ™เบ•เปเปˆเป„เบ›.
$a = ((($n == 2) + ($n == 3))* $a) + (($n==3) * !$a);

# เบˆเปเบชเบฐเปเบ”เบ‡เบœเบปเบ™.
nokeepwiddling3d();
imagrgb [$a];

# เบ™เบญเบ™ 0.1 เบงเบดเบ™เบฒเบ—เบต.
เบ™เบญเบ™เบซเบฅเบฑเบš(100000)
}

เบชเบฐเบซเบผเบธเบš: เบ—เบปเปˆเบงเป„เบ› เบเบปเบ™เบฅเบฐเบเบธเบ”


เบเบธเบ”เบ—เบฐเบชเบฒเบ”เบ—เบปเปˆเบงเป„เบ›เปเบกเปˆเบ™: เบเป‰เบฒเบ เป„เบ”เป‰ เบ‚เบฐเบซเบ™เบฒเบ” เบ—เปˆเบฒเบ™ เบ•เป‰เบญเบ‡เบเบฒเบ™ to เป€เบฎเบฑเบ”เบงเบฝเบ on to เป„เบ”เป‰ เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ of เบ‚เบญเบ‡โ€‹เบ—เปˆเบฒเบ™
piddle เบ‚เบญเบ‡ dimension เบฅเบฒเบเบŠเบทเปˆ เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เปƒเบซเป‰ PDL เบเบฐโ€‹เบ—เบนเป‰ เปƒเบ™เป„เบฅเบเบฐ เป„เบ”เป‰ เบชเบนเบ‡ เบ‚เบฐ เปœเบฒเบ”.

Threading เป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเบŠเปˆเบงเบเบเปเบฒเบˆเบฑเบ” for-loops เปเบฅเบฐเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบซเบผเบฒเบเบ‚เบถเป‰เบ™
เบซเบเปเป‰. เบซเบงเบฑเบ‡เป€เบ›เบฑเบ™เบขเปˆเบฒเบ‡เบเบดเปˆเบ‡เบงเปˆเบฒเบšเบปเบ”เบชเบญเบ™เบ™เบตเป‰เป„เบ”เป‰เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบกเบฑเบ™เบˆเบถเปˆเบ‡เบ„เบธเป‰เบกเบ„เปˆเบฒเบ—เบตเปˆเบˆเบฐเบˆเบฑเบšเบเบฑเบš threading
เปƒเบ™ PDL.

COPYRIGHT


เบชเบฐเบซเบ‡เบงเบ™เบฅเบดเบ‚เบฐเบชเบดเบ” 2010 Matthew Kenworthy ([email protected]) เปเบฅเบฐ Daniel Carrera
([email protected]). เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปเบˆเบเบขเบฒเบ เปเบฅเบฐ/เบซเบผเบทเบ”เบฑเบ”เปเบเป‰เป€เบญเบเบฐเบชเบฒเบ™เบ™เบตเป‰เบžเบฒเบเปƒเบ•เป‰เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ”เบฝเบงเบเบฑเบ™
เป€เบ›เบฑเบ™เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” Perl เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™.

เป€เบšเบดเปˆเบ‡: http://dev.perl.org/licenses/

เปƒเบŠเป‰ PDL::Threadingp เบญเบญเบ™เป„เบฅเบ™เปŒเป‚เบ”เบเปƒเบŠเป‰เบšเปเบฅเบดเบเบฒเบ™ onworks.net


เป€เบŠเบตเบšเป€เบงเบต เปเบฅเบฐเบชเบฐเบ–เบฒเบ™เบตเป€เบฎเบฑเบ”เบงเบฝเบเบŸเบฃเบต

เบ”เบฒเบงเป‚เบซเบผเบ”เปเบญเบฑเบš Windows เปเบฅเบฐ Linux

  • 1
    packfilemanager
    packfilemanager
    เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เป„เบŸเบฅเปŒ Total War pack
    เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹, เป€เบฅเบตเปˆเบกโ€‹เบˆเบฒเบโ€‹เบชเบฐโ€‹เบšเบฑเบš 1.7โ€‹. เบ
    เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบชเบฑเป‰เบ™เป†เบเปˆเบฝเบงเบเบฑเบš Warscape
    modding: ...
    เบ”เบฒเบงเป‚เบซเบฅเบ” packfilemanager
  • 2
    IPerf2
    IPerf2
    เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบงเบฑเบ”เปเบ—เบ
    เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” TCP เปเบฅเบฐ UDP เบ”เป‰เบงเบเบเบฒเบ™เบงเบฑเบ”เปเบ—เบ
    เบ›เบฐเบกเบฒเบ™เบ—เบฑเบ‡เบเบฒเบ™เบชเบปเปˆเบ‡เบœเปˆเบฒเบ™ เปเบฅเบฐ latency. เป„เบ”เป‰
    เป€เบ›เบปเป‰เบฒเปเบฒเบเบฅเบงเบกเป€เบ–เบดเบ‡เบเบฒเบ™เบฎเบฑเบเบชเบฒเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง
    iperf cod...
    เบ”เบฒเบงเป‚เบซเบฅเบ” IPerf2
  • 3
    fre:ac - เบ•เบปเบงเปเบ›เบ‡เบชเบฝเบ‡เบŸเบฃเบต
    fre:ac - เบ•เบปเบงเปเบ›เบ‡เบชเบฝเบ‡เบŸเบฃเบต
    fre:ac เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ›เบ‡เบชเบฝเบ‡ เปเบฅเบฐ CD เบŸเบฃเบต
    ripper เบชเปเบฒเบฅเบฑเบšเบฎเบนเบšเปเบšเบšเบ•เปˆเบฒเบ‡เป†เปเบฅเบฐเบ•เบปเบงเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”.
    เบกเบฑเบ™เบกเบต MP3, MP4 / M4A, WMA, Ogg
    เบฎเบนเบšเปเบšเบš Vorbis, FLAC, AAC, เปเบฅเบฐ Bonk
    เบชเบฐโ€‹เบซเบ™เบฑเบšโ€‹เบชเบฐโ€‹เบซเบ™เบนเบ™โ€‹, ...
    เบ”เบฒเบงโ€‹เป‚เบซเบผเบ”โ€‹เบŸเบฃเบต:ac - เปเบ›เบ‡โ€‹เบชเบฝเบ‡โ€‹เบŸเบฃเบตโ€‹
  • 4
    matplotlib
    matplotlib
    Matplotlib เป€เบ›เบฑเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบ—เบตเปˆเบชเบปเบกเบšเบนเบ™เปเบšเบš
    เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡ static, เบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง, เปเบฅเบฐ
    เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบžเบฒเบšเปเบšเบšเป‚เบ•เป‰เบ•เบญเบšเปƒเบ™ Python.
    Matplotlib เป€เบฎเบฑเบ”เปƒเบซเป‰เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‡เปˆเบฒเบเปเบฅเบฐเบ‡เปˆเบฒเบเบ”เบฒเบ
    เบเบฒเบ...
    เบ”เบฒเบงเป‚เบซเบฅเบ” Matplotlib
  • 5
    Botman
    Botman
    เบ‚เบฝเบ™เป€เบซเบ”เบœเบปเบ™ chatbot เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบ„เบฑเป‰เบ‡เบ”เบฝเบงเปเบฅเบฐ
    เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบกเบฑเบ™เบเบฑเบšเบซเบ™เบถเปˆเบ‡เปƒเบ™เบ—เบตเปˆเบกเบตเบขเบนเปˆ
    เบšเปเบฅเบดเบเบฒเบ™เบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบก, เบฅเบงเบกเบ—เบฑเบ‡ Amazon
    Alexa, Facebook Messenger, Slack,
    Telegram เบซเบผเบทเปเบกเป‰เบเบฐเบ—เบฑเป‰เบ‡ ...
    เบ”เบฒเบงเป‚เบซเบฅเบ” BotMan
  • 6
    Joplin
    Joplin
    Joplin เป€เบ›เบฑเบ™เปเบซเบผเปˆเบ‡เบ—เบตเปˆเบšเปเปˆเป€เบชเบเบ„เปˆเบฒเปเบฅเบฐเป€เบ›เบตเบ”
    note-taking เปเบฅเบฐ to-do เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆ
    เบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบเบฒเบ™เบšเบฑเบ™เบ—เบถเบเบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบเปƒเบ™
    เบฎเบนเบšเปเบšเบš Markdown, เบˆเบฑเบ”เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™
    เบ›เบทเป‰เบกเบšเบฑเบ™เบ—เบถเบ เปเบฅเบฐ...
    เบ”เบฒเบงเป‚เบซเบฅเบ” Joplin
  • เป€เบžเบตเปˆเบกเป€เบ•เบตเบก ยป

Linux เบ„เบณ เบชเบฑเปˆเบ‡

  • 1
    a2jmidid
    a2jmidid
    a2jmidid - JACK MIDI daemon เบชเปเบฒเบฅเบฑเบš ALSA
    MIDI...
    เปเบฅเปˆเบ™ a2jmidid
  • 2
    a2jmidi_bridge
    a2jmidi_bridge
    a2jmidi_bridge - เบ‚เบปเบงเบ„เบปเบ‡เบ—เบตเปˆเบเบฑเบšเบซเบ™เบถเปˆเบ‡
    เบžเบญเบ”เบเบฒเบ™เบซเบผเบดเป‰เบ™ ALSA เปเบฅเบฐเบซเบ™เบถเปˆเบ‡ JACK MIDI
    เบœเบญเบ”เบ›เป‰เบญเบ™...
    เปเบฅเปˆเบ™ a2jmidi_bridge
  • 3
    cpmcp
    cpmcp
    cpmcp - เบชเบณเป€เบ™เบปเบฒเป„เบŸเบฅเปŒเบˆเบฒเบ เปเบฅเบฐเปƒเบชเปˆ CP/M
    เปเบœเปˆเบ™...
    เปเบฅเปˆเบ™ cpmcp
  • 4
    cpmls
    cpmls
    cpmls - เบฅเบฒเบเบเบฒเบ™เบˆเบฑเบ”เบฎเบฝเบ‡เป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡
    เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต ...
    เปเบฅเปˆเบ™ cpmls
  • 5
    FvwmWindowMenu
    FvwmWindowMenu
    FvwmWindowMenu - เป€เบ›เบตเบ” fvwm เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป„เบ”เป‰
    เป€เบกเบ™เบนเบฅเบฒเบเบเบฒเบ™เบ›เปˆเบญเบ‡เบขเป‰เบฝเบกเบ›เบฐเบˆเบธเบšเบฑเบ™ ...
    เปเบฅเปˆเบ™ FvwmWindowMenu
  • 6
    FvwmWinList
    FvwmWinList
    FvwmWinList - เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ›เปˆเบญเบ‡เบขเป‰เบฝเบก fvwm
    เป‚เบกเบ”เบนเบ™ ...
    เปเบฅเปˆเบ™ FvwmWinList
  • เป€เบžเบตเปˆเบกเป€เบ•เบตเบก ยป

Ad