home > 基礎編 >

ForNext

Shut the fuck up and write some code

FizzBuzz

VBScript

更新日 : 2008.05.23
■ lesson001.vbs

1から10までの数字を出力

Dim i
For i = 1 To 10
    WScript.Echo i
Next
C:\>cscript s:\lesson001.vbs //nologo
1
2
3
4
5
6
7
8
9
10
■ lesson002.vbs

3の倍数は、"Fizz" を出力

Dim i
For i = 1 To 10
    If i mod 3 = 0 Then
        WScript.Echo "Fizz"
    Else
        WScript.Echo i
    End If
Next
C:\>cscript s:\lesson002.vbs //nologo
1
2
Fizz
4
5
Fizz
7
8
Fizz
10
■ lesson003.vbs

3の倍数は、"Fizz" を、5の倍数は、"Buzz" を、 公倍数は、"FizzBuzz" を出力

Dim i
For i = 1 To 30
    If i mod 15 = 0 Then
        WScript.Echo "FizzBuzz"

    ElseIf i mod 3 = 0 Then
        WScript.Echo "Fizz"

    ElseIf i mod 5 = 0 Then
        WScript.Echo "Buzz"

    Else
        WScript.Echo i
    End If
Next
C:\>cscript s:\lesson003.vbs //nologo
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz
■ lesson004.vbs

3の倍数は、"Fizz" を、5の倍数は、"Buzz" を、 公倍数は、"FizzBuzz" を出力
(配列と関数を使用)

Dim array(29)
Dim i
For i = 0 To 29
    array(i) = i + 1
Next

For i = 0 To 29
    WScript.Echo FizzBuzz(array(i))
Next

Function FizzBuzz(i)
    If i mod 15 = 0 Then
        FizzBuzz = "FizzBuzz"

    ElseIf i mod 3 = 0 Then
        FizzBuzz = "Fizz"

    ElseIf i mod 5 = 0 Then
        FizzBuzz = "Buzz"

    Else
        FizzBuzz = i
    End If
End Function
C:\>cscript s:\lesson004.vbs //nologo
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz

JScript

更新日 : 2008.05.23
■ lesson001.js

1から10までの数字を出力

for (var i = 1; i <= 10; i++)
    WScript.Echo(i);
C:\>cscript s:\lesson001.js //nologo
1
2
3
4
5
6
7
8
9
10
■ lesson002.js

3の倍数は、"Fizz" を出力

for (var i = 1; i <= 10; i++)
{
    if (i % 3 == 0)
        WScript.Echo("Fizz");
    else
        WScript.Echo(i);
}
C:\>cscript s:\lesson002.js //nologo
1
2
Fizz
4
5
Fizz
7
8
Fizz
10
■ lesson003.js

3の倍数は、"Fizz" を、5の倍数は、"Buzz" を、 公倍数は、"FizzBuzz" を出力

for (var i = 1; i <= 30; i++)
{
    if (i % 15 == 0)
        WScript.Echo("FizzBuzz");

    else if (i % 3 == 0)
        WScript.Echo("Fizz");

    else if (i % 5 == 0)
        WScript.Echo("Buzz");

    else
        WScript.Echo(i);
}
C:\>cscript s:\lesson003.js //nologo
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz
■ lesson004.js

3の倍数は、"Fizz" を、5の倍数は、"Buzz" を、 公倍数は、"FizzBuzz" を出力
(配列と関数を使用)

var array = new Array();
for (var i = 1; i <= 30; i++)
{
    array[i - 1] = i;
}

for (var i = 0; i < array.length; i++)
{
    WScript.Echo(FizzBuzz(array[i]));
}

function FizzBuzz(i)
{
    if (i % 15 == 0)
        return "FizzBuzz";

    else if (i % 3 == 0)
        return "Fizz";

    else if (i % 5 == 0)
        return "Buzz";

    else
        return i;
}
C:\>cscript s:\lesson004.js //nologo
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz
■ lesson005.js

3の倍数は、"Fizz" を、5の倍数は、"Buzz" を、 公倍数は、"FizzBuzz" を出力
(map を自作)

var array = new Array();
for (var i = 1; i <= 30; i++)
{
    array[i - 1] = i;
}

map(function (item) { WScript.Echo(FizzBuzz(item)); }, array);

function FizzBuzz(i)
{
    if (i % 15 == 0)
        return "FizzBuzz";

    else if (i % 3 == 0)
        return "Fizz";

    else if (i % 5 == 0)
        return "Buzz";

    else
        return i;
}

function map(func, array)
{
    for (var i = 0; i < array.length; i++)
    {
        func(array[i]);
    }
}
C:\>cscript s:\lesson005.js //nologo
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz
■ lesson006.js

3の倍数は、"Fizz" を、5の倍数は、"Buzz" を、 公倍数は、"FizzBuzz" を出力
(map を自作 (prototype))

var array = new Array();
for (var i = 1; i <= 30; i++)
{
    array[i - 1] = i;
}

Array.prototype.map = function(func)
{
    for (var i = 0; i < this.length; i++)
    {
        func(this[i]);
    }
}

array.map(function (item) { WScript.Echo(FizzBuzz(item)); });

function FizzBuzz(i)
{
    if (i % 15 == 0)
        return "FizzBuzz";

    else if (i % 3 == 0)
        return "Fizz";

    else if (i % 5 == 0)
        return "Buzz";

    else
        return i;
}
C:\>cscript s:\lesson006.js //nologo
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz

Perl

更新日 : 2008.05.23
■ lesson001.pl

1から10までの数字を出力

for ($i = 1; $i <= 10; $i++)
{
    print "$i\n";
}
C:\>perl s:\lesson001.pl
1
2
3
4
5
6
7
8
9
10
■ lesson002.pl

3の倍数は、"Fizz" を出力

foreach $i (1..10)
{
    if ($i % 3 == 0)
    {
        print "Fizz\n";
    }
    else
    {
        print "$i\n";
    }
}
C:\>perl s:\lesson002.pl
1
2
Fizz
4
5
Fizz
7
8
Fizz
10
■ lesson003.pl

3の倍数は、"Fizz" を、5の倍数は、"Buzz" を、 公倍数は、"FizzBuzz" を出力

for (1..30)
{
    if ($_ % 15 == 0)
    {
        print "FizzBuzz\n";
    }
    elsif ($_ % 3 == 0)
    {
        print "Fizz\n";
    }
    elsif ($_ % 5 == 0)
    {
        print "Buzz\n";
    }
    else
    {
        print "$_\n";
    }
}
C:\>perl s:\lesson003.pl
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz
■ lesson004.pl

3の倍数は、"Fizz" を、5の倍数は、"Buzz" を、 公倍数は、"FizzBuzz" を出力
(配列と関数を使用)

for (1..30)
{
    $array[$_ - 1] = $_;
}

foreach $i (@array)
{
    print FizzBuzz($i), "\n";
}

sub FizzBuzz
{
    my($i) = @_;

    if ($i % 15 == 0)
    {
        return "FizzBuzz";
    }
    elsif ($i % 3 == 0)
    {
        return "Fizz";
    }
    elsif ($i % 5 == 0)
    {
        return "Buzz";
    }
    else
    {
        return $i;
    }
}
C:\>perl s:\lesson004.pl
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz
■ lesson005.pl

3の倍数は、"Fizz" を、5の倍数は、"Buzz" を、 公倍数は、"FizzBuzz" を出力
(map を使用)

for (1..30)
{
    $array[$_ - 1] = $_;
}

map {print FizzBuzz($_), "\n" } @array;

sub FizzBuzz
{
    my($i) = @_;

    if ($i % 15 == 0)
    {
        return "FizzBuzz";
    }
    elsif ($i % 3 == 0)
    {
        return "Fizz";
    }
    elsif ($i % 5 == 0)
    {
        return "Buzz";
    }
    else
    {
        return $i;
    }
}
C:\>perl s:\lesson005.pl
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz

PHP

更新日 : 2008.05.23
■ lesson001.php

1から10までの数字を出力

<?php
    for ($i = 1; $i <= 10; $i++)
        echo  "$i\n";
?>
C:\>php s:\lesson001.php
1
2
3
4
5
6
7
8
9
10
■ lesson002.php

3の倍数は、"Fizz" を出力

<?php
    for ($i = 1; $i <= 10; $i++)
    {
        if ($i % 3 == 0)
            echo  "Fizz\n";
        else
            echo  "$i\n";
    }
?>
C:\>php s:\lesson002.php
1
2
Fizz
4
5
Fizz
7
8
Fizz
10
■ lesson003.php

3の倍数は、"Fizz" を、5の倍数は、"Buzz" を、 公倍数は、"FizzBuzz" を出力

<?php
    for ($i = 1; $i <= 30; $i++)
    {
        if ($i % 15 == 0)
            echo  "FizzBuzz\n";

        else if ($i % 3 == 0)
            echo  "Fizz\n";

        else if ($i % 5 == 0)
            echo  "Buzz\n";

        else
            echo  "$i\n";
    }
?>
C:\>php s:\lesson003.php
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz
■ lesson004.php

3の倍数は、"Fizz" を、5の倍数は、"Buzz" を、 公倍数は、"FizzBuzz" を出力
配列と関数を使用

<?php
    for ($i = 1; $i <= 30; $i++)
    {
        $array[$i-1] = $i;
    }

    foreach ($array as $i)
    {
        echo FizzBuzz($i), "\n";
    }

    function FizzBuzz($i)
    {
        if ($i % 15 == 0)
            return  "FizzBuzz";

        else if ($i % 3 == 0)
            return  "Fizz";

        else if ($i % 5 == 0)
            return  "Buzz";

        else
            return  "$i";
    }
?>
C:\>php s:\lesson004.php
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz
■ lesson005.php

3の倍数は、"Fizz" を、5の倍数は、"Buzz" を、 公倍数は、"FizzBuzz" を出力
(map (array_walk) を使用)

<?php
    for ($i = 1; $i <= 30; $i++)
    {
        $array[$i-1] = $i;
    }

    array_walk($array, "FizzBuzz");
    array_walk($array, "puts");

    function FizzBuzz(&$i)
    {
        if ($i % 15 == 0)
            $i = "FizzBuzz";

        else if ($i % 3 == 0)
            $i = "Fizz";

        else if ($i % 5 == 0)
            $i = "Buzz";

        else
            $i = "$i";
    }

    function puts($i)
    {
        echo $i, "\n";
    }
?>
C:\>php s:\lesson005.php
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz
■ lesson006.php

ただし、3の倍数は、"Fizz" を、5の倍数は、"Buzz" を、 公倍数は、"FizzBuzz" を出力
(map を自作 (create_function を使用))

<?php
    for ($i = 1; $i <= 30; $i++)
    {
        $array[$i-1] = $i;
    }

    map(create_function('$i', 'echo FizzBuzz($i), "\n";'), $array);

    function FizzBuzz($i)
    {
        if ($i % 15 == 0)
            return "FizzBuzz";

        else if ($i % 3 == 0)
            return "Fizz";

        else if ($i % 5 == 0)
            return "Buzz";

        else
            return "$i";
    }

    function map($func, $array)
    {
        foreach ($array as $i)
        {
            $func($i);
        }
    }
?>
C:\>php s:\lesson006.php
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz

Python

Ruby

更新日 : 2008.05.23
■ lesson001.rb

1から10までの数字を出力

for i in 1..10
    puts i
end
C:\>ruby s:\lesson001.rb
1
2
3
4
5
6
7
8
9
10
■ lesson002.rb

3の倍数は、"Fizz" を出力

(1..10).each do |i|
    if i % 3 == 0
        puts "Fizz"
    else
        puts i
    end
end
C:\>ruby s:\lesson002.rb
1
2
Fizz
4
5
Fizz
7
8
Fizz
10
■ lesson003.rb

3の倍数は、"Fizz" を、5の倍数は、"Buzz" を、 公倍数は、"FizzBuzz" を出力

31.times do |i|
    if i == 0

    elsif i % 15 == 0
        puts "FizzBuzz"

    elsif i % 3 == 0
        puts "Fizz"

    elsif i % 5 == 0
        puts "Buzz"

    else
        puts i
    end
end
C:\>ruby s:\lesson003.rb
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz
■ lesson004.rb

3の倍数は、"Fizz" を、5の倍数は、"Buzz" を、 公倍数は、"FizzBuzz" を出力
(配列と関数を使用)

def FizzBuzz(i)
    if i % 15 == 0
        return "FizzBuzz"

    elsif i % 3 == 0
        return "Fizz"

    elsif i % 5 == 0
        return "Buzz"

    else
        return i
    end
end

array = []
30.times   { |i| array[i] = i + 1 }
array.each { |i| puts FizzBuzz(i) }
C:\>ruby s:\lesson004.rb
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz
■ lesson005.rb

3の倍数は、"Fizz" を、5の倍数は、"Buzz" を、 公倍数は、"FizzBuzz" を出力
(map を使用)

def FizzBuzz(i)
    if i % 15 == 0
        return "FizzBuzz"

    elsif i % 3 == 0
        return "Fizz"

    elsif i % 5 == 0
        return "Buzz"

    else
        return i
    end
end

array = []
30.times { |i| array[i] = i + 1 }
array = array.map { |i| FizzBuzz i }
array.map { |i| puts i }

本当は、

array = array.map { |i| FizzBuzz i }
array.map { |i| puts i }

は、

array.map { |i|  puts FizzBuzz(i) }

と、1行で書けるが、配列を返すことを明示したかったので...

C:\>ruby s:\lesson005.rb
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz

PowerShell

更新日 : 2012.06.08
PS P:\> function FizzBuzz
{
    if ($_ % 3 -eq 0 -and $_ % 5 -eq 0)
    {
        'FizzBuzz'
    }
    elseif ($_ % 3 -eq 0)
    {
        'Fizz'
    }
    elseif ($_ % 5 -eq 0)
    {
        'Buzz'
    }
    else
    {
        $_
    }
}

PS P:\> 1..30 | FizzBuzz($_)
Fizz

PS P:\> 1..30 | foreach{ FizzBuzz($_)}
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz

PS P:\> function FizzBuzz
{ 
    switch ($_)
    {
        {$_ % 3 -eq 0} 'Fizz'
        {$_ % 5 -eq 0} 'Buzz'
        default $_
    }
}
switch ステートメント句にステートメント ブロックが存在しません。
At line:5 char:18

switch ステートメント句にステートメント ブロックが存在しません。
At line:7 char:3

switch ステートメント句にステートメント ブロックが存在しません。
At line:7 char:11

switch ステートメント句にステートメント ブロックが存在しません。
At line:8 char:1

function 宣言に function 本文が存在しません。
At line:9 char:2

PS P:\> function FizzBuzz
{ 
    switch ($_)
    {
        {$_ % 3 -eq 0} {'Fizz'}
        {$_ % 5 -eq 0} {'Buzz'}
        default {$_}
    }
}

PS P:\> 1..30 | foreach{ FizzBuzz($_)}
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
Fizz
Buzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
Fizz
Buzz

PS P:\> 1..30 | foreach{ write-host FizzBuzz($_)}
FizzBuzz 1
FizzBuzz 2
FizzBuzz 3
FizzBuzz 4
FizzBuzz 5
FizzBuzz 6
FizzBuzz 7
FizzBuzz 8
FizzBuzz 9
FizzBuzz 10
FizzBuzz 11
FizzBuzz 12
FizzBuzz 13
FizzBuzz 14
FizzBuzz 15
FizzBuzz 16
FizzBuzz 17
FizzBuzz 18
FizzBuzz 19
FizzBuzz 20
FizzBuzz 21
FizzBuzz 22
FizzBuzz 23
FizzBuzz 24
FizzBuzz 25
FizzBuzz 26
FizzBuzz 27
FizzBuzz 28
FizzBuzz 29
FizzBuzz 30

PS P:\> function FizzBuzz
{
    $s = "" 
    switch ($_)
    {
        {$_ % 3 -eq 0} {$s+='Fizz'}
        {$_ % 5 -eq 0} {$s+='Buzz'}
        default {$s+=$_}
    }
}

PS P:\> 1..30 | foreach{ FizzBuzz($_)}

PS P:\> function FizzBuzz
{
    $s="" 
    switch ($_)
    {
        {$_ % 3 -eq 0} {$s+='Fizz'}
        {$_ % 5 -eq 0} {$s+='Buzz'}
        default {$s+=$_}
    }
    return $s
}

PS P:\> 1..30 | foreach{ FizzBuzz($_)}
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz

PS P:\> 1..30 | foreach{ FizzBuzz}
1
2
Fizz
4
Buzz
Fizz
(略)

PS P:\> 1..30 | FizzBuzz
FizzBuzz

PS P:\> filter FizzBuzz
{
    (略)
}

PS P:\> 1..30 | FizzBuzz
1
2
Fizz
4
Buzz
Fizz
(略)

Scala

更新日 : 2012.05.09
def fizzbuzz(x:Int) = x match {
    case x if x % 15 == 0 => "FizzBuzz"
    case x if x %  5 == 0 =>     "Buzz"
    case x if x %  3 == 0 => "Fizz"
    case x                => x.toString()
}
(1 to 30).map(fizzbuzz).foreach(println)
scala> (1 to 30).map(fizzbuzz).foreach(println)
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz
def fizzbuzz(i:Int) = {
    if      (i % 15 == 0) "FizzBuzz"
    else if (i %  5 == 0)     "Buzz"
    else if (i %  3 == 0) "Fizz"
    else                  i.toString
}
(1 to 30) map(fizzbuzz) foreach println
scala> (1 to 30) map(fizzbuzz) foreach println
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz
scala> var a = (1 to 30)
a: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30)

scala> a map(fizzbuzz) foreach println
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz

scala> val a = List(1 to 30)
a: List[scala.collection.immutable.Range.Inclusive] = List(Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30))

scala> a map(fizzbuzz) foreach println
<console>:10: error: type mismatch;
 found   : Int => java.lang.String
 required: scala.collection.immutable.Range.Inclusive => ?
              a map(fizzbuzz) foreach println
                    ^

scala> val a = List(1,2,3,4,5)
a: List[Int] = List(1, 2, 3, 4, 5)

scala> a map(fizzbuzz) foreach println
1
2
Fizz
4
Buzz
scala> val a = for(i <- 1 to 10) yield fizzbuzz(i)
a: scala.collection.immutable.IndexedSeq[java.lang.String] = Vector(1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz)
scala> val a = for { i <- List.range(1, 10) } yield { fizzbuzz(i) }
a: List[java.lang.String] = List(1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz)
scala> (1, 30).map(fizzbuzz).foreach(println)
<console>:9: error: value map is not a member of (Int, Int)
              (1, 30).map(fizzbuzz).foreach(println)
                      ^

scala> range(1, 30).map(fizzbuzz).foreach(println)
<console>:9: error: not found: value range
              range(1, 30).map(fizzbuzz).foreach(println)
              ^

scala> List.range(1, 30).map(fizzbuzz).foreach(println)
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
def fizzbuzz(x:Int) = {
    (x % 3, x % 5) match {
        case (0, 0) => "FizzBuzz"
        case (0, _) =>     "Buzz"
        case (_, 0) => "Fizz"
        case (_, _) => x.toString()
    }
}

val a = (1 to 30).toList
a.map(fizzbuzz)

val b = Range(1, 31).toList
b.map(fizzbuzz)
scala> def fizzbuzz(x:Int) = {
     |     (x % 3, x % 5) match {
     |         case (0, 0) => "FizzBuzz"
     |         case (0, _) =>     "Buzz"
     |         case (_, 0) => "Fizz"
     |         case (_, _) => x.toString()
     |     }
     | }
fizzbuzz: (x: Int)java.lang.String

scala> val a = (1 to 30).toList
a: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30)

scala> a.map(fizzbuzz)
res0: List[java.lang.String] = List(1, 2, Buzz, 4, Fizz, Buzz, 7, 8, Buzz, Fizz, 11, Buzz, 13, 14, FizzBuzz, 16, 17, Buzz, 19, Fizz, Buzz, 22, 23, Buzz, Fizz, 26, Buzz, 28, 29, FizzBuzz)

scala> val b = Range(1, 31).toList
b: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30)

scala> b.map(fizzbuzz)
res1: List[java.lang.String] = List(1, 2, Buzz, 4, Fizz, Buzz, 7, 8, Buzz, Fizz, 11, Buzz, 13, 14, FizzBuzz, 16, 17, Buzz, 19, Fizz, Buzz, 22, 23, Buzz, Fizz, 26, Buzz, 28, 29, FizzBuzz)

■ List とか Range とかの まとめ
scala> (1 to 30)
res2: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30)

scala> val a = (1 to 30).toList
a: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30)

scala> List(1 to 30)
res5: List[scala.collection.immutable.Range.Inclusive] = List(Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30))

scala> (1, 31)
res3: (Int, Int) = (1,31)

scala> Range(1, 31)
res4: scala.collection.immutable.Range = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30)

scala> List.range(1, 31)
res6: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30)

scala> val b = Range(1, 31).toList
b: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30)

scala> Array(1 to 30)
res8: Array[scala.collection.immutable.Range.Inclusive] = Array(Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30)

scala> Array(1, 31)
res9: Array[Int] = Array(1, 31)

scala> Array.range(1, 31)
res10: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30)

scala> Range(1, 31).toArray
res11: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30)

F#

更新日 : 2012.05.09
■ まずは、配列、List、シーケンス
> let a = [1..30];;

val a : int list =
  [1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; 17; 18; 19; 20; 21;
   22; 23; 24; 25; 26; 27; 28; 29; 30]

> let b = [|1..30|];;

val b : int [] =
  [|1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; 17; 18; 19; 20; 21;
    22; 23; 24; 25; 26; 27; 28; 29; 30|]

> let c = seq{1..30};;

val c : seq<int>

> c;;
val it : seq<int> = seq [1; 2; 3; 4; ...]
■ 表示させてみる
> for x in a do printf "%d," x
- ;;
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,val it : unit = ()
> for x in b do printf "%d," x
- ;;
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,val it : unit = ()
> for x in c do printf "%d," x
- ;;
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,val it : unit = ()
■ 表示させてみる List.iter
> List.iter (fun x -> printf "%d," x) a
- ;;
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,val it : unit = ()
> List.iter (fun x -> printf "%d," x) b
- ;;

  List.iter (fun x -> printf "%d," x) b
  ------------------------------------^

S:\stdin(24,37): error FS0001: This expression was expected to have type
    'a list
but here has type
    int []
> List.iter (fun x -> printf "%d," x) c
- ;;

  List.iter (fun x -> printf "%d," x) c
  ------------------------------------^

S:\stdin(26,37): error FS0001: This expression was expected to have type
    'a list
but here has type
    seq<int>
■ 表示させてみる Array.iter
> Array.iter (fun x -> printf "%d," x) a
- ;;

  Array.iter (fun x -> printf "%d," x) a
  -------------------------------------^

S:\stdin(28,38): error FS0001: This expression was expected to have type
    'a []
but here has type
    int list
> Array.iter (fun x -> printf "%d," x) b
- ;;
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,val it : unit = ()
> Array.iter (fun x -> printf "%d," x) c
- ;;

  Array.iter (fun x -> printf "%d," x) c
  -------------------------------------^

S:\stdin(32,38): error FS0001: This expression was expected to have type
    'a []
but here has type
    seq<int>
■ 表示させてみる Seq.iter
> Seq.iter (fun x -> printf "%d," x) a
- ;;
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,val it : unit = ()
> Seq.iter (fun x -> printf "%d," x) b
- ;;
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,val it : unit = ()
> Seq.iter (fun x -> printf "%d," x) c
- ;;
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,val it : unit = ()
■ FizzBuzz いろいろ
let fizzbuzz n =
    if   n % 15 = 0 then "FizzBuzz"
    elif n %  5 = 0 then "Fizz"
    elif n %  3 = 0 then     "Buzz"
    else                 n.ToString()
;;
let fizzbuzz n =
    match n with
    |   n when n % 15 = 0 -> "FizzBuzz"
    |   n when n %  5 = 0 -> "Fizz"
    |   n when n %  3 = 0 ->     "Buzz"
    |   n                 -> n.ToString()
;;
let fizzbuzz n =
    match n % 3, n % 5 with
    |   0, 0 -> "FizzBuzz"
    |   0, _ -> "Fizz"
    |   _, 0 ->     "Buzz"
    |   _, _ -> n.ToString()
;;
■ FizzBuzz を 適用させてみる List.map
> List.map fizzbuzz a
- ;;
val it : string list =
  ["1"; "2"; "Buzz"; "4"; "Fizz"; "Buzz"; "7"; "8"; "Buzz"; "Fizz"; "11";
   "Buzz"; "13"; "14"; "FizzBuzz"; "16"; "17"; "Buzz"; "19"; "Fizz"; "Buzz";
   "22"; "23"; "Buzz"; "Fizz"; "26"; "Buzz"; "28"; "29"; "FizzBuzz"]
> List.map fizzbuzz b
- ;;

  List.map fizzbuzz b
  ------------------^

S:\stdin(117,19): error FS0001: This expression was expected to have type
    int list
but here has type
    int []
> List.map fizzbuzz c
- ;;

  List.map fizzbuzz c
  ------------------^

S:\stdin(119,19): error FS0001: This expression was expected to have type
    int list
but here has type
    seq<int>
■ FizzBuzz を 適用させてみる Array.map
> Array.map fizzbuzz a
- ;;

  Array.map fizzbuzz a
  -------------------^

S:\stdin(121,20): error FS0001: This expression was expected to have type
    int []
but here has type
    int list
> Array.map fizzbuzz b
- ;;
val it : string [] =
  [|"1"; "2"; "Buzz"; "4"; "Fizz"; "Buzz"; "7"; "8"; "Buzz"; "Fizz"; "11";
    "Buzz"; "13"; "14"; "FizzBuzz"; "16"; "17"; "Buzz"; "19"; "Fizz"; "Buzz";
    "22"; "23"; "Buzz"; "Fizz"; "26"; "Buzz"; "28"; "29"; "FizzBuzz"|]
> Array.map fizzbuzz c
- ;;

  Array.map fizzbuzz c
  -------------------^

S:\stdin(125,20): error FS0001: This expression was expected to have type
    int []
but here has type
    seq<int>
■ FizzBuzz を 適用させてみる Seq.map
> Seq.map fizzbuzz a
- ;;
val it : seq<string> = seq ["1"; "2"; "Buzz"; "4"; ...]
> Seq.map fizzbuzz b
- ;;
val it : seq<string> = seq ["1"; "2"; "Buzz"; "4"; ...]
> Seq.map fizzbuzz c
- ;;
val it : seq<string> = seq ["1"; "2"; "Buzz"; "4"; ...]
■ まとめ
Seq.map fizzbuzz a |> Seq.iter (fun x -> printf "%s," x)
;;
Seq.map fizzbuzz b |> Seq.iter (fun x -> printf "%s," x)
;;
Seq.map fizzbuzz c |> Seq.iter (fun x -> printf "%s," x)
;;
> Seq.map fizzbuzz a |> Seq.iter (fun x -> printf "%s," x)
- ;;
1,2,Buzz,4,Fizz,Buzz,7,8,Buzz,Fizz,11,Buzz,13,14,FizzBuzz,16,17,Buzz,19,Fizz,Buzz,22,23,Buzz,Fizz,26,Buzz,28,29,FizzBuzz,val it : unit = ()
> Seq.map fizzbuzz b |> Seq.iter (fun x -> printf "%s," x)
- ;;
1,2,Buzz,4,Fizz,Buzz,7,8,Buzz,Fizz,11,Buzz,13,14,FizzBuzz,16,17,Buzz,19,Fizz,Buzz,22,23,Buzz,Fizz,26,Buzz,28,29,FizzBuzz,val it : unit = ()
> Seq.map fizzbuzz c |> Seq.iter (fun x -> printf "%s," x)
- ;;
1,2,Buzz,4,Fizz,Buzz,7,8,Buzz,Fizz,11,Buzz,13,14,FizzBuzz,16,17,Buzz,19,Fizz,Buzz,22,23,Buzz,Fizz,26,Buzz,28,29,FizzBuzz,val it : unit = ()
Seq.iter (fun x -> printf "%s," x) (Seq.map fizzbuzz a)
;;                                
Seq.iter (fun x -> printf "%s," x) (Seq.map fizzbuzz b)
;;                                
Seq.iter (fun x -> printf "%s," x) (Seq.map fizzbuzz c)
;;
> Seq.iter (fun x -> printf "%s," x) (Seq.map fizzbuzz a)
- ;;
1,2,Buzz,4,Fizz,Buzz,7,8,Buzz,Fizz,11,Buzz,13,14,FizzBuzz,16,17,Buzz,19,Fizz,Buzz,22,23,Buzz,Fizz,26,Buzz,28,29,FizzBuzz,val it : unit = ()
> Seq.iter (fun x -> printf "%s," x) (Seq.map fizzbuzz b)
- ;;
1,2,Buzz,4,Fizz,Buzz,7,8,Buzz,Fizz,11,Buzz,13,14,FizzBuzz,16,17,Buzz,19,Fizz,Buzz,22,23,Buzz,Fizz,26,Buzz,28,29,FizzBuzz,val it : unit = ()
> Seq.iter (fun x -> printf "%s," x) (Seq.map fizzbuzz c)
- ;;
1,2,Buzz,4,Fizz,Buzz,7,8,Buzz,Fizz,11,Buzz,13,14,FizzBuzz,16,17,Buzz,19,Fizz,Buzz,22,23,Buzz,Fizz,26,Buzz,28,29,FizzBuzz,val it : unit = ()

C

C++

C++Builder

VC++

C#

Java

Objective-C

D

VB

VB.NET

Delphi

Ada

PL/SQL

T-SQL

関数型

inserted by FC2 system