Tempo fa vi ho parlato di FizzBuzz, un quiz spesso posto ai programmatori alle prime armi.

Una variante è la seguente:

Sommare tutti i numeri da 1 a 200 che non sono multipli di 4 e di 7

La parte divertente sta nella differenza di espressività tra Java e Ruby per ottenere lo stesso risultato. In Java, infatti:

public class FizzBuzzReloaded {
    public static void main(String[] args) {
        int sum = 0;

        for (int i = 1; i <= 200; i++) {
            if (i % 4 != 0 && i % 7 != 0) {
                             sum += i;
            }
        }
        System.out.println(sum);
    }
}

In Ruby, invece, grazie alla funzionalità del linguaggio, possiamo semplicemente scrivere:

(1..200).select {|n| n % 4 != 0 and n % 7 != 0}.inject(:+)