はじめに
今更ですが、ズンドコキヨシ
というものを発見してしまったので、
面白そと思い自分で書いてみました。
今回は自分で書けそうな言語 9個 10個 11個 12個で書いてみました。
※luaでも書けましたので、追加しました。
※GAS(Google Apps Script)でも書けました。
※UWSCでも書けました。
追記:
2022/10/5
- コメントにてバグのご指摘いただきましたので、プログラム修正、それに伴いフローチャート修正いたしました。
- 一部体裁が整っていなかった箇所がありましたので、修正しました。
- VBA、VBSにおいてRandamizeがなかったので追加しました。
2022/10/6
- 再度指摘ありましたので修正しました。
2022/10/7
- プログラム自体は正常に動くようになりましたが、
リファクタリングについてご意見いただきましたので、修正しました。
ズンドコキヨシとは?
下記Twitterを発端としたもので、この仕様のプログラムを作ることを目的としたものです。
Javaの講義、試験が「自作関数を作り記述しなさい」って問題だったから
— てくも (@kumiromilk) March 9, 2016
「ズン」「ドコ」のいずれかをランダムで出力し続けて「ズン」「ズン」「ズン」「ズン」「ドコ」の配列が出たら「キ・ヨ・シ!」って出力した後終了って関数作ったら満点で単位貰ってた
フローチャート
C
zundoko.c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void zundoko() {
char zudo[2][5] = { "ズン","ドコ" };
srand((unsigned int)time(NULL));
int count = 0;
while (1) {
int i = rand() % 2;
printf("%s", zudo[i]);
if (i == 0) {
if ( count <= 4 ) count++;
} else {
if ( count >= 4 ) break;
else count = 0;
}
}
printf("\nキ・ヨ・シ!\n");
}
int main(void) {
zundoko();
return 0;
}
C++
zundoko.cpp
#include <bits/stdc++.h>
using namespace std;
void zundoko() {
string zudo[2] = { "ズン","ドコ" };
srand((unsigned int)time(NULL));
int count = 0;
while (1) {
int i = rand() % 2;
cout << zudo[i];
if (i == 0) {
if( count <= 4 ) count++;
} else {
if ( count >= 4 ) break;
else count = 0;
}
}
cout << endl << "キ・ヨ・シ!" << endl;;
}
int main(void) {
zundoko();
return 0;
}
Excel VBA
zundoko.xlsm
Option Explicit
Sub zundoko()
Dim zudo(1) As String
zudo(0) = "ズン"
zudo(1) = "ドコ"
Dim count As Integer
count = 0
Randomize
Do
Dim i As Integer
i = Int(Rnd * 2)
Debug.Print zudo(i)
If i = 0 Then
If count <= 4 then
count = count + 1
End if
Else
If count >= 4 Then
Exit Do
Else
count = 0
End If
End If
Loop
Debug.Print "キ・ヨ・シ!"
End Sub
VBScript
zundoko.vbs
Option Explicit
zundoko
Sub zundoko()
Dim zudo(1)
zudo(0) = "ズン"
zudo(1) = "ドコ"
Dim count
count = 0
Randomize
Do
Dim i
i = Int(Rnd * 2)
Wscript.Echo zudo(i)
If i = 0 Then
If count <= 4 then
count = count + 1
End If
Else
If count >= 4 Then
Exit Do
Else
count = 0
End If
End If
Loop
Wscript.Echo "キ・ヨ・シ!"
End Sub
PowerShell
zundoko.ps1
function zundoko{
$zundoko = @("ズン","ドコ")
$count = 0
while($true){
$i = get-random 2
$zundoko[$i]
if ($i -eq 0) {
if($count -le 4){
$count += 1
}
} else {
if ($count -ge 4){
break;
} else {
$count = 0
}
}
}
Write-Host "キ・ヨ・シ!"
}
zundoko
Java
zundoko.java
import java.util.Random;
public class zundoko {
public static void main(String[] args) {
zundo();
}
public static void zundo() {
String[] zudo = { "ズン","ドコ" };
int count = 0;
while (true) {
Random rand = new Random();
int i = rand.nextInt(2);
System.out.print(zudo[i]);
if (i == 0) {
if (count <= 4) count++;
} else {
if (count >= 4) break;
else count = 0;
}
}
System.out.print("\nキ・ヨ・シ!\n");
}
}
Processing
zundoko.pde
void setup(){
zundoko();
}
void zundoko() {
String zudo[] = { "ズン","ドコ" };
int count = 0;
while (true) {
int i = (int)random(0,2);
print(zudo[i]);
if (i == 0) {
if (count <= 4) count++;
} else {
if (count >= 4 && i == 1) break;
else if (i == 1) count = 0;
}
}
print("\nキ・ヨ・シ!\n");
}
HSP
zundoko.hsp
#module
#deffunc zundoko
dim zudo,2
zudo = "ズン","ドコ"
dim count
count = 0
randomize
repeat
i = rnd(2);
mes zudo(i)
if i == 0 {
if count <= 4 {
count=count+1
}
}
else {
if count >= 4 {
break
}
else {
count = 0
}
}
loop
mes "キ・ヨ・シ!"
return
#global
zundoko
Windowsバッチ
zundoko.bat
@echo off
setlocal enabledelayedexpansion
call :zundoko
pause
exit
:zundoko
set /a count = 0
set zundoko[0]=ズン
set zundoko[1]=ドコ
:loop
set /a i=%random%*2/32767
echo !zundoko[%i%]!
if %i% equ 0 (
if %count% le:q 4 (
set /a count = count + 1
)
) else (
if %count% geq 4 (
goto :endloop
) else (
set /a count = 0
)
)
goto :loop
:endloop
echo キ・ヨ・シ!
exit /b
lua
zundoko.lua
function zundoko()
zudo={"ズン","ドコ"}
count=0
math.randomseed(os.time())
while true do
i=math.random(1,2)
print(zudo[i])
if i==1 then
if count<=4 then
count=count+1
end
else
if count>=4 then
break
else
count=0
end
end
end
print("キ・ヨ・シ!")
end
zundoko()
GAS(Google Apps Script)
function zundoko() {
let zudo = ["ズン","ドコ"];
let count=0;
while(1){
let i = Math.floor(Math.random()*2);
console.log(zudo[i]);
if (i == 0) {
if (count <= 4) count++;
}else{
if (count >= 4) break;
else count = 0;
}
console.log("キ・ヨ・シ!");
}
UWSC
zundoko.uws
zundoko()
procedure zundoko()
dim zun[2]="ズン","ドコ"
dim cnt=0
while true
dim i=random(2)
print zun[i]
ifb i = 0 then
if cnt <= 4 then cnt=cnt+1
else
if cnt >= 4 then break else cnt = 0
endif
wend
print "キ・ヨ・シ!"
fend