|
|
Line 1,301: |
Line 1,301: |
|
|
|
|
|
Link to live demo: https://dc25.github.io/rosettaCode__Kronecker_product_based_fractals/ ( a little slow to load ). |
|
Link to live demo: https://dc25.github.io/rosettaCode__Kronecker_product_based_fractals/ ( a little slow to load ). |
|
|
|
|
=={{header|J}}== |
|
=={{header|J}}== |
|
|
|
|
Line 2,550: |
Line 2,551: |
|
}</lang> |
|
}</lang> |
|
See [https://github.com/SqrtNegInf/Rosettacode-Perl5-Smoke/blob/master/ref/kronecker-vicsek-perl6.png Kronecker-Vicsek], [https://github.com/SqrtNegInf/Rosettacode-Perl5-Smoke/blob/master/ref/kronecker-carpet-perl6.png Kronecker-Carpet] and [https://github.com/SqrtNegInf/Rosettacode-Perl5-Smoke/blob/master/ref/kronecker-six-perl6.png Kronecker-Six] images. |
|
See [https://github.com/SqrtNegInf/Rosettacode-Perl5-Smoke/blob/master/ref/kronecker-vicsek-perl6.png Kronecker-Vicsek], [https://github.com/SqrtNegInf/Rosettacode-Perl5-Smoke/blob/master/ref/kronecker-carpet-perl6.png Kronecker-Carpet] and [https://github.com/SqrtNegInf/Rosettacode-Perl5-Smoke/blob/master/ref/kronecker-six-perl6.png Kronecker-Six] images. |
|
|
|
⚫ |
|
|
⚫ |
{{works with|Rakudo|2018.09}} |
|
|
|
|
⚫ |
<lang perl6>sub kronecker-product ( @a, @b ) { (@a X @b).map: { (.[0].list X* .[1].list).Array } } |
|
|
|
|
⚫ |
sub kronecker-fractal ( @pattern, $order = 4 ) { |
|
⚫ |
my @kronecker = @pattern; |
|
⚫ |
@kronecker = kronecker-product(@kronecker, @pattern) for ^$order; |
|
⚫ |
|
|
⚫ |
|
|
|
|
|
⚫ |
use Image::PNG::Portable; |
|
|
|
|
⚫ |
|
|
⚫ |
my @vicsek = ( [0, 1, 0], [1, 1, 1], [0, 1, 0] ); |
|
⚫ |
my @carpet = ( [1, 1, 1], [1, 0, 1], [1, 1, 1] ); |
|
⚫ |
my @six = ( [0,1,1,1,0], [1,0,0,0,1], [1,0,0,0,0], [1,1,1,1,0], [1,0,0,0,1], [1,0,0,0,1], [0,1,1,1,0] ); |
|
|
|
|
⚫ |
for 'vicsek', @vicsek, 4, |
|
⚫ |
|
|
⚫ |
|
|
⚫ |
-> $name, @shape, $order { |
|
⚫ |
my @img = kronecker-fractal( @shape, $order ); |
|
⚫ |
my $png = Image::PNG::Portable.new: :width(@img[0].elems), :height(@img.elems); |
|
⚫ |
(^@img[0]).race(:12batch).map: -> $x { |
|
⚫ |
|
|
⚫ |
$png.set: $x, $y, |( @img[$y;$x] ?? <255 255 32> !! <16 16 16> ); |
|
⚫ |
|
|
⚫ |
|
|
⚫ |
$png.write: "kronecker-{$name}-perl6.png"; |
|
⚫ |
|
|
|
|
|
⚫ |
See [https://github.com/thundergnat/rc/blob/master/img/kronecker-vicsek-perl6.png Kronecker-Vicsek], [https://github.com/thundergnat/rc/blob/master/img/kronecker-carpet-perl6.png Kronecker-Carpet] and [https://github.com/thundergnat/rc/blob/master/img/kronecker-six-perl6.png Kronecker-Six] images. |
|
|
|
|
|
|
=={{header|Phix}}== |
|
=={{header|Phix}}== |
Line 2,888: |
Line 2,855: |
|
*** END: Fri Apr 07 09:31:07 2017 |
|
*** END: Fri Apr 07 09:31:07 2017 |
|
</pre> |
|
</pre> |
|
|
|
|
⚫ |
|
|
|
(formerly Perl 6) |
|
⚫ |
{{works with|Rakudo|2018.09}} |
|
|
|
|
⚫ |
<lang perl6>sub kronecker-product ( @a, @b ) { (@a X @b).map: { (.[0].list X* .[1].list).Array } } |
|
|
|
|
⚫ |
sub kronecker-fractal ( @pattern, $order = 4 ) { |
|
⚫ |
my @kronecker = @pattern; |
|
⚫ |
@kronecker = kronecker-product(@kronecker, @pattern) for ^$order; |
|
⚫ |
|
|
⚫ |
|
|
|
|
|
⚫ |
use Image::PNG::Portable; |
|
|
|
|
⚫ |
|
|
⚫ |
my @vicsek = ( [0, 1, 0], [1, 1, 1], [0, 1, 0] ); |
|
⚫ |
my @carpet = ( [1, 1, 1], [1, 0, 1], [1, 1, 1] ); |
|
⚫ |
my @six = ( [0,1,1,1,0], [1,0,0,0,1], [1,0,0,0,0], [1,1,1,1,0], [1,0,0,0,1], [1,0,0,0,1], [0,1,1,1,0] ); |
|
|
|
|
⚫ |
for 'vicsek', @vicsek, 4, |
|
⚫ |
|
|
⚫ |
|
|
⚫ |
-> $name, @shape, $order { |
|
⚫ |
my @img = kronecker-fractal( @shape, $order ); |
|
⚫ |
my $png = Image::PNG::Portable.new: :width(@img[0].elems), :height(@img.elems); |
|
⚫ |
(^@img[0]).race(:12batch).map: -> $x { |
|
⚫ |
|
|
⚫ |
$png.set: $x, $y, |( @img[$y;$x] ?? <255 255 32> !! <16 16 16> ); |
|
⚫ |
|
|
⚫ |
|
|
⚫ |
$png.write: "kronecker-{$name}-perl6.png"; |
|
⚫ |
|
|
|
|
|
⚫ |
See [https://github.com/thundergnat/rc/blob/master/img/kronecker-vicsek-perl6.png Kronecker-Vicsek], [https://github.com/thundergnat/rc/blob/master/img/kronecker-carpet-perl6.png Kronecker-Carpet] and [https://github.com/thundergnat/rc/blob/master/img/kronecker-six-perl6.png Kronecker-Six] images. |
|
|
|
|
|
=={{header|REXX}}== |
|
=={{header|REXX}}== |