LoginSignup
2
2

More than 5 years have passed since last update.

「進捗どうですか」をJavaで

Posted at

こちらの記事で紹介されている「進捗どうですか」をJavaでさくっと書いてみました。

Gist
https://gist.github.com/akiotanaka0926/43f4cbff6c70ea55dcbc

WorkProgress.java
package work.progress;

import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 進捗どうですかで煽る=□>
 * 
 * @author AQUA
 */
public class WorkProgress {

    /** 進捗どうですか マッチング用 */
    private static final String WORK_PROGRESS = "進捗どうですか";

    /**
     * メイン実行
     * 
     * @param args
     *            引数(なし)
     */
    public static void main(String[] args) {
        Map<Integer, String> progressWordMap = createProgressWordMap();
        StringBuilder sb = new StringBuilder();

        Pattern pattern = Pattern.compile(WORK_PROGRESS);
        Random random = new Random();
        int inFlameCount = 0;

        while (!isWorkProgress(sb.toString(), pattern)) {
            String addWord = progressWordMap.get(random.nextInt(4));
            System.out.print(addWord);
            System.out.print(" ");
            sb.append(addWord);
            inFlameCount++;
            if (inFlameCount == 50) {
                System.out.println();
                inFlameCount = 0;
            }
        }
        System.out.println(" ???");
        System.out.println(sb.length() + "文字で煽られました");
    }

    /**
     * 進捗どうですか をランダムで表示するためのマップを生成します
     * 
     * @return 進捗どうですかマップ
     */
    private static Map<Integer, String> createProgressWordMap() {
        Map<Integer, String> progressWordMap = new HashMap<>();

        progressWordMap.put(0, "進捗");
        progressWordMap.put(1, "どう");
        progressWordMap.put(2, "です");
        progressWordMap.put(3, "か");

        return progressWordMap;
    }

    /**
     * 進捗どうですか が出現したかを判定します
     * 
     * @param mattchingWord
     *            判定する文字列
     * @param pattern
     *            パターン(進捗どうですか)
     * @return true:出現<br>
     *         false:未出現
     */
    private static boolean isWorkProgress(String mattchingWord, Pattern pattern) {
        Matcher matcher = pattern.matcher(mattchingWord);
        return matcher.find();
    }
}

実行結果
結果.PNG

オーダーとかちゃんと測ってないけどもうちょい効率化したい感じ。
20分くらいで作れたので、ひとまず満足
気が向いたらリファクタリングします。

2
2
0

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
2
2