ForNext
FizzBuzz
VBScript
■ 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
■ 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
■ 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
■ 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
■ 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
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
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#
■ まずは、配列、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 = ()