こんなツイートがTLに流れてきて、なんか、ズンドコキヨシの時のアトモスフィアを感じたので、Javaで実装してみた。
ムスメ5歳とゲームを考えた。
題して「サンシャイン池崎ゲーム」。
ルールはシンプル。歌を歌って「い」がついたら、「イェー!」に変えるだけ。
ムスメ5歳「おおきなのっぽの古どけイェー!、おじイェー!さんのとけイェー!!」
げらげら笑った。
https://twitter.com/ziuziu/status/918070729341587457
仕様としては
・入力された文字列に「イ」または「い」があったら「イェー」に置き換える。
・「イ」・「い」が連続する場合は、2回目以降を「ー」に置き換える。
その実装がこちら
仕事終わりの頭で、作ったせいか。なかなかの汚いコードですが・・・(これがお前の実力さ)
import java.util.Arrays;
public class Yeah {
/**
* 入力された文字列に「い」または「イ」が合ったら、「イェー」に置き換えてください。
* ただし、連続する場合は2回目以降は「ー」に置き換えてください。
*/
public String convert(String text) {
boolean alwaysHit = false;
String[] hit = {"い", "イ"};
String[] strArray = toArray(text);
for (int i = 0; i <= strArray.length - 1; i++) {
if (Arrays.asList(hit).contains(strArray[i])){
if (alwaysHit == false) {
strArray[i] = "イェー";
alwaysHit = true;
} else {
strArray[i] = "ー";
}
}else{
alwaysHit = false;
}
}
return Arrays.toString(strArray).replace(" ", "").replace(",", "").replace("[", "").replace("]", "");
}
private String[] toArray(String str) {
String[] returnStr = new String[str.length()];
// 変数strの長さ分回す
for (int i = 0; i <= str.length() - 1 ; i++) {
// 配列に順番に格納する
returnStr[i] = String.valueOf(str.charAt(i));
}
return returnStr;
}
}
上記のコードを以下のテストコードを書いて、実行
import static org.junit.Assert.*;
import org.junit.Test;
public class YeahTest {
@Test
public void testConverter() {
Yeah yeah = new Yeah();
assertEquals("イェーーーーーーええええイェーーーーーー", yeah.convert("イイイイイイええええいいいいいい"));
assertEquals("イェーえイェーーえええええイェーえイェーえイェーー", yeah.convert("イえイイえええええいえいえいい"));
assertEquals("激唱イェーンフィニティ", yeah.convert("激唱インフィニティ"));
}
}