Kotlinで書いたらもちろんC#でもやらないとね!

元ネタ

ソース

using System;
using System.Collections.Generic;
using System.Linq;
using static System.Console;

namespace ZunDoko {
    class Program {
        static IEnumerable<string> ZunDoko() {
            var random = new Random();
            while(true)
                yield return random.Next(2) == 1 ? "ズン" : "ドコ";
        }

        static void Main(string[] args) {
            int count = 0;
            foreach(string s in ZunDoko().Select(x => { WriteLine(x); return x; })) {
                if(s == "ズン") {
                    count++;
                } else if(count >= 4 && s == "ドコ") {
                    WriteLine("キ・ヨ・シ!");
                    break;
                } else {
                    count = 0;
                }
            }
        }
    }
}

動作例

ズン
ズン
ドコ
ズン
ズン
ドコ
ズン
ズン
ドコ
ドコ
ズン
ズン
ドコ
ドコ
ズン
ズン
ズン
ドコ
ズン
ズン
ズン
ズン
ズン
ドコ
キ・ヨ・シ!

デバッグしてて気づいたんだけどズンズンズンズンズンドコを許すかどうかで処理変わるね(自分のやつ許すかどうかを深く考えてない)