きしだのはてな このページをアンテナに追加 RSSフィード

2007-03-24(土)

[]凄いバカなプログラムを作ろう 09:20 凄いバカなプログラムを作ろうを含むブックマーク

凄い&バカなプログラムを作ろう企画。

やってみると結構楽しくなってきた。

プログラムって楽しい。


で、今回は「int型の配列を並べ替えて表示」

つまり

print(new int[]{14, 13, 71, 2, 24, 19});
print(new int[]{3, 2});
print(new int[]{5});
print(new int[]{});
print(null);

とすると

2 13 14 19 24 71
2 3
5
空です
nullです

と表示するprintメソッド。

で、今回の制限は

・while, if, switch, try, throws, 3項演算子は使わない

・forは1回だけ。形は問わない。使わないほうがえらい。

APIjava.langの範囲で。System.out.println/print/printfはOKです。

・できたコードが面白くなるなら上記の制約は無し。

条件分岐はふじたさんのコードが参考になるかと。

ふじたふじた 2007/03/24 09:24 リファクタリング後のコードのほうが参考になりますよ
http://tockri.blog78.fc2.com/blog-entry-42.html

ZhiZhi 2007/03/24 22:39 /*
 * また一番乗りですね。
 * おばかとは何かがいまいちよくわかりませんが。
 * 今回は仕様どおりにしました。
 *
 * タブレットPC欲しいです。
 */

package obaka_02;

/**
 *
 * @author Zhi
 */
public class Main {
    
    /** Creates a new instance of Main */
    public Main() {
    }
    
    public void mySort(int[] arg) {
        try {
            java.util.Arrays.sort(arg);

            Integer[] buff = new Integer[arg.length];
        
            for (int i = 0; i < arg.length; ++ i) {
                buff[i] = new Integer(arg[i]);
            }
        
            String temp = java.util.Arrays.deepToString(buff);
            System.out.println(temp.equals(”[]”) ? ”空です。” : temp);
        } catch (NullPointerException e) {
            System.out.println(”nullです。”);
        }
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Main obj = new Main();
        
        obj.mySort(new int[] { 3, 2, 1, 0, -1 });
        obj.mySort(new int[] {});
        obj.mySort(null);
    }
    
}

nowokaynowokay 2007/03/25 00:23 java.util.Arraysはだめですよう。

keisenkeisen 2007/03/25 03:04 書いてみました^^
偉い方が嬉しいのでforを使うのも止めました.
こんなバカなコードを書くことはもう無いと思います(笑

http://keisen.dip.jp/diary/2007/03/25/index.html#000118

ZhiZhi 2007/03/25 05:35 どうも済みません。java.langだけなのですね。Arrays禁止だったら
本当にどうしましょう。

keisenkeisen 2007/03/25 10:13 ソースコードへのリンクがわかりずらいと言われたので,一応,こちらにも貼らせてください.
[http://keisen.dip.jp/diary/PrintTest.java]

keisenkeisen 2007/03/25 17:54 質問です.
配列の中に同じ数値が格納されている場合も考慮しますか?

nowokaynowokay 2007/03/25 23:19 お、考えてなかった。考慮したほうがえらいってことで。

ふじたふじた 2007/03/25 23:41 新しいソートアルゴリズム考えちゃった。
同じ数値が入ってても動きますよ。ちょーっとときどき間違うかもしんないけどな!
http://tockri.blog78.fc2.com/blog-entry-44.html

nowokaynowokay 2007/03/26 01:39 try〜catchがあるけど、できたコードがバカらしいのでおっけーです

ZhiZhi 2007/03/26 09:50 え、tryもいけない?
確かにそう書いてありますね^^;

ふじたふじた 2007/03/26 11:39 あっ、しまった!catchしないように…うわーできない。sleepが割り込まれたら死んじゃっても構わないのにー

みずしまみずしま 2007/03/26 17:56 書いてみました。正攻法?なので、イマイチ面白みには欠けるかも
しれません…。

みずしまみずしま 2007/03/26 18:04 すいません。URL書き忘れてました。
http://www.coins.tsukuba.ac.jp/~i021216/diary/?date=20070326

keisenkeisen 2007/03/26 22:18 ソート時の値の重複に対応しました.
サイト->http://keisen.dip.jp/diary/2007/03/26/#000119
コード->http://keisen.dip.jp/diary/PrintTest_ver02.java

ふじたふじた 2007/03/27 14:41 Boolean.toString()っていうコードがあちこちに伝染していく様はガン細胞のようですね…

nowokaynowokay 2007/03/27 15:32 じゃあ、次のお題はそれもなしで行きましょうか( ̄ー ̄ )

Horiuchi_HHoriuchi_H 2007/03/27 15:40 結局、以下に条件分岐を行うかてところに帰着してますよね。
今、一つ新たなアイデアが浮かびました^^

keisenkeisen 2007/03/27 16:50 BooleanをtoString()するのではなく,hashCode()しても固定値が取得できるので,それをうまく使えばできますね(^^)
新If対応後:http://keisen.dip.jp/diary/PrintTest_ver03.java