Fișier:CA rule110s.png

De la testwiki
Sari la navigare Sari la căutare
Fișier original (10.000 × 10.000 pixeli, mărime fișier: 167 KB, tip MIME: image/png)

Acest fișier provine de la Wikimedia Commons și poate fi folosit și în cadrul altor proiecte. Descrierea de mai jos poate fi consultată la pagina de descriere a fișierului.

Descriere fișier

Descriere Vedeți mai jos.
Dată
Sursă Own work by the original uploader
Autor Grondilu (talk) (Uploads)
Alte versiuni

Made with the following Perl code:

use strict;
use warnings;
use GD;

package Automaton {
    sub new {
        my $class = shift;
        my $rule = [ reverse split //, sprintf "%08b", shift ];
        return bless { rule => $rule, cells => [ @_ ] }, $class;
    }
    sub next {
        my $this = shift;
        my @previous = @{$this->{cells}};
        $this->{cells} = [
            @{$this->{rule}}[
                map {
                    4 * $previous[($_ - 1) % @previous]
                    + 2 * $previous[$_]
                    + $previous[($_ + 1) % @previous]
                } 0 .. @previous - 1
            ]
        ];
        return $this;
    }
    use overload
        q{""} => sub {
            my $this = shift;
            join '', map { $_ ? '#' : ' ' } @{$this->{cells}}
        };

    sub to_image {
        my ($this, $width, $height) = @_;
        my $image = GD::Image->new($width, $height);
        my $black = $image->colorAllocate(0, 0, 0);
        my $white = $image->colorAllocate(255, 255, 255);

        my $x = 0;
        my $y = 0;
        foreach my $cell (@{$this->{cells}}) {
            if ($cell) {
                $image->setPixel($x, $y, $black);
            } else {
                $image->setPixel($x, $y, $white);
            }
            $x++;
            if ($x >= $width) {
                $x = 0;
                $y++;
                last if $y >= $height;
            }
        }
        return $image;
    }
}

my ($width, $height) = (10**4, 10**4);
my @a = map 0, 1 .. $width;
$a[$width - 1] = 1;
my $a = Automaton->new(110, @a);

# Save to file
open(my $out, '>', 'output.png') or die "Cannot open file: $!";
binmode $out;
print $out "P1\n$width $height\n";

for (1 .. $height) {
    print $out join(' ', @{$a->{cells}}) . "\n";
    $a->next;
}

close $out;


Licențiere

Grondilu at engleză Wikipedia, deținătorul drepturilor de autor ale acestei opere, prin prezenta își publică lucrarea sub următoarea licență:
Creative Commons CC-Zero Acest fișier a fost eliberat sub licența Creative Commons CC0 1.0 Universal Public Domain Dedication.
Persoana care a asociat o operă cu acest document o oferă domeniului public, renunțând la toate drepturile asupra operei, în toată lumea, atât în ce privește drepturile de autor cât și orice alte drepturi juridice conexe pe care le avea asupra operei, în măsura permisă de lege. Puteți copia, modifica sau distribui opera, inclusiv în scopuri comerciale, fără a fi necesară permisiunea autorului.

Jurnalul original al încărcărilor

Pagina originală de descriere a fost aici. Toate numele de utilizator de mai jos sunt pentru en.wikipedia.
  • 2014-02-28 08:32 Grondilu 1000×1000× (10463 bytes) Made it myself with the following Perl code: <code>use strict; use warnings; package Automaton { sub new { my $class = shift; my $rule = [ reverse split //, sprintf "%08b", shift ]; return bless { rule => $rule, cells => [ @_ ] }, $class;...

Captions

Add a one-line explanation of what this file represents

Items portrayed in this file

subiectul reprezentat

28 februarie 2014

image/png

checksum engleză

9b1b62f5bf9ee9a880d31358b7337a51c56c12d9

10.000 pixel

10.000 pixel

Istoricul fișierului

Apăsați pe Data și ora pentru a vedea versiunea fișierului trimisă la momentul respectiv.

Data și oraMiniaturăDimensiuniUtilizatorComentariu
actuală4 august 2023 18:14Miniatură pentru versiunea din 4 august 2023 18:1410.000x10.000 (167 KB)wikimediacommons>Obscure2020Optimized with OxiPNG and ZopfliPNG.

Următoarea pagină folosește acest fișier: