昨年の終わりぐらいから、progeteやpaizaなどのプログラミング学習サイトを回りながら、いくつかのプログラミング言語をつまみ食いをしてました。
プログラミング言語のつまみ食いを続けたことで、簡単な処理であれいくつかの言語で書けるようになりました。
今回はプログラミング初心者にとって、書けることでひと区切り(?)になるらしい有名な処理であるFizzBuzzと某ナベアツについて、C#、Java、JavaScript、PHP、Python3、Rubyの6言語でコードを書いてみました。
今回はメソッド(関数)の扱いに慣れることもあり、それぞれの処理をメソッド(関数)として定義し、その定義したメソッド(関数)を呼び出して実行する形でコードを書いています。
FizzBuzz
順番に数値を1づつ増やしながら答えていく(但し、3の倍数に該当する場合は「Fizz」、5の倍数に該当する場合は「Buzz」、3の倍数かつ5の倍数に該当する場合は「FizzBuzz」と答える)FizzBuzzという遊びがあります。
ここでは、6種類のプログラミング言語でFizzBuzzについての処理を書いています。
1から標準入力された数値nまで、数値を1づつ増加させながら順番に表示させます。ここで、3の倍数の場合は「Fizz」、5の倍数の場合は「Buzz」、3の倍数かつ5の倍数(すなわち15の倍数)の場合は「FizzBuzz」が、数値の代わりに表示されるようになってます。
C#でFizzBuzz
using System;
public class Sample{
public static void fizzbuzz(int x){
for (int i = 1; i <= x; i++){
if (i % 5 == 0 && i % 3 == 0){
Console.WriteLine("FizzBuzz");
} else if (i % 5 == 0){
Console.WriteLine("Buzz");
} else if (i % 3 == 0){
Console.WriteLine("Fizz");
} else {
Console.WriteLine(i);
}
}
}
public static void Main(){
int n = int.Parse(Console.ReadLine().Trim());
fizzbuzz(n);
}
}
JavaでFizzBuzz
import java.util.*;
public class Main {
public static void fizzbuzz(int x) {
for (int i=1;i<=x;i++){
if (i % 5 == 0 && i % 3 == 0){
System.out.println("FizzBuzz");
} else if (i % 5 == 0){
System.out.println("Buzz");
} else if (i % 3 == 0){
System.out.println("Fizz");
} else {
System.out.println(i);
}
}
}
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
int n = Integer.parseInt(line);
fizzbuzz(n);
}
}
JavaScriptでFizzBuzz
process.stdin.resume();
process.stdin.setEncoding('utf8');
var lines = [];
var reader = require('readline').createInterface({
input: process.stdin,
output: process.stdout
});
reader.on('line', (line) => {
lines.push(line);
});
reader.on('close', () => {
function fizzbuzz(x){
for (let i=1;i<=x;i++){
if (i % 5 === 0 && i % 3 === 0){
console.log("FizzBuzz");
} else if (i % 5 === 0){
console.log("Buzz");
} else if (i % 3 === 0){
console.log("Fizz");
} else {
console.log(i);
}
}
}
var n=parseInt(lines[0]);
fizzbuzz(n);
});
PHPでFizzBuzz
<?php
function fizzbuzz($x){
for($i=1;$i<=$x;$i++){
if ($i % 5 == 0 && $i % 3 == 0){
echo ("FizzBuzz"."\n");
} elseif ($i % 5 == 0){
echo ("Buzz"."\n");
} elseif ($i % 3 == 0){
echo ("Fizz"."\n");
} else {
echo ($i."\n");
}
}
}
$n = (int)fgets(STDIN);
fizzbuzz($n);
?>
Python3でFizzBuzz
def fizzbuzz(x):
for i in range(1,x+1):
if i % 5 == 0 and i % 3 == 0:
print("FizzBuzz")
elif i % 5 == 0:
print("Buzz")
elif i % 3 == 0:
print("Fizz")
else:
print(i)
n=int(input())
fizzbuzz(n)
RubyでFizzBuzz
def fizzbuzz(x)
for i in 1..x
if i % 5 == 0 && i % 3 == 0
puts "FizzBuzz"
elsif i % 5 == 0
puts "Buzz"
elsif i % 3 == 0
puts "Fizz"
else
puts i
end
end
end
n=gets.to_i
fizzbuzz(n)
某ナベアツ
某芸人の有名な持ちネタをプログラミングで処理したものです。順番に1つづつ数字を増やして表示させます。ここで、3の倍数、もしくは3が含まれる数字の場合は、数字の代わりに指定文字列を表示させます。今回は☆を表示させます。
3が含まれるかどうかの判定については、桁が多くなっても対応できるように、数字を文字列に変換し、3という文字が文字列中に含まれるかどうかで判定しています。
C#でナベアツ
using System;
using System.Collections.Generic;
public class Hello{
public static void nabe3(int x){
for (int i = 1; i <= x; i++){
if (i % 3 == 0 || i.ToString().Contains("3")==true){
Console.WriteLine("☆");
} else {
Console.WriteLine(i);
}
}
}
public static void Main(){
// Your code here!
var n = int.Parse(Console.ReadLine().Trim());
nabe3(n);
}
}
Javaでナベアツ
import java.util.*;
public class Main {
private static void nabe3(int x) {
for (int i=1;i<=x;i++){
if (i % 3 == 0 || Integer.toString(i).contains("3")==true){
System.out.println("☆");
} else {
System.out.println(i);
}
}
}
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
int n = Integer.parseInt(line);
nabe3(n);
}
}
JavaScriptでナベアツ
process.stdin.resume();
process.stdin.setEncoding('utf8');
var lines = [];
var reader = require('readline').createInterface({
input: process.stdin,
output: process.stdout
});
reader.on('line', (line) => {
lines.push(line);
});
reader.on('close', () => {
function nabe3(x){
for (let i=1;i<=x;i++){
if (i % 3 === 0 || i.toString().includes("3")===true){
console.log("☆");
} else {
console.log(i);
}
}
}
var n=parseInt(lines[0]);
nabe3(n);
});
PHPでナベアツ
<?php
function nabe3($x){
for($i=1;$i<=$x;$i++){
if ($i % 3 === 0 || strpos((string)$i,"3")!==false){
echo ("☆"."\n");
} else {
echo ($i."\n");
}
}
}
$n = (int)fgets(STDIN);
nabe3($n);
?>
Python3でナベアツ
def nabe3(x):
for i in range(1,x+1):
if i % 3 == 0 or str(i).count("3")>0:
print("☆")
else:
print(i)
n=int(input().rstrip())
nabe3(n)
Rubyでナベアツ
def nabe3(x)
for i in 1..x
if i % 3==0 || i.to_s.count("3")>0
puts"☆"
else
puts i
end
end
end
n=gets.to_i
nabe3(n)
今回は、C#、Java、JavaScript、PHP、Python、Rubyの6言語でFizzBuzzと某ナベアツの処理について書きました。この6つの言語については、一応は簡単な処理までは書けるようになりました。
あまり多くの言語に手を出すと収拾が付かなくなりそうなので、プログラミング言語のつまみ食いはこの辺で止めておきます。それと同時に、何らかの「モノ」(ゲーム、アクセスカウンター、掲示板など)を作る準備をそろそろ始めたいです。