このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1307166756/751
#  [1] 授業単元:文字列  
#  [2] 問題文(含コード&リンク):  
#  1行最大80文字の空白を挟まない英字文字列を入力したとき、大文字の文字を小文字に、小文字の文字を大文字にして表示するプログラムを作成しなさい 
#  このプログラムの入力は、英字以外の文字が入力される場合を考慮しなくてもよい  
#  

'1行最大80文字の空白を挟まない英字文字列を入力したとき、大文字の文字を小文字に、小文字の文字を大文字にして表示する' :-
        '1行最大80文字の空白を挟まない英字文字列を入力したとき(Line),
        '大文字の文字を小文字に、小文字の文字を大文字にして表示する'(Line).

'1行最大80文字の空白を挟まない英字文字列を入力したとき'(Line) :-
        get_line(Line1),
        最大80文字の空白を挟まない英字文字列(Line1,Line),!.

最大80文字の空白を挟まない英字文字列(Line1,Line) :-
        findall(Char,(
                        subatom(Line1,_,1,_,Char),
                        \+(Char=' ')),
                L1),
        最大80文字(L1,Line).

最大80文字(L,Line) :-
        Length =< 80,
        concat_atom(L,Line).
最大80文字(L,Line) :-
        Length > 80,
        length(L0,80),
        append(L0,_,L),
        concat_atom(L0,Line).

'大文字の文字を小文字に、小文字の文字を大文字にして表示する'(Line) :-
        atom_codes(Line,Codes),
        append(_,[Code|R],Codes),
        '大文字コードを小文字コードに、小文字コードを大文字コードに変換'(Code,Code2),
        put_code(Code2),
        R = [],
        write('\n').                

'大文字コードを小文字コードに、小文字コードを大文字コードに変換'(Code,Code2) :-
        Code >= 65,
        Code =< 90,
        Code2 is Code + 32,!.

'大文字コードを小文字コードに、小文字コードを大文字コードに変換'(Code,Code2) :-
        Code >= 97,
        Code =< 122,
        Code2 is Code - 32,!.