LoginSignup
1

ズンドコキヨシを11個の言語で書いてみた

Last updated at Posted at 2022-09-29

はじめに

今更ですが、ズンドコキヨシ
というものを発見してしまったので、
面白そと思い自分で書いてみました。
今回は自分で書けそうな言語 9個 10個 11個で書いてみました。

※luaでも書けましたので、追加しました。
※GAS(Google Apps Script)でも書けました。

追記:
2022/10/5

  • コメントにてバグのご指摘いただきましたので、プログラム修正、それに伴いフローチャート修正いたしました。
  • 一部体裁が整っていなかった箇所がありましたので、修正しました。
  • VBA、VBSにおいてRandamizeがなかったので追加しました。

2022/10/6

  • 再度指摘ありましたので修正しました。

2022/10/7

  • プログラム自体は正常に動くようになりましたが、
    リファクタリングについてご意見いただきましたので、修正しました。

ズンドコキヨシとは?

下記Twitterを発端としたもので、この仕様のプログラムを作ることを目的としたものです。

フローチャート

各言語は下記フローチャートに準じた形で記載しています。
zundoko.png

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% leq 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("キ・ヨ・シ!");
}

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1