数字,文字リテラルを使わずにHello Worldを標準出力する方法
こんばんはABS104aです.
今日は,CodeIQで見かけた,
標準出力に Hello World と出力するプログラムを作成して下さい。 ただし、数値・文字・文字列リテラルを解答に含めることはできません。
という内容をみて,ちょっとやってみようかなと思い書いてみました.
ちょっと考えて見たのですが,僕にはこの方法しか思い浮かばなかった・・・orz
もっと良い方法があるような気もしますが,こんな方法あるぜ!こっちの方がよくね?と思った人は教えてくださいm(_ _)m
以下,コードです.
Systemから現在の時刻を取ってそこからゼロを作り出しています.
その後は数値をインクリメントして文字コードを作り出してアスキーコードを元に変換するという方法です.
追記,これちゃっかりリテラル使ってるので,無しです.代替案考えます.
/**
* @param args
*/
public static void main(String args) {
long hoge = System.currentTimeMillis();
int zero = (int) (hoge - hoge);
int tmp = zero;
int one = ++tmp;
int two = ++tmp;
int three = ++tmp;
int four = ++tmp;
int five = ++tmp;
int base = four * four * four + (four * (four + four));
byte space = (byte) (four * (four + four));
byte h = (byte) (base + two * four);
byte e = (byte) (base + five);
byte l = (byte) (base + four * three);
byte o = (byte) (base + five * three);
byte w = (byte) (base + five * four + three);
byte r = (byte) (base + three * (five + one));
byte d = (byte) (base + four);
byte hello_world = {h,e,l,l,o,space,w,o,r,l,d};
try {
System.out.println(new String(hello_world, "US-ASCII"));
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
}