Kronecker product based fractals: Difference between revisions
Content deleted Content added
Ada version |
Thundergnat (talk | contribs) Rename Perl 6 -> Raku, alphabetize, minor clean-up |
||
Line 1,301:
Link to live demo: https://dc25.github.io/rosettaCode__Kronecker_product_based_fractals/ ( a little slow to load ).
=={{header|J}}==
Line 2,550 ⟶ 2,551:
}</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.
=={{header|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;▼
@kronecker▼
}▼
use Image::PNG::Portable;▼
#Task requirements▼
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,▼
'carpet', @carpet, 4,▼
'six', @six, 3▼
-> $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 {▼
for ^@img -> $y {▼
$png.set: $x, $y, |( @img[$y;$x] ?? <255 255 32> !! <16 16 16> );▼
}▼
}▼
$png.write: "kronecker-{$name}-perl6.png";▼
}</lang>▼
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}}==
Line 2,888 ⟶ 2,855:
*** END: Fri Apr 07 09:31:07 2017
</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;
▲ @kronecker
▲}
▲use Image::PNG::Portable;
▲#Task requirements
▲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,
▲ 'carpet', @carpet, 4,
▲ 'six', @six, 3
▲ -> $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 {
▲ for ^@img -> $y {
▲ $png.set: $x, $y, |( @img[$y;$x] ?? <255 255 32> !! <16 16 16> );
▲ }
▲ }
▲ $png.write: "kronecker-{$name}-perl6.png";
▲}</lang>
▲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}}==
|