誕生年順でFizzBuzzを書いてみる🎂
特に意味はないです。
日本語 弥生時代(紀元前300年〜300年頃)
1 2 ふぃず 4 バズ ふぃず 7 8 ふぃず バズ 11 ふぃず 13 14 ふぃずバズ 16 17 ふぃず 19 バズ ふぃず 22 23 ふぃず バズ 26 ふぃず 28 29 ふぃずバズ 31 32 ふぃず 34 バズ ふぃず 37 38 ふぃず バズ 41 ふぃず 43 44 ふぃずバズ 46 47 ふぃず 49 バズ ふぃず 52 53 ふぃず バズ 56 ふぃず 58 59 ふぃずバズ 61 62 ふぃず 64 バズ ふぃず 67 68 ふぃず バズ 71 ふぃず 73 74 ふぃずバズ 76 77 ふぃず 79 バズ ふぃず 82 83 ふぃず バズ 86 ふぃず 88 89 ふぃずバズ 91 92 ふぃず 94 バズ ふぃず 97 98 ふぃず バズ
英語 5世紀頃
英語って日本語より後なんですね。初めて知りました。3
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 31 32 Fizz 34 Buzz Fizz 37 38 Fizz Buzz 41 Fizz 43 44 FizzBuzz 46 47 Fizz 49 Buzz Fizz 52 53 Fizz Buzz 56 Fizz 58 59 FizzBuzz 61 62 Fizz 64 Buzz Fizz 67 68 Fizz Buzz 71 Fizz 73 74 FizzBuzz 76 77 Fizz 79 Buzz Fizz 82 83 Fizz Buzz 86 Fizz 88 89 FizzBuzz 91 92 Fizz 94 Buzz Fizz 97 98 Fizz Buzz
FORTRAN 1957年
世界初の高水準言語らしいです。4以下リンク先で実行できます。
PROGRAM FizzBuzz
IMPLICIT NONE
INTEGER :: i
DO i = 1, 100
IF (MOD(i, 15) == 0) THEN
WRITE(*, '(A)') 'FizzBuzz'
ELSE IF (MOD(i, 3) == 0) THEN
WRITE(*, '(A)') 'Fizz'
ELSE IF (MOD(i, 5) == 0) THEN
WRITE(*, '(A)') 'Buzz'
ELSE
WRITE(*, '(I0)') i
END IF
END DO
END PROGRAM FizzBuzz
ALGOL 1958年
初めて書いたし、動かしてないのであってるかわかりません。ゆるして5
'BEGIN'
'INTEGER' i;
'FOR' i := 1 'STEP' 1 'UNTIL' 100 'DO'
'BEGIN'
'BOOLEAN' printed;
printed := 'FALSE';
'IF' i / 3 = i 'DIV' 3 'THEN'
'BEGIN'
'OUTSTRING' (1, "Fizz");
printed := 'TRUE'
'END';
'IF' i / 5 = i 'DIV' 5 'THEN'
'BEGIN'
'OUTSTRING' (1, "Buzz");
printed := 'TRUE'
'END';
'IF' NOT printed 'THEN'
'OUTINTEGER' (1, i);
'OUTSTRING' (1, EOL);
'END'
'END'
Lisp 1958年
()カッコが多すぎる。以下リンク先に実行結果があります。
Wandboxは優秀で、個人的によく使っています。
(defun fizzbuzz-cond ()
(loop for i from 1 to 100 do
(cond
((zerop (mod i 15)) (format t "FizzBuzz~%"))
((zerop (mod i 3)) (format t "Fizz~%"))
((zerop (mod i 5)) (format t "Buzz~%"))
(t (format t "~d~%" i)))))
(fizzbuzz-cond)
COBOL 1959年
バグの語源は、コンピューターおばあちゃん ことCOBOLの祖母 グレース・ホッパー氏が開発中、コンピュータ内に本物の蛾が挟まり故障したことから来ています。6
debugといえばこんなアイコンなことが多いですが、羽生えてないですよね。
以下に実行結果があります。
IDENTIFICATION DIVISION.
PROGRAM-ID. FIZZBUZZ-CLEAN.
AUTHOR. GEMINI.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-COUNTER PIC 9(3) VALUE 1.
*> 出力表示用の項目 (数字を左ゼロ埋め、3桁で表示する)
01 WS-COUNTER-DISPLAY PIC Z(2)9.
01 WS-REMAINDER-3 PIC 9(1) VALUE ZERO.
01 WS-REMAINDER-5 PIC 9(1) VALUE ZERO.
PROCEDURE DIVISION.
MAIN-LOGIC.
PERFORM VARYING WS-COUNTER FROM 1 BY 1
UNTIL WS-COUNTER > 100
COMPUTE WS-REMAINDER-3 = FUNCTION MOD(WS-COUNTER, 3)
COMPUTE WS-REMAINDER-5 = FUNCTION MOD(WS-COUNTER, 5)
IF WS-REMAINDER-3 IS EQUAL TO ZERO AND
WS-REMAINDER-5 IS EQUAL TO ZERO
DISPLAY "FizzBuzz"
ELSE IF WS-REMAINDER-3 IS EQUAL TO ZERO
DISPLAY "Fizz"
ELSE IF WS-REMAINDER-5 IS EQUAL TO ZERO
DISPLAY "Buzz"
ELSE
MOVE WS-COUNTER TO WS-COUNTER-DISPLAY
DISPLAY WS-COUNTER-DISPLAY
END-IF
END-PERFORM
STOP RUN.
黎明期の言語はこんなところでしょうか。
Pascal 1970年
進化系のObject PascalがDelphi 言語という呼び名に進化したのに対し
DelphiとDelphi 言語は別物、みたいな意味わかんないことが起きていたらしいですね。
program FizzBuzz;
uses
SysUtils;
var
i: Integer;
IsFizz: Boolean;
IsBuzz: Boolean;
begin
for i := 1 to 100 do
begin
IsFizz := False;
IsBuzz := False;
if (i mod 3) = 0 then
begin
Write('Fizz');
IsFizz := True;
end;
if (i mod 5) = 0 then
begin
Write('Buzz');
IsBuzz := True;
end;
if not IsFizz and not IsBuzz then
begin
Write(i);
end;
WriteLn;
end;
end.
C 1972年
初めて勉強したプログラミング言語、という方が多いのではないでしょうか。伝説の言語ですね。
C言語が生まれたベル研究所8
生みの親 デニス・リッチー氏9
![]()
The only way to learn a new programming language is by writing programs in it.10
このあたりからUNIX等が生まれたことになります。パソコンの時代の始まりです。
以下リンク先に実行結果があります。
#include <stdio.h>
int main(void) {
for (int i = 1; i <= 100; ++i) {
if (i % 3 == 0) {
if (i % 5 == 0) {
printf("FizzBuzz ");
continue;
}
printf("Fizz ");
continue;
}
if (i % 5 == 0) {
printf("Buzz ");
continue;
}
printf("%d ", i);
}
}
else ifかearly returnかで派閥ありそうですが、一般的なコードですよね。
人間に読める範囲で適当にコードゴルフしてみましょう。
三項演算子ゲーです。
#include <stdio.h>
int main(void) {
for (int i=1;i<101;++i) {
printf(i%3?i%5?"%d ":"Buzz ":i%5?"Fizz ":"FizzBuzz ",i);
}
}
SQL 1970年代前半
RDBMS操作でおなじみSQL。
こちらの記事を参考にさせていただきました。以下リンク先に実行結果があります。
SQLでFizzBuzzするの冷静に意味わかんなすぎる
-- 桁テーブルを作成&初期化する。
create table digits (digit integer);
insert into digits values (1), (2), (3), (4), (5), (6), (7), (8), (9), (0);
-- 連番ビューを作成&初期化する。
create view numbers as (
select (d1.digit * 10 + d2.digit) as x
from digits as d1, digits as d2
where d1.digit <> 0 or d2.digit <> 0
);
-- FizzBuzzを出力する。
select
x,
case
when mod(x, 15) = 0 then 'FizzBuzz'
when mod(x, 3) = 0 then 'Fizz'
when mod(x, 5) = 0 then 'Buzz'
else cast(x as char(2))
end as result
from numbers
order by x;
Ada 1979年(1842年)
世界初のコンピュータプログラムにあやかり名付けられた言語。
航空機の制御系などで使われているらしいです。
パンチカードでチューリングマシン動かすのどれだけ長い紙を使ったんでしょうか。
以下サイトで実行できます
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
procedure FizzBuzz is
I : Integer;
begin
for I in 1..100 loop
declare
Is_Fizz : Boolean := False;
Is_Buzz : Boolean := False;
begin
if I rem 3 = 0 then
Put("Fizz");
Is_Fizz := True;
end if;
if I rem 5 = 0 then
Put("Buzz");
Is_Buzz := True;
end if;
if not Is_Fizz and not Is_Buzz then
Put(I, Width => 0); -- Width => 0 は最小限の桁数で出力する指定
end if;
New_Line;
end;
end loop;
end FizzBuzz;
C++ 1983年
競プロer御用達。
まだの方はぜひこちらを。
FizzBuzzはこんな感じでしょうか。
#include <iostream>
int main() {
for (int i=1;i<101;++i) {
std::cout<<(i%3?i%5?std::to_string(i):"Buzz":i%5?"Fizz":"FizzBuzz")+" ";
}
}
なんか気持ち悪い書き方になっちゃった...
Objective-C 1983年
AppleやMacといえばObjective-C、みたいなところありますよね。
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
for (int i = 1; i <= 100; i++) {
NSMutableString *output = [NSMutableString string];
if (i % 3 == 0) {
[output appendString:@"Fizz"];
}
if (i % 5 == 0) {
[output appendString:@"Buzz"];
}
if ([output length] > 0) {
NSLog(@"%@", output);
} else {
NSLog(@"%d", i);
}
}
}
return 0;
}
Perl 1987年
プログラマーの三大美徳
「怠惰 (Laziness)」「短気 (Impatience)」「傲慢 (Hubris)」
を提唱したのはPerlの開発者、ラリー・ウォール氏です。11
use strict;
use warnings;
for (my $i = 1; $i <= 100; $i++) {
my $output = "";
if ($i % 3 == 0) {
$output .= "Fizz";
}
if ($i % 5 == 0) {
$output .= "Buzz";
}
if ($output eq "") {
print "$i\n";
} else {
print "$output\n";
}
}
Bash 1989年
awkはもっと前からあったしここに位置付けるの微妙ですが。
とりあえずワンライナー
seq 100|sed 5~5cBuzz|sed 3~3s/[^B]*/Fizz/
Python 1990年
スクリプト言語やGUI環境が盛んになり、IT教育目的が増えてきた印象のある時期です。
(まぁ私生まれてないので知らないんですけども。)
for i in range(1,101):
if i%15==0: print("FizzBuzz")
elif i%3==0: print("Fizz")
elif i%5==0: print("Buzz")
else: print(i)
ifのあとちゃんと改行しろ!という意見は受け付けております。
ショートコードではこれが有名でしょうか。
for i in range(100):print(i%3//2*"Fizz"+i%5//4*"Buzz"or-~i)
Haskell 1990年
純粋関数型言語!モナド!圏論!
module Main where
isDivisibleBy :: Int -> Int -> Bool
isDivisibleBy a b = a `mod` b == 0
fizzbuzz :: Int -> String
fizzbuzz n
| n `isDivisibleBy` 15 = "FizzBuzz"
| n `isDivisibleBy` 3 = "Fizz"
| n `isDivisibleBy` 5 = "Buzz"
| otherwise = show n
main :: IO ()
main = mapM_ (putStrLn . fizzbuzz) [1..100]
Visual Basic 1991年
Emotet... ActiveX... うっ頭がっ...12
以下サイトで実行できます。お手元のExcelでも可。
Imports System
Module Program
Sub Main(args As String())
For i As Integer = 1 To 100
Dim output As String = ""
If i Mod 3 = 0 Then
output &= "Fizz"
End If
If i Mod 5 = 0 Then
output &= "Buzz"
End If
If String.IsNullOrEmpty(output) Then
Console.WriteLine(i.ToString())
Else
Console.WriteLine(output)
End If
Next i
End Sub
End Module
Vim 1991年
†vimmer御用達のvim†13です。
マクロ保存して実行して置換します。Vim上でこの通りやれば動きます。
33o<CR>Fizz<CR><Esc>qqABuzz<Esc>5kq19@q:%s/^$/\=line('.')<CR>
vimの父 ブラム・ムールナー氏14
![]()
Vim Script 1991年
別解ですね。vimのカスタムするためにしか書きませんが、dotfiles盆栽して遊んでいる身からすると紛れもなくプログラミング言語です。
お手元の~/.vimrcに書いて<Space>fで実行できます。
ラムダが未対応なのか、wandboxのvim script実行ではうまく動きません。
fu! s:solve(n) abort
let l:output = ''
if a:n % 3 == 0
let l:output .= 'Fizz'
endif
if a:n % 5 == 0
let l:output .= 'Buzz'
endif
retu empty(l:output) ? string(a:n) : l:output
endf
fu! s:run() abort
echo range(1, 100)->map({_, v -> s:solve(v)})->join(" ")
endf
" キーマップにしてみる
nnoremap <silent><Space>f :<C-u>cal <SID>run()<CR>
Lua 1993年
個人的にはNeovimの設定に使うくらいですが、シンプルで好き寄りな言語です。
人によりますが、このあたりの年代から先の言語は不要な表記が少なく、直感的に把握しやすいものが多いように感じます。
for i = 1, 100 do
local output = ""
if i % 3 == 0 then
output = output .. "Fizz"
end
if i % 5 == 0 then
output = output .. "Buzz"
end
print(output ~= "" and output or i)
end
PHP 1994年
PythonやJS並みに書く量が少なくてよいですね。
LAMP15が流行ったのも頷けます。
<?php
for ($i = 1; $i <= 100; $i++) {
$output = '';
if ($i % 3 == 0) $output .= 'Fizz';
if ($i % 5 == 0) $output .= 'Buzz';
echo (empty($output) ? $i : $output) . " ";
}
?>
Java 1995年
ぬるぽ16
import java.util.function.Function;
import java.util.stream.IntStream;
public class prog {
private static Function<Integer, String> f = i -> {
String output = "";
if (i % 3 == 0) {
output += "Fizz";
}
if (i % 5 == 0) {
output += "Buzz";
}
return output.isEmpty() ? i+"" : output;
};
public static void main(String[] args) {
IntStream.range(1, 100).boxed().map(f).forEach(System.out::println);
}
}
私が初めて仕事のために覚えた言語なので、ちょっとカッコよさげな書き方にしてみました。
JavaScript 1995年
個人的に最も好きな言語です。バニラのほうが好みです。
連番を作るテクニック[...Array(100)].map((_,i)=>i+1)は割と有名でしょうか。
console.log([...Array(100)].map((_,i)=>i+1).map(v=>v%3?v%5?v:"Buzz":v%5?"Fizz":"FizzBuzz").join(" "))
Ruby 1995年
Rubyといえばこの人ですよね。17
1.upto(100) do |i|
output = ''
output += 'Fizz' if i % 3 == 0
output += 'Buzz' if i % 5 == 0
puts output.empty? ? i : output
end
ECMA標準化記念 (JS) 1997年
ブラウザ戦争18に伴うJSの独自進化が乱立しまくった結果、ECMAScriptに統一され
「JavaScriptのECMA2025」のようなバージョン表記っぽくまとまってくれました。19
せっかくなのでJSでのFizzBuzzで最も文字数少ないのを置いておきます。
for(i=0;++i<101;console.log(i%5?x||i:x+'Buzz'))x=i%3?'':'Fizz'
C# 2002年
C -> C++ -> C++
++
↓
C# という命名なのは面白いです
using System;
public class FizzBuzz
{
public static void Main(string[] args)
{
for (int i = 1; i <= 100; i++)
{
string output = "";
if (i % 3 == 0) output += "Fizz";
if (i % 5 == 0) output += "Buzz";
Console.WriteLine(output.Length == 0 ? i.ToString() : output);
}
}
}
Groovy 2003年
1.upto(100) { i ->
def output = ''
if (i % 3 == 0) output += 'Fizz'
if (i % 5 == 0) output += 'Buzz'
println(output.isEmpty() ? i : output)
}
Scala 2004年
ChatGPT先生に面白小ネタを聞いてみました。
Scalaのコミュニティやカンファレンスでは、「モナド(Monad)」という関数型プログラミングの概念を理解するために、プログラマーたちが苦労することがよくネタにされていました。「モナドを理解すればコーヒーがもらえる」というジョークがあったほどです。これは、Scalaが高度な関数型概念を導入したことの難しさと面白さを象徴しています。
そ、そうなのか...
object Main {
def main(args: Array[String]): Unit = {
for (i <- 1 to 100) {
val output = {
val f = if (i % 3 == 0) "Fizz" else ""
val b = if (i % 5 == 0) "Buzz" else ""
f + b
}
println(if (output.isEmpty) i.toString else output)
}
}
}
なでしこ 2004年
クジラ飛行机さんが作成した、日本語で書くプログラミング言語。
はじめて書きましたが、なかなか面白いです。
Nを1から100まで繰り返す
もし、(N%3=0)かつ(N%5=0)ならば「FizzBuzz」と表示。
違えば、もし、N%3=0ならば「Fizz」と表示。
違えば、もし、N%5=0ならば「Buzz」と表示。
違えば、Nを表示。
ここまで。
Nim 2008年
Nimっていうゲームもあります。20
n個のコインの山があり、各山にはコインが$m_i$枚ある。プレーヤーは1つの山を選び、その山から1枚以上のコインを取り除く。これを2人で交互に行い、コインを取り除けなくなったプレイーヤーが負けとなる。
また、Nimで競プロをやっている方々もいらっしゃいます。
以下がFizzBuzzですが、綺麗でいいですよね。
for i in 1..100:
var output = ""
if i mod 3 == 0:
output.add("Fizz")
if i mod 5 == 0:
output.add("Buzz")
echo if output.len > 0: output else: $i
Go 2009年
アイコンのコイツはホリネズミという生き物らしいです。21
コードはこちらです。
package main
import (
"fmt"
"strconv"
)
func main() {
for i := 1; i <= 100; i++ {
output := ""
if i%3 == 0 {
output += "Fizz"
}
if i%5 == 0 {
output += "Buzz"
}
result := output
if result == "" {
result = strconv.Itoa(i)
}
fmt.Println(result)
}
}
Rust 2010年
Rustという名前はさび菌に因んで付けられた
らしいです。そのままだったんですね...
Rust言語のユーザーを crustacean (甲殻類) を文字って rustacean と呼ぶことから、甲殻類であるカニをモチーフにしたキャラクターが誕生した22
だそうです。
fn main() {
for i in 1..=100 {
let mut output = String::new();
if i % 3 == 0 {
output.push_str("Fizz");
}
if i % 5 == 0 {
output.push_str("Buzz");
}
let result = if output.is_empty() {
i.to_string()
} else {
output
};
println!("{}", result);
}
}
Dart 2011年
元、最も学ぶ価値のない言語。23なんでそんなひどいこというの。
JS最強過ぎて闇の時代もあったようですが、2025年現在では、1つのコードでiOS/Android/Web/デスクトップアプリを開発できるFlutterフレームワークの普及などもあって人気を取り戻しています。
以下で実行できます。
void main() {
for (int i = 1; i <= 100; i++) {
String output = '';
if (i % 3 == 0) {
output += 'Fizz';
}
if (i % 5 == 0) {
output += 'Buzz';
}
print(output.isEmpty ? i.toString() : output);
}
}
Kotlin 2011年
コトリン島にちなんで命名されたらしいです。24
公式サイトには「この島から名前が付いたコトリン型駆逐艦(英: Kotlin class destroyer)というのがありますが、Kotlin は別にクラスを駆逐しようというわけではありません」や、Java の由来がコーヒーであることにかけて「この島ではコーヒーなどの外来植物はあまり作っていないと思います」というジョークが掲載されている。
らしいので公式サイト見てみたんですが、2025年12月現在は見つからず。埋もれてるだけかなぁ?
fun main() {
for (i in 1..100) {
var output = ""
if (i % 3 == 0) output += "Fizz"
if (i % 5 == 0) output += "Buzz"
println(if (output.isEmpty()) i.toString() else output)
}
}
Julia 2012年
Juliaを紹介している面白記事があったので紹介。
LLVMを使っているとのことで、モダンな感じがしますね。
25
for i in 1:100
output = ""
if i % 3 == 0
output *= "Fizz"
end
if i % 5 == 0
output *= "Buzz"
end
println(isempty(output) ? i : output)
end
Swift 2014年
Objective-Cの進化版といったイメージがあります。
iOS用ってかんじ。
for i in 1...100 {
var output = ""
if i % 3 == 0 {
output += "Fizz"
}
if i % 5 == 0 {
output += "Buzz"
}
print(output.isEmpty ? String(i) : output)
}
Jelly 2017年
は?
³µ3,5ḍTị“¡Ṭ4“Ụp»ȯµ€G
gs2 2017年
おいそれはずるいだろ。
f
emojin 2024年
なんか絵文字でプログラミングするものがあるらしいです。ふしぎですね。
🪧FizzBuzz プログラム
♻️❤️🌀0️⃣➰5️⃣0️⃣🔜
🤔❤️🪣3️⃣⚖️0️⃣🫂❤️🪣5️⃣⚖️0️⃣🔜
📢💬FizzBuzz💬⛔️
🔚🧐❤️🪣3️⃣⚖️0️⃣🔜
📢💬Fizz💬⛔️
🔚🧐❤️🪣5️⃣⚖️0️⃣🔜
📢💬Buzz💬⛔️
🔚☹️🔜
📢❤️⛔️
🔚
🔚
おわりに
ここまで読んで頂きありがとうございました。
書いているうちに文法が混ざってゲシュタルト崩壊しました。
以下はNGワードとなっております。
- 年代調査が雑
- 紹介が適当すぎる
- コードに統一感がない
また、プログラミング言語の歴史をまとめた神動画あるので紹介します。
また、似たようにいくらかの言語で書き比べしてみた昔の記事も読んでやってください。
おやすみなさい。💤💤



