Шеста задача

  1. Здравейте!

    Шеста задача е публикувана. По-лесна е от пета. :)

    Имате време до 2. декември, сряда, в 17:30 ч.

    Напомняме, че тази сряда, 25. ноември, няма да има лекция, защото е официален неучебен ден за СУ.

    Също, не забравяйте, че на втори декември ще е първият тест. Разпределете си времето добре.

    Ако имате въпроси по условието на задачата - пишете тук.

  2. Здравейте,

    Какви са default-ните стойности на #spawn_at и #direction - така като гледам от първия пример с матрицата те не присъстват там, но ние все пак сме ги изпълнили със стойности spawn_at(0, 0) и direction(:right). Също така #spawn_at ни дава още една точка към стъпките на костенурката нали така?

    • Първо spawn_at няма default-нати стойности. Когато искаш да го извикаш винаги приема координати.

    • Костенурката стартира от (0,0) с ориентация :right.

    • Стартовата ѝ позиция се променя само ако в началото е извикан spawn_at, тогава стартовата ѝ позиция се променя на координатите подадени на spawn_at.

    • Може да гледате на spawn_at като на инициализатор на стартовата позиция. Вика се само в началото. Извикването не се отразява на стъпките или ако имате spawn_at(3,0) и после движенията не се очаква (0,0) от матрицата да има стойност 1 само 3,0.

    • За улеснение не гледайте движение в което има само едно извикване на spawn_at - няма да има такъв тест.

  3. @Станимира, Броят се всички позиции, на които е била костенурката, включително и тази. Преди да я spawn-неш, може да си представиш, че не е никъде в полето. Ако бъде изпълнен move без да има spawn_at, все едно я spawn-ваш имплицитно на 0, 0.

  4. Здравейте, за имплеметацията на ASCII canvas-a, винаги ли ще имаме поне два елемента(символи) при инициализацията му? Първия за нулевия интензитет и поне 1 за всички останали интензитети?

  5. Според условието резултатът от TurtleGraphics::Turtle#draw при подаден аргумент инстанция на TurtleGraphics::Canvas::ASCII е низ. Само за да уточним, в този низ редовете са разделени със символи за нов ред ("/n") comment fix: ("\n"), нали? И, ако е така, след последния ред имаме ли символ за нов ред?

  6. Ще игнорираме празните места и новите редове в тестовете на HTML-а. Направи ги както ти е удобно :)

    Между другото забележи наклонената черта коя е в "\n" :) Ако използваш другата няма да стане нов ред, а двата конкретни символа.

  7. Като създаваме матрицата кой аргумент е пръв - rows или columns? Казано е "масив от масиви (редове)" и предполагам, че първото число отговаря на columns. В spawn_at(row, column) обаче първо задаваме реда и се зачудих.

  8. Матрицата е масив от редове. Например:

    canvas = [
      [1, 2, 3],
      [4, 5, 6],
      [7, 8, 9]
    ]
    

    Така първият индекс, с който достъпваш елементите е редът, а вторият - колоната. Например canvas[0][1] ти дава първи ред, втора колона.

    Ако питаш за конструктора на TurtleGraphics::Turtle - аргументите са в реда, в който са споменати в условието - първо брой редове и после брой колони.

  9. Привет, имам нужда от малко помощ.

    Боря се със следното

    canvas = TurtleGraphics::Turtle.new(3, 3).draw do
      move
      turn_right
      move
      turn_left
      move
    end
    

    Не мога да разгадая как да обработя конкретния Proc обект в draw метода ми. Прегледах лекциите за метапрограмиране, но не открих къде е показана подобна конструкция.

    Извикването на arity връща 0, а при опит да yield-на установявам, че няма move за Object (тук предполагам е уловката)

  10. @Добромир, в тестовете си използваш @turtle.spawn_at, което не е задължително да е същото като

    @turtle.draw do
      spawn_at ...
      ...
    end
    

    Първо, че може да не са дефинирани директно на инстанцията, а на друг обект и второ, че може да се прави нещо преди и/или след изпълнението на draw. :)

  11. Искам да попитам относно частта от задачата с излизането извън матрицата:

    Ако костенурката излезе извън матрицата, трябва да бъде "прехвърлена" в началото на съответния ред или колона. Например ако е в края на ред, ориентирана на изток и бъде изпълнена командата move, новата позиция на костенурката трябва да е в началото на същия ред, със същата ориентация.

    Началото на реда абсолютно ли е или се има предвид началото спрямо текущата посока? Какво имам предвид: в тестовете на @Добромир, ако изляза отляво се появявам отдясно и ако изляза отдясно се появявам отляво. Другата възможност обаче е винаги да се връщам в началото на реда без значение посоката на движение тоест без значение дали съм излязъл отляво или отдясно все си се появявам отляво. Първото изглежда по-интуитивно до някаква степен, но не ми става напълно ясно от условието - може ли да уточните? :)

  12. Не разбирам при ХТМЛ канваса как се калкулира opacity-то. Максималния интезитет, който получавам за драконовия фрактал е 0.00046490004649000463, което мапвам на 1. 0 си е 0, какво правим с междинните стойности - сивото в снимакта на @Георги.

  13. Интензитет е отношението на стойността в текущата клетка, към максималната стойност в която и да е клетка. Няма как максималният интензитет да е различен от 1. Някъде имаш грешка в логиката.

Трябва да сте влезли в системата, за да може да отговаряте на теми.