このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1267796762/617
#  【 課題 】 http://ime.nu/ideone.com/fWVjI 
#  【 形態 】1. Javaアプリケーション  
#  【 期限 】本日 
#  【 補足 】よろしくお願いします! 
# 
# 
#  1 課題
#  10 進数の自然数を与えて、その数を2 進数から16 進数まで全てについて基数変換するクラスKisu を作成
#  する。クラスKisu には、属性、コンストラクタ、setter、getter、その他必要なメソッド、基数変換した結果
#  を表示するメソッドを必ず入れること。ただし、getter で基数変換した結果を別の変数に代入し、その変数の
#  内容を変更しても、クラスKisu 内の基数変換の内容は変わらないようにする。
#   クラスKisu の例
#  class Kisu {
#  // 属性
#  private static final int N = 15;
#  // 2 進数から16 進数までの数
#  private int m; // 基数変換する数
#  private String [] kisu1;
#  // 基数変換した結果を入れる1 次元配列
#  private String [][] kisu2;
#  // 基数変換した結果を入れる2 次元配列
#  // コンストラクター
#  public Kisu() {...}
#  public Kisu(int m) {...}
#  // setter
#  public void setM(int m) {
#  // 基数変換する数を代入する
#  }
#  public void setKisu() {
#  // 変数m を2 進数から16 進数に変換し、
#  // その結果を変数kisu1、kisu2 に代入する
#  }
#  // 必要があれば他のメソッドを付け加える
#  // getter
#  1
#  public String[] getKisu1() {
#  // 変数kisu1 を外部の変数に代入する
#  }
#  public String[][] getKisu2() {
#  // 変数kisu2 を外部の変数に代入する
#  }
#  // 表示用のメソッド
#  public void show1() {
#  // 変数kisu1 の内容を画面に表示する
#  }
#  public void show2() {
#  // 変数kisu2 の内容を画面に表示する
#  }
#  }
#  2 実行例
#  main 関数を
#  class Rep3 {
#  public static void main(String[] args){
#  Kisu a = new Kisu();
#  // 基数変換する数をセットし、変換する
#  a.setM(12345678);
#  a.setKisu();
#  // main プログラムの変数b に代入し、その変数b
#  // にでたらめなデータを代入する
#  String [] b = a.getKisu1();
#  int k = b.length;
#  for(int i=0;i javac Rep3.java
#  > java Rep3
#  1 次元配列
#  101111000110000101001110 // 2 進数
#  212020020002100      // 3 進数
#  233012011032        // 4 進数
#  11130030203 // 5 進数
#  1120335530 // 6 進数
#  206636142 // 7 進数
#  57060516 // 8 進数
#  25206070 // 9 進数
#  12345678 //10 進数
#  6a72544 //11 進数
#  41745a6 //12 進数
#  2733447 //13 進数
#  18d5222 //14 進数
#  113cea3 //15 進数
#  bc614e //16 進数
#  2 次元配列
#  101111000110000101001110 // 2 進数
#  212020020002100      // 3 進数
#  233012011032       // 4 進数
#  11130030203 // 5 進数
#  1120335530 // 6 進数
#  206636142 // 7 進数
#  57060516 // 8 進数
#  25206070 // 9 進数
#  12345678 //10 進数
#  6a72544 //11 進数
#  41745a6 //12 進数
#  2733447 //13 進数
#  18d5222 //14 進数



基数進数(_基数,_対象自然数,_基数進数表現) :-
        \+(var(_対象自然数)),
        length(_基数ならび,_基数),
        length(_対象自然数のおおいさ,_対象自然数),
        ならびによる基数進数(_基数ならび,_対象自然数のおおいさ,_基数進数表現ならび),
        基数進数表現(_基数進数ならび,_基数進数表現ならび),
        concat_atom(_基数進数表現ならび,_基数進数表現),!.
基数進数(_基数,_対象自然数,_基数進数表現) :-
        var(_対象自然数),
        length(_基数ならび,_基数),
        atom(_基数進数表現),
        atom_chars(_基数進数表現,_基数進数表現ならび),
        基数進数表現(_基数進数ならび,_基数進数表現ならび),
        ならびによる基数進数(_基数ならび,_対象自然数のおおいさ,_基数進数ならび),
        length(_対象自然数のおおいさ,_対象自然数),!.

基数進数(_基数,_対象自然数,_基数進数表現) :-
        length(_基数ならび,_基数),
        length(_対象自然数のおおいさ,_対象自然数),
        ならびによる基数進数(_基数ならび,_対象自然数のおおいさ,_基数進数ならび),
        基数進数表現(_基数進数ならび,_基数進数表現ならび),
        concat_atom(_基数進数表現ならび,_基数進数表現).

ならびによる基数進数(_基数ならび,_対象自然数のおおいさ,_基数進数ならび) :-
        反転ならびによる基数進数(_基数ならび,_対象自然数のおおいさ,_反転した基数進数ならび),
        reverse(_反転した基数進数ならび,_基数進数ならび),!.
        
反転ならびによる基数進数(_,[],[]) :- !.
反転ならびによる基数進数(Ln,L1,[Mod|R]) :-
        ならび割り算(L1,Ln,L2,Mod),
        反転ならびによる基数進数(Ln,L2,R).

基数進数表現([],[]) :- !.
基数進数表現([L|R1],[A|R2]) :-
        基数進数の一桁の文字表現(L,A),
        基数進数表現(R1,R2).

基数進数の一桁の文字表現([],'0') :- !.
基数進数の一桁の文字表現([_],'1') :- !.
基数進数の一桁の文字表現([_,_],'2') :- !.
基数進数の一桁の文字表現([_,_,_],'3') :- !.
基数進数の一桁の文字表現([_,_,_,_],'4') :- !.
基数進数の一桁の文字表現([_,_,_,_,_],'5') :- !.
基数進数の一桁の文字表現([_,_,_,_,_,_],'6') :- !.
基数進数の一桁の文字表現([_,_,_,_,_,_,_],'7') :- !.
基数進数の一桁の文字表現([_,_,_,_,_,_,_,_],'8') :- !.
基数進数の一桁の文字表現([_,_,_,_,_,_,_,_,_],'9') :- !.
基数進数の一桁の文字表現([_,_,_,_,_,_,_,_,_,_],'A') :- !.
基数進数の一桁の文字表現([_,_,_,_,_,_,_,_,_,_,_],'B') :- !.
基数進数の一桁の文字表現([_,_,_,_,_,_,_,_,_,_,_,_],'C') :- !.
基数進数の一桁の文字表現([_,_,_,_,_,_,_,_,_,_,_,_,_],'D') :- !.
基数進数の一桁の文字表現([_,_,_,_,_,_,_,_,_,_,_,_,_,_],'E') :- !.
基数進数の一桁の文字表現([_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],'F') :- !.
基数進数の一桁の文字表現(L,A) :-
        append([_,_,_,_,_,_,_,_,_,_],L1,L),
        length(L1,N),
        N < 17,
        N2 is N + 65,
        char_code(A,N2),!.
基数進数の一桁の文字表現(L,A) :-
        append([_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_],L1,L),
        length(L1,N),
        N < 27,
        N2 is N + 97,
        char_code(A,N2),!.