LoginSignup
1
1

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

Last updated at Posted at 2022-09-29

はじめに

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

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

追記:
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% 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
1
1
9

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
  3. You can use dark theme
What you can do with signing up
1
1