Четвърта задача

  1. @Евгений

    До колкото разбирам, идеята е да има разделение между логиката и представянето. Т.е. screen е обект представляващ логическата (абстрактна) структура на UI-а, който може да представи по различни начини.

    Например to_s рендерира UI-а като ASCII art, но също така е възможно да има to_html или пък to_svg.

    P.S. Това не го пише в условието, а е моя спекулация :smile:

  2. Здравейте, дали е възможно да добавите думата "delegator" към допустимите английски думи? Знам, че пиша в последния момент, но чак сега видях, че не ми приема решението, което използва вградения "SimpleDelegator" и мисля, че е доста елегантно.

    Иначе това ще ми е за урок да си инсталирам aspell, че преди имах проблеми и се отказах :)

  3. @Станислав, според мен счупи поне два примера от описанието на задачата.

    В примера от задачата, който посочи @Евгений, е написано „Резултатът от screen.to_s e 123“.

    Освен това, в примера:

    
    screen = UI::TextScreen.draw do 
      vertical do
        horizontal do
          label text: '1'
          label text: '2'
          label text: '3'
        end
        horizontal do
          label text: '4'
          label text: '5'
          label text: '6'
        end
        horizontal do
          label text: '7'
          label text: '8'
          label text: '9'
        end
      end
    end
    

    примерния резултат е
    123
    456
    789 ,
    a от обяснението разбирам, че след всеки ред трябва да има "\n".

  4. @Атанас, done.

    @Герасим, примерът, който си извадил показва какво ще бъде принтирано на конзолата, а не какъв е резултатът под формата на String. Подразбирам, че е очевидно къде са новите редове. Kакто отбелязах няколко поста назад, всеки резултат от TextScreen.draw завършва с \n. Има ли нужда да дискутираме това повече? :)

  5. @Авторите на задачата Бихте ли качили ваше решение, което минава всички тестове, за да видим примерна работеща имплементация и да си изясним нещата, които са ни затруднявали?

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