Bir ağaç dikin ve büyümesini izleyin


30

Yetiştirdiğimiz ağaçların nasıl büyüdüklerini tanımlayan bazı kuralları vardır:

Büyüme Kuralları:

  1. Ağaçlar sadece dallardan oluşur.
  2. Dallar, aşağıdaki sembollerin bir kombinasyonundan oluşur: _, \, |, /, ve_
  3. Ağaç |, zeminde ( _) tek bir dikey dal / gövde ( ) ile başlar :

    __________________|___________________

  4. Dal büyümesi için gıda ışıktan geliyor.

    • Işık, gökyüzündeki her noktada 2 şiddetinde başlar ve düz bir şekilde hareket eder.
    • Her dal kendi için mevcut ışığın yarısını yiyebilir ve geri kalan kısım alt dallara geçer.
    • Böylelikle yukarıda başka bir şubesi olmayan bir şube, her mevsimde 1 birim hafif yiyecek alacak, her mevsimde 1 şube olan bir dal alacaktır ve her mevsimde 5 birim yiyecek alabilecek ve genel olarak n dallı bir şube alacaktır. Her sezon 1 / (2 ^ n) yiyecek.
  5. Her mevsim sonunda yiyecekler gövdeden başlayarak toplanır ve taşınır ve yeni dallara ve meyvelere dönüştürülür (dal meyve haline gelinceye veya 1 birimden az yiyecek kalıncaya kadar aşağıdaki kuralları uygulayın):
    • Bir dalın bir sezon sonunda 1 birimden az gıda maddesi olması durumunda, o dalın tüm gıdaları bir sonraki mevsime kadar bu dalda saklanır.
    • Bir dalın 1 birimlik bir yiyeceğe eşit veya daha büyük olması ve büyümesi gereken yer olması durumunda, mevcut büyüme düzenlerini (aşağıya bakınız) kullanarak rastgele bir şekilde yeni bir dal oluşturur (aşağıya bakınız) ve kalan yiyeceği bir sonraki sezon için saklar.
    • Bir dalın> = 1 birim gıda varsa, büyümesi için hiçbir yerde değilse ve dal dışı dallar varsa, yiyeceği dal dışı dallarına eşit olarak dağıtır.
    • Bir dalın> = 1 birim gıda varsa, büyümesi gereken bir yer varsa ve hiç dallanmayan dal yoksa, meyve olur (ile temsil edilir O).
  6. İşte olası büyüme konfigürasyonları

Büyüme Konfigürasyonları:

_    \     |     /   _      _   \   |    /   \    |   /   _ 
 |    |    |    |   |        \   \   \   \   /   /   /   /     __   \_   |_   _|  _/  __
--- Vertical Branches ---      --- Diagonal Branches ---      --- Horizontal Branches ---


Örnek potansiyel ağacı:

                \  
                /   /
              \/O  |___//
            \_/  \//O\_/ 
              \__/|\|_/
                 \|/
__________________|__________________

Giriş:

Programınız, hangi ağacın anlık görüntülerini görmek istediğinizi gösteren bir liste olarak girebilmelidir. Örneğin, [10,20,50] ağacı 10 mevsim, 20 mevsim ve 50 mevsim sonra görmek istediğiniz anlamına gelir.

Çıktı:

Her giriş sezonu için programınız sezonu ve ardından o mevsimdeki ağacın resmini çıkarmalıdır. Eğer işe yararsa, 60 gibi bir ağaç için maksimum yaş tanımlayabilirsiniz, böylece bir ağaç için maksimum yükseklik 61, maksimum genişlik 121 olur ve ardından ağacı her zaman o ölçekte gösterir. Aksi halde, görüntünüzü herhangi bir boydaki ağaca ölçeklendirmekten çekinmeyin. Örneğin, giriş [0,1,2,3] ise çıktınız şunlar olabilir:

Season 0:
_|_

Season 1:
 \
__|__

Season 2:
 _
  \| 
___|___

Season 3:

 |_/ _
   \| 
____|___


kazanan

Her çözüm kodlayıcının programlarının en sevdiği çalışmasının çıktısını, kaynak kodlarıyla birlikte girdileriyle [10,40]birlikte göndermelidir. Ayrıca, TÜM hakların kazanılması için yukarıdaki kriterlerin karşılanması gerekir.

Kazanan en yüksek oy sayısına sahip olan elemci olacak.

İyi şanslar ve neşeli ekim !!!


"Büyümek için oda" tanımlanmış görünmüyor.
Peter Taylor

"Code-challenge" ve "code-golf" etiketlerinin birbirine uymadığını düşünüyorum ("kod büyüklüğü dışındaki objektif ölçüt" ve "kaynak kodun en az baytı").
Howard

@Peter Taylor: Büyümek için oda olup olmadığını görmek için, önce o dal tipinin büyüme konfigürasyonlarını kontrol etmelisiniz (örn. Dikey dallar yukarı sola, yukarı ve yukarı sağ gidebilir) ve sonra bu boşluklardan herhangi birinin olup olmadığını görün. boş. Eğer öyleyse, büyüme için yer var.
Briguy37

@Howard: Evet, aynı şeyi düşünüyordum ama emin değildim. Bunun kesinlikle burada gördüğüm çoğu problemden daha zor olduğunu düşünüyorum, bu yüzden kesinlikle "kod mücadelesi" istedim. Ancak, birden fazla çözüm varsa, açık bir kazanan belirlemek için bir yol istedim. Yukarıdaki puanlama hesaplaması, atom-kod-golf puanlamasına oy vermeyi kolaylaştırır, bu yüzden atom-kod-golf puanı esasen bir bağlayıcıdır. Bunu insanlara bırakacağım: Howard'ın yorumu bundan daha fazla oy alırsa golf gereksinimleri dalgalanır.
Briguy37 21:11

Mevcut puanlama mekanizmasıyla kod golfü değil . Bu da bir atomik kod golf değil.
Peter Taylor

Yanıtlar:


16

piton

Bununla biraz özgürlüğüm oldu:

  1. Çoklu ağaçlara izin veriyorum
  2. Meyveler çiçeklerden önce gelir - bir çiçek bir kez 1 yiyince meyveye dönüşür.
  3. Meyve 3 yemek yediğinde olgunlaşır. Daha sonra ağaçtan düşer ve tekrar çiçeğe dönüşür.
  4. Meyve herhangi bir gövdeden en az 4 yere düşerse, yeni bir ağaca tomurcuklanır. Çok fazla ışık almadığından meyvede olduğu kadar yiyecek ekiyorum.

Numune Çıktısı, 2 ağaç

                            / 
     \/\_ |  /             |  
 _  _/\|\|_\/             /|/ 
  |/ \/|/|O/              \|/ 
   \_/O|@|/               /|_ 
     \_|_|                \|  
_______|___________________|__

                       _      \                                   
                _/ _ \/\___/\|/                  \                
             /|\|\O@|/\/|__\/ \__/_\|/\\|  _ |/| _||/\\ /         
             \|_|@|\|@/O|@@/O_/@O|@/ \//\   \|\||@||@///          
           \_ \_|\|/@\\O|@||/OO//O\\O/ \@|@\||/@|\/\/|/   | / _   
        ___/    |/|/O//O|O||\\/|/O// \_O\|__| \O|/\/O|   _/\\|    
         / \_O@@_\/\O\\@|/O|/O\@\O\\@/OO/|O_@O/O|\/\/     \//|/__ 
     _|/|_|  \\|O\\/O/O||_@|\O|\/O//|O|@\|/O_O\@|/O/\_@O__//_||   
    | \\|____// |O|\O\O|/\@|/ |/O/ \|O|OO|\/@_/O|_O\/O//O_//O/    
    |_O\\@O\/\\OO\|/|/\O\O\|__@\|O@/|/O|O|/\OO\/|_O/  \\|OO\/     
   /  \\||_|\|||_O|\|@/OO\//OOO/|/@\|OO|\|\@|O \|\|O@O//  \/\     
 _/\_/@\|\@|/  \_||/ \\@|/\\\||/ \//O|O|/|/@|\@/|/O/OO\\__/  \||/ 
  \||/  |_|O\__@ |O\O/O||\///@|O_//|/OO|@|OO|/O\|O/OO|// /|\|/\|  
   ||___O@|_/  |__\/||_||/|\\/OO/|@|O|/ \|_O||_/O/O/O|/_|\/\|_/   
    \_OO\\_O\@_|/|_\|_O|/\|//\/|/@|O\|@_O|O_O\/||\/O/|/_|/|O|     
      \_|\@\@|_|\|OO|O|/\//O\/\O\@|_/|_@\|/\O/\||/\|/|@@|@|/      
       /|//|\|O|_|O\O\O\/|O\/|@|/_|\OO@\/ \/|O/_|O//@|@/\_|       
       \O\\|/|_OO|OO\O|/\|@@\|O|/ @//|_@\_/\|//O_/|O/  \/         
        \O\|O_/|/ \|O|O\/|/OO|O|O_/ \|    \/|/|/@ |/\__/          
         |O|_O\|\O/|_|O/\|\//|/   \_/     /\@\| \_/\/             
          \OO\O|/ \ _|@\/O||@|\___/       \/|/    \/              
           |__|O\__|OO\/\@||/\/            \|O____/               
              |____|/@/\|\|O\/            _/|/O                   
                   |/ \/|/|@/              \|/                    
                    \_/O|@|/              |/|__                   
            \|/       \_|_|  \|_      \|/  \|    \|/  _|_         
_____________|__________|_____|________|____|_____|____|__________

Kaynak

from random import choice, shuffle
format = '_\|/_@O'
directions = [(-1,0),(-1,1),(0,1),(1,1),(1,0)]
placement = [[[],[0,1,2],[]],[[],[0,1,2],[3]],[[0,1],[2],[3,4]],[[1],[2,3,4],[]],[[],[2,3,4],[]]]

def shine():
    for x in ymax:
        light = 2.
        for y in range(ymax[x],-1,-1):
            if (x,y) in tree:
                tree[x,y][1] += light/2
                light        /= 2


def grow((x,y)=(0,0),flow=0):
    type,store,children = tree[x,y]
    food = store + flow
    if type == 5:
        if food > 1:
           tree[x,y][0] = 6
           tree[x,y][1] = food-1
        return
    elif type == 6:
        if food > 3:
            tree[x,y]=[5,0,[]]
            if min(abs(x-xi) for xi in roots) > 4:
                tree[x,0] = [2,food,[]]
                roots.append(x)
        else:
            tree[x,y][1]=food
        return

    if food < 1:
        shuffle(children)
        for c in children:
            grow(c)
        return

    sites = []
    x0 = x+directions[type][0]-1
    y0 = y+directions[type][1]
    for i,t in enumerate(placement[type]):
        if t and (x0+i,y0) not in tree:
            sites.append((t,x0+i,y0))

    if sites:
        t,x1,y1 = choice(sites)
        t1 = choice(t)
        children.append((x1,y1))
        tree[x,y][1]=food-1
        tree[x1,y1]= [t1,0,[]]
        ymax[x1] = max(ymax.get(x1,0),y1)
    elif children:
        shuffle(children)
        for c in children:
            grow(c,food/len(children))
        tree[x,y][1]=0
    else:
        tree[x,y][0]=5

def output():
    X = range(min(ymax.keys())-1,max(ymax.keys())+2)
    for y in range(max(ymax.values()),-1,-1):
        s = ''
        for x in X:
            s += format[tree[x,y][0]] if (x,y) in tree else '_ '[y>0]
        print s


roots = [0,20]
seasons = [10,40]
tree = {}
ymax = {}
for r in roots:
    tree[r,0] = [2,0,[]]
    ymax[r]=0

for season in range(max(seasons)):
    shine()
    shuffle(roots)
    for r in roots:
        grow((r,0))
    if season+1 in seasons:
        output()
        print

Golf edilmiş bir çözüm görmek merak ediyorum.


2
Çiçeklerin meyve ve tohum fikrine dönüşmesini seviyorum! Bir öneri: ağaçları ayrı tutmak için bir boşluk kuralı ekleyin. Örneğin, belki dallar başka bir ağaçtan dallara bitişik hiçbir alanda filizlenemezler.
Briguy37 21:11

7

Python, 673 karakter

İşte golf versiyonu:

import random
Z='|_\/O'
T={60:0}
F={60:0}
C={60:[]}
B=[((1j-1,1),(1j-1,2),(1j,0),(1j+1,3),(1j+1,1)),((-1,1),(-1,2),(-1,0),(1,0),(1,3),(1,1)),((1j-1,1),(1j-1,2),(1\
j-1,0),(1j,3)),((1j,2),(1j+1,0),(1j+1,3),(1j+1,1)),()]
S=input()
for s in range(61):
 if s in S:
  for y in range(60,0,-1):print''.join(Z[T[x+y*1j]]if x+y*1j in T else' 'for x in range(121))
  print'_'*60+'|'+'_'*60
 for p in T:F[p]+=.5**sum(q.real==p.real and q.imag>p.imag and T[q]<4for q in T)
 for p in[q for q in T if F[q]>=1]:
  D=[p+d,c for d,c in B[T[p]]if p+d not in T]
  if D:q,c=random.choice(D);F[p]-=1;T[q]=c;F[q]=0;C[q]=[];C[p]+=[q]
  elif C[p]:
   for q in C[p]:F[q]+=F[p]/len(C[p])
  else:T[p]=4

örnek @ 10 (ilginç kısma kesildi):

           |  |_   
       |_|/\_\ \|  
 |   \\/\|\/__|/   
 |/   \\O|O\__|    
  \___/O|/\/       
      \/O\/        
       \|/         
________|__________

@ 40 örneği:

             _  _        \_ _ / _|                        
        // _|/\|_\||_\___/ \_|_|/|/|_ |  _    //          
/     _|\\|_/\/|\/_/\/O|O\OO\|\|OO\|  \\/  |/|/|_/|       
\/\|OOO|//OO\O\|//OO/O_|O||\O|/|/|/OOO/ \OOO\/\| \||_|  | 
 \_|/|_O\\|\O\/|/O/O\_O|/  \\|O|O|/OO\\_/\O\|\/OO/\|O_|\| 
   |_|OO/O|/O/\|\/\O|O||_OOO|\\|/ \/O_|O\/OO|/O_|\/|OO|/  
     |/|\O|\|\/OO\O\|_|OO\|||// \OO\_O|O/  |||/_O/O|__|   
      \|O\O\|/\O\/\O|O|O\/O||/O_/|OO/\| \OO/\|/  \_|      
       |_/ O|\/O/\/\O\|\|\O|/\/OO|/ \/OO/\O\O\\__/        
         \_/O/\||/\O|\|O|O\\\/O_| \O/|/ \/O/_//     
           \O\/  \O\|_|O/\// \/OOOO|\|OO/|/|_|   
            |/\OO/O/  |O\/|\O/\O\|\O\|_|\|_|     
             \/OO\_\O__\|\|O|\/OO|/OO|___|       
              \|OOO\|O \\\|O|/|OO|OO\|          
               |/ \O|\_O\\|O|\|OO|O|/       
                \_/O|/O_//|O|/OO\|\|    
                  \_|OO \\O\|\/O_|/    
                    |/   \\O|O\__|    
                     \___/O|/\/     
                         \/O\/     
                          \|/    
___________________________|______________________________

İlginç ... senin ağacın üstünde çok düz görünüyor, oysa benimki yuvarlak gözüküyor. Birimizin bir böceği olup olmadığını merak ediyorum, ya da torunları doğurdukları sırayla çocuklara rastgele rastlamak için karıştırdım. Ayrıca, meyvelerinizin ışığı yakalamadığını farkettim ... Bunu yapmam gerekip gerekmediğinden emin değildim. ya da değil.
6'da stant

2

JavaScript

UPD: Bazı yeni kurallar eklendi:

  1. eğer dal büyüyebilirse, ilk önce yaprak olur, yaprak> = 1 gıda olduğunda, gıda = yaprak gıda olan bir dal haline gelir.
  2. eğer dalın büyümesi ve yiyeceği olmaması için>> 1 yiyecek varsa, çiçek açması
  3. eğer çiçek 1.5'ten fazla yiyeceğe sahipse, çiçek yiyeceği olan bir kurbağaya dönüşür / 2
  4. Kurbağanın birden fazla yemi varsa, yere düşer ve yeni ağaca dönüşür.
  5. Her mevsim% 10 yağmur yağma şansı vardır, bu da zeminde yer alan şubelere ilave yiyecek veren yiyecekleri diğerlerine dağıtabilir.

İşte javascript üzerindeki en güzel kod değil. Daha sonra bazı gelişmeler olabilir. JSFiddle'da Kod

var leaf = function(food, branchDirection){
    this.food = food || 0;
    this.branchDirection = branchDirection;
    this.char = 'o';

    this.getHtml = function(){
        var color = "#00FF00";
        var bgColor = "#00BBEE";

        return "<span style=\"color: " + color + "; background-color: " + bgColor + "\">" + this.char + "</span>";
    };
};

var branch = function(food, direction){
    var directionChars = ["_", "\\", "|", "/"];

    this.food = food || 0;
    this.char = directionChars[direction];
    this.direction = direction;
    this.child_branches = [];

    this.getPossibleDirections = function(){
        if(this.direction === 0)
        {
            return [
                    [-1, 0, [0,1,2]],
                    [+1, 0, [2,3,0]]
                ];
        }
        if(this.direction == 1)
        {
            return [
                    [-1, +1, [0,1,2]],
                    [0, +1, [3]]
                ];
        }
        if(this.direction == 2){
            return [
                    [-1, +1, [0,1]],
                    [0, +1, [2]],
                    [+1, +1, [3,0]]
                ];
        }
        if(this.direction == 3){
            return [
                    [+1 ,+1 , [0,2,3]],
                    [0 ,+1 , [1]]
                ];
        }
    };


    this.getHtml = function(){
        var color = "brown";
        var bgColor = "#00BBEE";

        return "<span style=\"color: " + color + "; background-color: " + bgColor + "\">" + this.char + "</span>";
    };
};

var froot = function(food){
    this.char = "O";
    this.food = food || 0;

    this.getHtml = function(){
        var color = "#FF0000";
        var bgColor = "#00BBEE";

        return "<span style=\"color: " + color + "; background-color: " + bgColor + "\">" + this.char + "</span>";
    }; 
};

var flower = function(food){
    this.char = "@";
    this.food = food || 0;

    this.getHtml = function(){
        var color = "#FFFF00";
        var bgColor = "#00BBEE";

        return "<span style=\"color: " + color + "; background-color: " + bgColor + "\">" + this.char + "</span>";
    };
};

var ground = function(){
    this.char = "_";

    this.getHtml = function(){
        var color = "black";
        var bgColor = "#00BBEE";

        return "<span style=\"color: " + color + "; background-color: " + bgColor + "\">" + this.char + "</span>";
    };
};

var air = function(){
    this.char = " ";

    this.getHtml = function(){
        var color = "blue";
        var bgColor = "#00BBEE";

        return "<span style=\"color: " + color + "; background-color: " + bgColor + "\">" + this.char + "</span>";
    };
};

var tree = function(){
    var me = this;
    var treeSpace = 5;


    this.treeMatrix = [];

    this.calculateFood = function(isRainy){
        //console.log(this.treeMatrix);
        var width = this.treeMatrix[0].length;
        isRainy = isRainy || false;

        for(var i in this.treeMatrix[0]){
            var food = 2;

            for(var j in this.treeMatrix){
                if(this.treeMatrix[this.treeMatrix.length - 1 - j][i] instanceof branch
                  || this.treeMatrix[this.treeMatrix.length - 1 - j][i] instanceof leaf){
                    this.treeMatrix[this.treeMatrix.length -1 - j][i].food += food;
                    food /= 2;
                }
            }

            if(isRainy){
                var rainFood = 5;

                for(var j in this.treeMatrix){
                    if(j == 0 && !(this.treeMatrix[j][i] instanceof branch))
                        continue;

                    if((this.treeMatrix[j][i] instanceof branch
                      || this.treeMatrix[j][i] instanceof leaf)
                      &&
                      (j == 0 || this.treeMatrix[j-1][i] instanceof branch)){
                        this.treeMatrix[j][i].food += food;
                        rainFood /= 2;
                    }

                }
            }
        }
    };

    this.expandMatrix = function(){
        var expandLeft = false;
        var expandRight = false;
        var expandTop = false;

        this.treeMatrix[this.treeMatrix.length - 1].forEach(function(el){
            if(el instanceof branch)
                expandTop = true;
        });

        if(expandTop)
            this.treeMatrix.push(this.treeMatrix[0].map(function(){return new air();}));


        for(var i in this.treeMatrix){
            if(this.treeMatrix[i][0] instanceof branch){
                expandLeft = true;
            }
            if(this.treeMatrix[i][this.treeMatrix.length - 1] instanceof branch){
                expandRight = true;
            }
        }

        this.treeMatrix = this.treeMatrix.map(function(row){
            if(expandLeft)
                row.unshift((row[0] instanceof ground ? new ground() : new air()));
            if(expandRight)
                row.push((row[0] instanceof ground ? new ground() : new air()));

            return row;
        });
    };

    this.calculateNewMatrix = function(){
        if(this.treeMatrix.length === 0){
            this.treeMatrix.push([new ground(), new branch(0,2), new ground()]);
        }

        var rainySeason = Math.random() > 0.9;

        this.expandMatrix();
        this.calculateFood(rainySeason);

        for(var i in this.treeMatrix){
            for(var j in this.treeMatrix[i]){
                var element = this.treeMatrix[i][j];

                // grow a branch/distribute food/set froot or just store food of not(do nothing)
                if(element instanceof branch
                    && element.food >= 1
                ){
                    //console.log("branch coordinates", i, j);
                    var directions = element.getPossibleDirections();
                    var tm = this.treeMatrix;

                    var freeDirections = directions.filter(function(directionArr){
                        if(tm[parseInt(i) + directionArr[1]][parseInt(j) + directionArr[0]] instanceof branch)
                            return false;
                        else
                            return true;
                    });

                    if(freeDirections.length){
                        var newCell = freeDirections.length > 1
                            ? freeDirections[Math.floor(Math.random() * freeDirections.length)]
                            : freeDirections[0];

                        this.treeMatrix[parseInt(i) + newCell[1]][parseInt(j) + newCell[0]] = new leaf(element.food/2, newCell[2][Math.floor(Math.random() * newCell[2].length)]);
                        element.child_branches.push(this.treeMatrix[parseInt(i) + newCell[1]][parseInt(j) + newCell[0]]);
                    }
                    else if(!freeDirections.length && !element.child_branches.length){
                        this.treeMatrix[i][j] = new flower(element.food/2);
                    }
                    else if(!freeDirections.length && element.child_branches.length){
                        element.child_branches.forEach(function(child){
                            child.food += element.food/element.child_branches.length;
                        });

                        element.food = 0;
                    }
                }
                if(element instanceof flower
                    && element.food >= 1.5
                  ){
                    this.treeMatrix[i][j] = new froot(element.food/2);
                }
                if(element instanceof froot
                    && element.food >= 1
                  ){
                    this.plantNewTree(j, element.food);
                    this.treeMatrix[i][j] = new air();
                }
                if(element instanceof leaf
                    && element.food >= 1
                  ){
                   this.treeMatrix[i][j] = new branch(element.food, element.branchDirection);
                }
            }
        }
    };

    this.plantNewTree = function(coord, food){
        var canGrow = true;

        for(var i = 0; i <= treeSpace; i++){
            if(!(this.treeMatrix[0][coord + i] instanceof ground)
               || !(this.treeMatrix[0][coord - i] instanceof ground))
                canGrow = false;
        }

        if(canGrow)
            this.treeMatrix[0][coord] = new branch(food*10, 2);
    };

    this.getTreeString = function(){
        return this.treeMatrix.reduceRight(function(prev, next){
                return (
                typeof prev == "string"
                    ? prev
                    : prev.map(function(el){ return el.char}).join('')
                ) + "\n" + next.map(function(el){ return el.char}).join('');
                 })
    };

    this.getTreeHtml = function(){
        return "<pre>" + this.treeMatrix.reduceRight(function(prev, next){
                return (
                typeof prev == "string"
                    ? prev
                    : prev.map(function(el){ return el.getHtml()}).join('')
                ) + "<br/>" + next.map(function(el){ return el.getHtml()}).join('');
                 }) + "</pre>";
    };
};


var seasonsTotal = 300;
var seasonsCounter = 0;
var showAt = [1,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,300];
var pageTree = new tree();

var season = function(){
    pageTree.calculateNewMatrix();
    seasonsCounter++;
    if(showAt.indexOf(seasonsCounter) >= 0){console.log(pageTree.getTreeString()); document.body.innerHTML = pageTree.getTreeHtml();}
};

window.onload = function(){
        var intervalId = setInterval(function(){
                season();
                if(seasonsCounter >= seasonsTotal)
                    clearInterval(intervalId);
                }, 100);
};

Bazı örnekler (10,40,100):

           \/          
        \ |/\_/_       
      |  \/\/|/0/_ _   
      |/  \/0||/|_//   
     / \0_/0/\|0|_|    
     \_/00\0\/|_|      
       \_|/00\|        
         |__|/         
    ________|__________


     /           
   _ \_          
    |/\o_| /     
o_/  \/ @|/\|    
_@\o__\_/|o/     
 \|\|\/ \|/      
  |/  \_//       
   \__/_|        
______|__________



                       \ \/\                                      
                 \    |/\/\_|/ |   |  /                           
              \ \@\/ \/\/\/ |/  \_/ \||_                          
          _  _\\/@/\/@\/\/   \_//\__/|/\_                         
           \ /\|\/|/|_o\/  __/o|\/_|_/\/__|                       
          |@|\_|/_o\|/\|\__o/\\|/\_|\|//|/\__|                    
       |_||/|_@|\/|\|_/|/|| \/ |\//\/o\\\\_@\|| |_|               
       |/|/\|_||/\o\|/_/\/\_/\o|/ \/|_//// \/ \\|                 
     __@\|\||/\|@/|/o\/\/\/_@_\|\_/\_/|/ \_/__//                  
     __\/|/_@\O|o\|@|@\/\/\_|o/|/|\|\/|_//_||_/                   
  \ \ \|\|_/\|\|//|/\|_\/\//_@\/\|/|/\||//|\|o                    
 / |/ _|_|@|/|/ \\|__|_o\/o\\|o\||\|\/O|/O|/o_|_|                 
 \_/\|___|_|  \_/_|\/ \\/@|\\|\/||/|/\_|__|@|\|___/ /             
|_||/|_@_\@\o_/o|o|/@_/\\/_//o \|/\|\/@|_o__|_|__/|/              
  |@\| /|/\_\|\|/\||_/\_|\@|\\_/|\/@/|/|__/O|_/_/_|/              
   \||@\|_@_\|/|\@|//o\||//o\||\|/\/||||o___|/ @|_|  _            
    |o\/ \|@@|/ /\O\\/\|o\\|/o|/ \/|/\/\/|\@/\_/|/\_/             
     \|\o/ \/ \ \/o_|\/|\//|\/o\_/_|O/\//o_|\/@//\/               
      \\|\_@\_/_o\_/|o\|/|_|_\|/O|/|/\|||__|/o \\/                
       \|/_|@\\/\\_\|/\|\|@\|\|\_|\|O//O/o_/ \_//                 
        |_@|_/@\/_/\|@_|//o/_/o//@\|/|\//||____|                  
 o_______\\/\\|@\/\/__@\\\/|_o/|__|\\|/|/O|                       
         \|\/ |_o\/\o|_////_/|\|_|@/@|_|\/                        
          |_\_o\\/\/\o\|/|/ O|/ O|/\/\|\/                         
            \||/@\/\O\_|\|@_/ \_/|O/@_|/                          
             |_\|_\O|/o|/ oo\_/@/  \__|                           
               \|_\|\\_|\_/_|/\|___/                              
                |/\| \||/ |_|\/|/                                 
                 \ |_/@ \/ o|/\|                                  
                  |_o\\_@\_/|@/                                   
                    \|\|\/ \|/                                    
                     |/  \_//                                     
                      \__/_|                                      
______|__________________|________________________________________



                                                     |                                                                                                            
                                                  \  /\_       \/   |      _    \                                                                                 
                                                 |/ |\/_/\  |_\/\|_/\  _\ /  \  |\/\  |                                                                           
                                              / /_\_|/|__/\/|_|\/_/\/\_|\|\ \ \\|/_/|/\ \    _                                                                    
                                            _|_//|/ |/__|\/\@\\/|/o/|//\/_/_/@/@|\|\@\/\/_ \/ __                                                                  
                                   \      \|\|o\\|\o/\/O /\|\/|\O\|_|/_///|@\|\\|/|/@|\/\_|@\|/\\|                                                                
                                _ \/\_o_\_/|/ \\\|/|\/ \O\/_@\/\|/|/|_/\\\|_/ \\|\|o_|_\|\|\/|\/\|_|\  /                                                          
                              \o_\|\|\_|||\/\_/o\|o|/\_/__\/\/\/\\|o_@\///  \o/o|/|__|\o|/||||/\/|O|/|@\/                                                         
                              \|@/|/@\|\/\/o/@\|\|_o\/_/||/\/\o\/O|/|@_\\\__/ \/|\__/|//|\/\|/\/o||@\/\/__|                                                       
                               |O\O\|\|/o//o\//|//\|/|o/|O\|\|\|\_|@|/ \\|||\_/\|///O|// @\/O\/|/\\\/\\\/\__|                                                     
                                \||/@/|\/\\/|\\o\\ |/|/\|@\|O|/|/ |_|__//_||O\|o|//o_|\\_//\_|\|\/_||//|\/@\|\                                                    
                         |   \__@|/\/\|/_/|\|_\|/\\/\/\/| \|_@\/\_|o|/\|_o||o/\\|/@/_o//\@\/\|/|/\o\|\\|/ \/|/                                                    
                      o_\|/   \|||\/\||_/\|/|@\|\/\\/\/\|_/|o_|\/o/\o\/|_|/\o\/ \\/|_|/\/_@\/| |__|/|//O\_///\o_                                                  
                        \|\|o_/@|\\\||/\|\|o|_@|/o/O\/\_|_/_o_|O\|_/\@\||/  |/\ /|\_/|O/o/|/\|o|/|/\| \|/@/|_/|_|\ _                                              
                  / /\__/|/o__\_|_|\|/\/\/|/|/|_\|\/ \/\|/\@|__o||\|/o_|/\__/\/ \|/@/||o/| \/|_@\|_/___|O|_|@/|_@/|//                                             
                  \/\o_/\| o__|\|@|/\\o\/\|\|_@/\|/_o/o/o\/\\/\\||/|\__|\/|/_/__/ \/\|@\\|\/ @/\/ \|o_/\_|\/o\|  \|/\\                                            
                o_/\/|@\/  _/o|\|\/\/O\/\//\| \\/o\\|\/o_|\/@\o\||\|/O\|\\o\_|@|\_/\_|_/||/@_/_/\_/_/__/@@/|\/\__/|o//                                            
                  \o\|_@\___|/\\|_\/\o|\//\/o_/@\|/@|/  \|/o\|\/\@\|\o\|//@/@|/\/o\/o/OO|/\_/\o\//|o/|/|_/\|/O__o\|/ \__\                                         
             \     |\|__/  \/\/\|_||/\|/|\/   \|/|o_|\__/O\\_|/_/o/|/\/ \\|\\/\/o\/\/\\_|\/ \/_|\\| \|_| \/|//  \/|_o/\__\__                                      
          |   |/ o_o\| o\\_/|@\/ o|/\_|\|@\_o_/|\|/@\/\\_@|\\|/o_/||_/\o//|_|\/__|\/\/ /|/O_/\/\//__/|___/_|@\_o/O|o/@/ \/|_                                      
         \|/o_@\_/|\||_//@_\|_/@__|\/o|/_/\||/| \|_/_\//@\|//o\_o\||/\//\\|_ //_|o/\/\o\|_o\\|\/// @_|\_||@_|/@|\/_/\/\_/_| /                                     
          |\_/|/_|\\|@ \\|o\|o\_o_|@\\|/O_//\\|_o|/\_||_|/| \\/o\/|O\/\\//_/|o\O\/\/|/|/@||//|//@\__/\|__|/\/ \|/|_|/__/||\|                                      
        /_/\|\/\||/ |__@\|/o|_/_|_|\@\|\/  \/ |/_|\/_||o|/|_//\_|\|_|\/O\\/\|o/o/@|\|_|_/o_\\o\\|/_@__|_||\|\_/ \|@|\@|//\\||                                     
        \|\@|/\/\_\_o\|o|\\\|_|o|/\O\_|/\o_/| |_/|/ o\|_|\|o/\/_o/o|\/o_\|\/ |_/\_|/|_||\_O\||/\|\_|@_|__o\|/_@_/__|/\|/\// |//                                   
      o_\|@\|_@\//|\_/_|\\|\|\_@\\/_//\\|\|\|_@_\|\o/o|\|o|/\/O\|/@|O\_/\|/\_@\|/_|\|O||/@_/@/\/o//o__||O\/@\|\/\_||\/o\/ \_|/  _                                 
       _\|_/|\|/\\ \|\O|/o\\|\||/o\/|oo\|/|@|_|_/o/ \\|/|_|\/|/O|\||\@\|/ \/||/|/o\/o_| \o_\|_/O|/@/_@/|_/_|_|/\/o\|/|_/\\/@|\_|                                  
     o__|\o\|_|\@||/|@|/\|/@|/o|\_|\_\|/|/ \@\|/\/\o|\|\|/|/\|\/|_| \\|\\_/\||_|_|/\@\\_//@_\|\||_/|_|O/\|O|\/|/  \|   \_||_|/\                                   
        |/_||o|_||\\|_|\/|\|o\/_/ |/ \|_|__/_//\o\/_|\|/|@ \/_/\||__/ |/_|\/|/\|o|_||//@/\_o\|/@|/@|/@/\/_/_o\|__o/o___/|_|_|o_|                                  
    _ \oo\/\/\|o||\||/|@\|/_/ \o\_@\_/|/|/\|/|\@\|\_|\|/|_o/\_|_|| \__|\||o\|\/_/|_/|/_/_/_@_|@/|\/|_/\//@/o\/ \\/\/ o__|_| @/__o                                 
    /\/@|\\/oo|/@|_|\\|\\|\\\_/\|\|/\\o\\\/o\|/\/|///\|\/\|o/\/  |_@_\\/|O\/|/|///|\|@_|\\@|/\/_|/\|o_//o/\|\\_//\/\_/O|/o__/\_|                                  
    \/\_|/o\/\\\/|O\/||_||//@_\_|/o\/@|/@\\//\\/|o\\\/@_\/_/\|\_/|_|_//\|\/\|\|\\\|/||\_//o|\//|O\/O|\||O\/_//O|o/\/O|_|o_|@\/                                    
     \O_|\_|\/\|\|_o\|_/|@\\|__|\\|/\/_\|/|\\o|\|\/@|\__|\/\/ \|\|o|//\/o \O\\|//_|\||/o_\/|/\\|//\_|_||_/\_|\||O\/\_|@/|_|_/                                     
      |_|/_|@\_|_||_O||\|\\||@||/@|\/_|\|\|_|\|/|o\/|/o/|/|/O/o|/ \||\/\\_/_//|/@|\/O|o__|\o\//| \/|/__|o_/\_//@|/ /@@|\__|                                       
     o  |\_|_|_|O|/o/|o\|/ \\\|\\/|/_/\||o|o\\\\o\/\|_/\O\\\/ o|\_//O/\/|\|@|_o\_|/\_|/\\_/\/\\|_/O||/\_||@/_@\/|o|/\_||\/                                        
      |_@\||o|_/\|\/\|\/ \_||\|\|\\\O\o||/o\/ \|\|\//@_/O_\|\_/|/o|_o\ \|/|_|o//_o\/_@\_|||/O//|/|\||_/ \|// |/O|//|/|/|/                                         
       o\_|/\\@\/| \/|@\__|\o\|_|/ ||/o|o\/\\_o|/\@\\_/\_o\|/ \|/_| \|\//\|/|/o\_|/|@|o|\|o\|/\|/|/o|/\_/|\\_|/O|@\|\/\|                                          
       o|o|o@\|o\|oo\|\/ \\/|_|_|\_@\\/__|\/_|\|_/_/|\_//\\|\_/\\/|_/  \\/|\|/\/o/\|_|o|/|_//\//O|//o\/|/@o|\|_/o \|/ /                                           
 \_____/\|/\|O|/o\\\||/\_o|\|||/|@\|\|\/\_/o\|//@\|\|/\|o/o|/__//\|@o__//o|\|O/\//_|o|_@\|/|_//\_| \\ \||O/|_|  \_/|\/                                            
 o\|\_||_|__|_o\/o\||o\\||O\|/\\|\O|/\/ / \|/ \\_\|O|_/@|\|\\_\/\/_\_o|\\/\/@_\/\\/|o|/// \|@/\/o\| \|/o|_\| @__/@_|/oo                                           
 /||@\\ _|\@|/  \_||_\/|||o/@\/_|/\ \ \|_o/|\o_|\||_|o__| |/@_\\/__||_/\\\|\__|\//\|_|/\\_/@|_/\/||/\||_|_/__/  \__|o/                                            
 \/\\/ |@|_| \ _/@_| \\|/\/\_|\\\\/\_|O|_/\|/_@|/o__|//__/|/|_//|_|_| \o\||/o/|/@\\|/|_///@/|/\/_||_//_||@|_@___/@__|                                             
  \_|\_/\oo|_/_@\_@\_@\|@/ /o\/@\|\_ \\||_/|o|\@\_/|/ \|\_|_@_\\/\|@__/\/_o\|/|O//_|\|@/||/|@\/\/|/\||@/@/|__|_@//|/                                              
    |__\|\|_o\/\/_|\|\O|/\o\_|\|_|_/| \|o|\|o|/\_o\|\__|/o/_|_o\\/_/|\| \ |//o|/ \|\/|//\|@\\|\/_|\/_|/\/\|/o@/|/_|                                               
       \|_||/ \/\_|_|/o|\/|/ \\|o|_||_/o/  |/ \/ |_|//o|\/_@\/\//  \|_|_/o||/\|\_/@_\|\\_|_/_|/|o\//O///\_|/  \|/                                                 
        |_\|\_o\/O|o|_\|@\o\_o\|/|_|_@\|\@_/\_/___o|\\_| \/\o\/ \_@_|@|/ \||_/|/@__O\|//O|_||O\|_||\/ \\/o \__/|                                                  
          \|/|\|\|/\\\||\/||\|_|\_O|__/|/ |\__\@|\_o\|\\_/_/_/o_/\/\|_@\_@|/\_|__|\|@|/|_|| |_/|_@|/\_//o\_/ O/                                                   
           \\|/  |_// |/\\||O|_|o_|\\o\|\o|/__\||o\|\|/o\\||/\_/\/\_|_|\\|||/@|_o/\|/|_||/_o/\_|@\/\/_||\_@\_/                                                    
            \|o___o|_o_\//o|_/\\_||\||@|/|\\_@\|/\/@/|\/|||o\/o//\//|o_///O|\/|/o\o|/|_||__|\/|__|\/|/o|/ \/                                                      
             |\|@_\O \|\\\/_@\/_\\|_|/\o\|_|\_/@\o\/  \\| \\/\|\\/ \|/\|\\_|/_|_/_||/|O/|/o|/\|_||/\| \/\_/                                                       
              \|/  \__|_||\/\/O|\\|_|o/\/|/@\_\|/|/\_o/ |o_|\/|/ \_/o\_|/|\|__|@_/\|/O/_o\/ \o|__|\/  o\/                                                         
               |_____o|_|@\\/_o\\|\@\|\/\|\// \|\|\/_|\_/\|\/\ \_/@_|/o|/ \|____/\//\/|o_/   \|/|_/o__//                                                          
                 oooo|_/|@|\\||\||/|/|\\//|\\_o|/|/\/\/\|o|/o/o/@_|||o\|\o/ \|O/o/\\|\|_o\___/|O|oo/ \|                                                           
               o__|/\|o\|/|_||/\|/\|_@\|\\|/@\\|\|\|\/o/|_|\/\/\|\_|\\\|/ \_/  \|\/O|/|_|/|_//|/_//__/oo                                                          
                  |_//  |_|\//@/ \ |__@|O||\//@|_|/|/\/\|o|/\/\_|/||/ \|o_/Oo__/_/\/|\|/|\|/ \|@_|/ooo|                                                           
                    |_____|//@|\_/\|O|_/\||/ \/ \\\/\O\/o\/\/\/ |/ o\_/ \||_/ \| \@\|\|\|/|__/___|/|_/                                                            
                       ooo|/ \|@\\_|o_@\/_|@_/__/_\\/o/\/o\/\/o  \_//\__/|/\__/__/_o|/|_|_|__|oooo\|                                                              
                     o__|/o\__|_//@|/\\o\o\_o\|\\O\|\/|/|_|\/|___/@|\/_|_/\/__|o_@_||\|_|@/ oo\\/\/                                                               
                        |_|\\||@|\|@\/|\\|o|\\|o|\_|/_o\|/\|\__@/\\|/\_|\|//O/|__|/_|/|__|oo \/ \/                                                                
                          |/ ||_|/|_@\|/\|\|_||/|_@|\/|\|_/|/|| \/o|\//\/o\\\\_o\||o|_|oo_|__@\_/                                                                 
                           \_o\\|@|_|_|O/  |/|@\|_||/\o\|/_/\/\_/\o|/ \/|_//// \/ O\| oo\/|/@|/oo                                                                 
                             \_||@|__@| \__@\|\O|/_|@/|/o\/\/\/_@_\|\_/\_/|/o\_/__// oo|/\|\_|@|_oo                                                               
                               |/\\_\_|_@_|\/|/_@\\|o\|@|@\/\/\_|o/|/|\|\/|_//_||_/ooo\|\_|/o_/|_|                                                                
                                \@|@|\\|\|\|\|_/\|\|//|/\|_\/\//_@\/\|/|/\||//|\|@|_|//|/O|o_/\|                                                                  
                                 \|\|/ |/|@|_|@|_|/ \\|__|_o\/o\\|o\||\|\/O|/O|/@_|_| \/\/_o_\/                                                                   
                                  |_|\_/\|O__|_|  \_/_|\/ \\/@|\\|\/||/|/\_|__|@|\|___/\/|\|_/                                                                    
                                    |_||/|_@_\@\o_/o|o|/@_/\\/_//o \|/\|\/@|_o__|_|__/|/||/|/                                                                     
                                      |o\| /|/\_\|\|/\||_/\_|\@|\\_/|\/@/|/|__/O|_/_/_|// \|                                                                      
                                       \||@\|_@_\|/|\@|//o\||//o\||\|/\/||||o___|/o_|@| \_/                                                                       
                                        |o\/ \|@@|/ /\O\\/\|o\\|/o|/ \/|/\/\/|_o/\_/|/\_/                                                                         
                                         \|\o/ \/ \ \/o_|\/|\//|\/o\_/_|O/\//o_|\/@//\/                                                                           
                                          \\|\_@\_/_o\_/|o\|/|_|_\|/O|/|/\|||__|/o \\/                                                                            
                                           \|/_|@\\/\\_\|/\|\|@\|\|\_|\|O//O/o_/ \_//                                                                             
                                            |_@|_/@\/_/\|@_|//o/_/o//@\|/|\//||____|                                                                              
                                    o________\\/\\|@\/\/__@\\\/|_o/|__|\\|/|/O|                                                                                   
                                             \|\/ |_o\/\o|_////_/|\|_|@/@|_|\/                                                                                    
                                              |_\_o\\/\/\o\|/|/ O|/ O|/\/\|\/                                                                                     
                                                \||/@\/\O\_|\|@_/ \_/|O/@_|/                                                                                      
                                                 |_\|_\O|/o|/ oo\_/@/  \__|                                                                                       
                                                   \|_\|\\_|\_/_|/\|___/                                                                                          
                                                    |/\| \||/ |_|\/|/                                                                                             
                                                     \ |_/@ \/ o|/\|                                                                                              
               oooooooo  ooo           oo             |_o\\_@\_/|@/                                                                                               
              oo|_o\|/oo__|_oo        o_\_o_oo          \|\|\/ \|/                                                                                                
               |/\|/|  \/\|/|_o         |\|_/            |/  \_//                                                                                                 
                \_|/    \_|_|            \|/              \__/_|                                                                                                  
__________________|_______|_______________|__________________|____________________________________________________________________________________________________
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.