FizzBuzz reloaded: le differenze tra Java e Ruby

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(:+)

2 thoughts on “FizzBuzz reloaded: le differenze tra Java e Ruby”

  1. Volevo solo mettere a confronto Java e i linguaggi che possono utilizzare anche un paradigma funzionale. Dalla prospettiva Java si può fare la stessa cosa, funzionalmente parlando, a patto di usare Scala o Java 8 (se includeranno le lambda).

  2. Ti piace vincere facile… un qualunque linguaggio che supporti le higher order function (map, filter) rende molto semplici questo genere di programmi.

Leave a Reply