เบเบตเปเปเบกเปเบเบเปเบฒเบชเบฑเปเบ 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