Пето предизвикателство

  1. Как да се разбира следният ред от условието:

    Резултатът от извикването на метода трябва да е енумератор, а ако е подаден блок - да yield-ва стойностите.

    При подаден блок се yield-ват отделните анаграми или цялата поредица от тях? Иначе казано, какво се очаква да изведе

    "world".anagrams(["wlord", "wlodr"]) { |anagram| puts anagram }
    
  2. @Александър, @Георги - благодаря за разяснението. @Дамян - според мен твоят пример би трябвало да върне ["arRest", "Arrest"] , защото и двете са анаграми на Starer. Няма изискване изходните думи да са анаграми помежду си.

  3. @Мартина, думите, които получаваме в резултат на извикване на String#anagrams са анаграми по между си, тъй като това свойство е транзитивно.

    Ако X.anagrams([A, B, C, D]).to_a дава като резултат [A, C], то A е анаграма на C и обратното.

  4. @Станислав - обърках се.

    • Никоя дума не е анаграма на себе си, независимо от малки/големи букви.

    • Резултатът от "Starer".anagrams(["cashregister", "arRest", "stance", "Arrest"]).to_a e ["arRest", "Arrest"].

    • Ако X.anagrams([A, B, C, D]).to_a дава като резултат [A, C], то A е анаграма на C и обратното.

    Как "arRest" и "Arrest" са анагарами помежду си, при положение, че имаме първото условие? Пак ли нещо пропускам?

  5. Свойството не е транзитивно. ab -> ba и ba -> ab, но ab -/> ab... (ако мислим -> като "е анаграма на").

    Доколкото разбирам @Мартина е права, че няма изискване изходните думи да са анаграми помежду си, а @Станислав просто имаше предвид, че (от неговия пример) А също е анаграма на С, стига да не са една и съща дума. :)

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