このディレクトリの索引
#  出題場所 :: http://toro.2ch.net/test/read.cgi/tech/1357191974/534
#  お題:与えられた正の整数を2進文字列表現で出力せよ。 
#   
#  回答例およびチェック用出力例: c 
#  #include <stdio.h> 
#  #include <limits.h> 
#  void printbits(unsigned int n) { 
#   int i; 
#   for (i = sizeof (int) * 8 - 1; 0 <= i; i--) { 
#    printf("%c", n & (1 << i) ? '1' : '0'); 
#   } 
#   puts(""); 
#  } 
#  void check(unsigned int n) { 
#   printf("%u\n", n); 
#   printbits(n); 
#  } 
#  int main() { 
#   check(0); 
#   check(1); 
#   check(UINT_MAX); 
#   return 0; 
#  } 
#  ↓ 
#  0 
#  00000000000000000000000000000000 
#  1 
#  00000000000000000000000000000001 
#  4294967295 
#  11111111111111111111111111111111 
# 
# 

'与えられた正の整数を2進文字列表現で出力せよ。'(_正の整数) :-
        与えられた正の整数を2進文字列表現で(_正の整数,[],_2進文字列表現),
        出力せよ(_2進文字列表現).

与えられた正の整数を2進文字列表現で(0,L,_2進文字列表現) :-
        atomic_list_concat(L,_2進文字列表現),!.
与えられた正の整数を2進文字列表現で(_正の整数,L,_2進文字列表現) :-
        _2で割った商 is _正の整数 // 2,
        _2で割った剰余 is _正の整数 mod 2,
        与えられた正の整数を2進文字列表現で(_2で割った商,[_2で割った剰余|L],_2進文字列表現).

出力せよ(_2進文字列表現) :-
        writef('%t\n',[_2進文字列表現]).