こちらの記事で紹介されている「進捗どうですか」を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();
}
}
オーダーとかちゃんと測ってないけどもうちょい効率化したい感じ。
20分くらいで作れたので、ひとまず満足
気が向いたらリファクタリングします。