TL;DR
もうやだぽ
_人人人人人人人人人人人人人人人人人_
> 彼女に技術書捨てろって言われた! <
 ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
ちょっとだけ気が晴れました。
良いですね、突然の死。
ただ、吹き出しの中にメッセージを入力したり、吹き出しの長さ調整が非常に面倒くさかったです。
もう手がつかれた腱鞘炎になる。
心に沈殿した濁りを吐き出したいだけなのに、なぜこんなにも大変なんだ。
そうだ、私はプログラマーだった。
この仕事はプログラムにやってもらおう。
コード
簡易実現のため、入力に改行コード含まれないことにします。
shell実装
突然の死(death.sh)
#/bin/bash
msg=$1
bytes=`echo $1 | iconv -f=utf8 -t=sjis | wc --byte`
width=`echo ${bytes}/2 + 1 | bc`
for i in `seq 1 1 $width`; do
over="${over}人";
under="${under}^Y"
done;
echo "_${over}_"
echo "> ${msg} <"
echo " ̄${under} ̄"
Java実装
突然の死(Main.java)(java7実装)
public static String suddendeath(String msg) {
// 全角と半角文字で文字幅が異なるのでバイト数で判断
byte[] bytes = msg.getBytes(Charset.forName("Windows-31J"));
StringBuilder br = new StringBuilder();
// 上段
br.append("_人");
for (int i = 0; i < bytes.length / 2; i++) {
br.append("人");
}
br.append("_");
br.append(System.getProperty("line.separator"));
// メッセージ本体
br.append("> ").append(msg).append(" <");
// 下段
br.append(System.getProperty("line.separator"));
br.append(" ̄");
for (int i = 0; i < bytes.length / 2; i++) {
br.append("^Y");
}
br.append(" ̄");
return br.toString();
}
なんとなくStreamを使った実装も作ってみます。
突然の死(Main.java)(Java8実装)
public static String suddendeathBy8(String msg) {
// 全角と半角文字で文字幅が異なるのでバイト数で判断
byte[] bytes = msg.getBytes(Charset.forName("Windows-31J"));
StringBuilder br = new StringBuilder();
// 上段
br.append("_人");
IntStream.range(0, bytes.length / 2).forEach(i -> br.append("人"));
br.append("_\n");
// 本文
br.append("> ").append(msg).append(" <\n");
// 下段
br.append(" ̄");
IntStream.range(0, bytes.length / 2).forEach(i -> br.append("^Y"));
br.append(" ̄\n");
return br.toString();
}
動かします
shellは実行が簡単で良いですね。
引数が突然の死フォーマットで標準出力されます。
Shell実行結果
shell実行結果
% sh death.sh お前の服捨てろー!!
_人人人人人人人人人人_
> お前の服捨てろー!!<
 ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
Java実行結果
Javaはすこし手間を加える必要がります。
まず、実行用のMainメソッドを作ります。
エラーハンドリングはしてません。
Main.java
public class Main {
public static void main(String[] args) {
String result = suddendeath(args[0]);
System.out.println(result);
}
}
あとはコンパイルして実行するだけですね。
java実行結果
% javac -encoding UTF-8 Main.java
% java Main 要らない雑貨持ち込むな―!
_人人人人人人人人人人人人人人_
> 要らない雑貨持ち込むな―! <
 ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
まとめ
- すったもんだの末、技術書は会社に持っていくことで合意が取れました
- 大きな言い争いにならなかったのは「突然の死」で事前にストレスが発散され、冷静な会話が出来たからだと思います
- 私の経験から「突然の死」は男女の仲もとりもてる良いプログラムなので、みなさんもご愛顧下さい