数字,文字リテラルを使わずに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();
		}
	}