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

Comments

2 responses to “FizzBuzz reloaded: le differenze tra Java e Ruby”

  1. Michele Bologna Avatar

    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. Danilo Piazzalunga Avatar
    Danilo Piazzalunga

    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