image

  • フォト Amazonギフト券
    ※この時計の時刻は、閲覧しているパソコンのものであり、必ずしも正確な時間とは限りません

検索

最近のトラックバック

無料ブログはココログ

« 2007年12月13日 | トップページ | 2007年12月16日 »

2007年12月15日

2007-12-15

doukaku.org の 自然数の分割

doukaku.org の 自然数の分割 を読んだ。

java, ruby, swi-prolog ですべて同じ出力を得るようにしてみた。

$ cat PartNumber.java
// See http://ja.doukaku.org/89/lang/java/
//    javac PartNumber.java
//    java -cp . PartNumber 5 3

public class PartNumber {
    public static void main(String[] args) throws Exception {
        part("", Integer.parseInt(args[0]), Integer.parseInt(args[1]));
    }
    private static void part(String s, int n, int m) {
        if (m == 1) {
            System.out.println("[" + s + n + "]");
        } else for (int i = n; i >= 0; i--) {
            part(s + i + ", ", n - i, m - 1);
        }
    }
}

$ cat PartNumber.rb
# http://ja.doukaku.org/89/lang/ruby/
#   ruby PartNumber.rb
#   jruby PartNumber.rb

def divNat(n, m, acc = [])
  if m == 1
    p acc << n
    return
  end
  n.downto(0) {|i|
    divNat(n-i, m-1, acc[0..-1] << i)
  }
end

divNat(5,3)

$ cat PartNumber.pl
% http://ja.doukaku.org/89/lang/prolog/
%   swipl -c PartNumber.pl

partNum(N, 1, [N]).
partNum(N, M, [J|L]) :- M > 1, M1 is M - 1,
    between(0, N, I), J is N - I, partNum(I, M1, L).

solve(N,M) :- forall(partNum(N, M, L), writeln(L)).

:- solve(5, 3).

$ java -cp . PartNumber 5 3
[5, 0, 0]
[4, 1, 0]
[4, 0, 1]
...
ruby PartNumber.rb      
[5, 0, 0]
[4, 1, 0]
[4, 0, 1]
...
$ swipl -s PartNumber.pl
[5, 0, 0]
[4, 1, 0]
[4, 0, 1]
...

erlang 版が、まだ dokkau,org には登録されていないな。
作れるかな?
ここでは、[4,1,0], [4,0,1] など組み合わせ的には同じものを区別している。
これらを同じとみなした場合の組み合わせとしての一覧出力するようにするには
どう書けば良い?

ピックアップ: 「50%の完成度で世に出す」時代の終わり, コンピュUSAの閉店とアップルストアの盛況, etc...

google.com.jp での "xfy" 検索で、このブログの記事は 1000 位以内にも現れなくなった...
google blog サーチで "katoy" を検索しても 12/2 以降の記事はヒットしない...
検索結果に現れるようにするには何をすればよいのか?
最近変えたことといえば サイドバーの 映画/演劇一覧表示をやめたことがある。
ページにあるリンク数が多すぎるのは google 検索にとってマイナスと思ったからだ。
まさか、それがマイナス効果だった?
あるいは最近の投稿記事中のなにか良くない言葉が含まれていたりしたのかなぁ...

- http://ja.doukaku.org/19/lang/prolog/
> > XMLから情報を取り出す

- http://www.ibm.com/developerworks/jp/java/library/j-jtp11137.html
> > Java の理論と実践: フォークを活用する
> > Java 7 で登場するフォーク/ジョインのフレームワークを使って細粒度並列処理の活用方法を学ぶ

- http://www.oreillynet.com/pub/a/ruby/2007/12/04/creating-games-in-ruby.html
> > O'Reilly Network -- Creating Games in Ruby (Part 1)

- http://builder.japan.zdnet.com/info/story/0,3800082847,20363057,00.htm
> > builder創刊のご挨拶 - builder by ZDNet Japan

- http://builder.japan.zdnet.com/news/story/0,3800079086,20363002,00.htm
> > Java 6 on OS X:SoyLatte 1.0 - builder by ZDNet Japan

- http://pc.nikkeibp.co.jp/article/NPC/20071213/289453/
> > コンピュUSAの閉店とアップルストアの盛況:日経パソコンオンライン

- http://d.hatena.ne.jp/bleutruth/20071213/1197574883
> > CSVからデータを取り出す - BleuTruthProgram

- http://akihitok.typepad.jp/blog/2007/12/50_5231.html
> > POLAR BEAR BLOG: 「50%の完成度で世に出す」時代の終わり?

- http://d.hatena.ne.jp/technohippy/20071213#1197559933
> > こさめちゃん - ずっと君のターン:  MapReduce

« 2007年12月13日 | トップページ | 2007年12月16日 »

mokuji

2013年12月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

google

  • twitter
  • __
  • _
    Googleボットチェッカー

合わせて読む

  • 合わせて読む
    フィードメーター - katoy: cocolog あわせて読みたい

リンク