Narysowanie "choinki nocą" za pomocą pętli

0

Cześć,
W szkole dostałem zadanie polegające na wypisaniu "choinki nocą" o zadanej wysokości. Dla wysokości 6 ma to wyglądać mniej więcej tak:
screenshot-20191114014240.png

Ja próbowałem to zrobić tak:

var wysokosc = parseInt(prompt("Podaj wysokosc choinki"));

var choinka = []; //deklarowanie tablicy

for(var i = 0; i < wysokosc; i++) //tworzenie tablicy 2 ele
    {
        choinka[i] = [];
    }

for(var x = 0; x < wysokosc; x++) //wypelnienie tablicy *
    {
        for (var y = 0; y < wysokosc; y++)
            {
                choinka[x][y] = '*';
            }
    }


var c = Math.floor(wysokosc/2); //srodek choinki, zaokraglenie zeby dzialalo dla nieparzystych

for(var f = 0; f < wysokosc; f++) //usunienie nadmiarowych *
    {
        for (var g = 1; g < wysokosc - 1; g++) //gora i dol w gwiazdkach
            {
                        choinka[g][c] = ' ';
            }
    }


var z = 1;

for (var m = 0; m < wysokosc; m++) //rysowanie choinki
    {
        for (var n = 0; n < wysokosc; n++)
            {
                document.write(choinka[m][n]);
                if(z==wysokosc)
                    {
                        document.write("<br />");
                        z=0;
                    }
                z++;
            }
    }

W tym momencie gwiazdki usuwane są tylko w środkowej kolumnie, nie jestem pewien jak uzyskać efekt "rozchodzenia" na boki. Próbowałem kolejnymi pętlami zmniejszającymi i zwiększającymi zmienną "c", ale robi się tylko gorzej.

Macie pomysł co powinienem zmienić w kodzie, albo co mogłoby mi się przydać żeby zrobić zadanie?

2

Nie potrzebujesz do tego żadnych tablic. Wystarczy zmienna przechowująca szerokość choinki na danym piętrze, zwiększana w każdym kolejnym cyklu.

A jak już koniecznie chcesz to robić w wykorzystaniem tablic, to możesz sobie zaimplementować automat komórkowy z regułą 222:
http://mathworld.wolfram.com/Rule222.html
błyśniesz przed nauczycielem a prostą zmianą parametrów wygenerujesz masę innych wzorków do zaimponowania dziewczynom ;)
https://en.wikipedia.org/wiki/Elementary_cellular_automaton

0

Zrobiłbym główną pętle i w niej trzy dodatkowe jedna by dodawała gwiazdki z lewej strony, druga puste pola, trzecia gwiazdki z prawej strony. Co przejście głównej lewa pętla zmniejszalaby o 1 ilość gwiazdek, środkowa zwiększa o 2 puste pola, i prawa zmniejsza o jedna gwiazdkę.

0

Ale fajnie że macie programowanie w szkole, u nas kazali nam katować excela chociaż byłem w mat-infie .. :(

1 użytkowników online, w tym zalogowanych: 0, gości: 1