このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1258158172/211
#  [1] 授業単元:プログラミング演習第一 
#  [2] 問題文: 
#  #include <stdio.h> 
#   
#  int main(void) 
#  { 
#    int t = 6; 
#   
#    if(t >= 6 && t < 12){ 
#      printf("%d時です。おはようございます。\n",t); 
#    }else if (t >= 12 && t < 18) { 
#      printf("%d時です。こんにちは。\n",t); 
#    }else if (t >= 18 && t < 24) || (t >= 0 &&t < 6)){ 
#    printf("%d時です。こんばんは。\n",t); 
#  }else { 
#    printf("%d時は時刻の範囲外です。\n",t); 
#  } 
#  return 0; 
#  } 
#  これのswitch文で書き換えたプログラムを作成しなさい。 
#  ただし、case文の使用は4回を上限とする。 



'switch文を使って条件部分を小さく纏める'(T) :-
    M is T // 6,
    switch(M,(1:おはようございます(T);2:こんにちは(T);3:こんばんは(T))).

おはようございます(T) :-
    write_formatted('%t時です。おはようございます。\n',[T]).
こんにちは(T) :-
    write_formatted('%t時です。こんにちは。\n',[T]).
こんばんは(T) :-
    write_formatted('%t時です。こんばんは。\n',[T]).

switch(N,N:P) :-
    call(P).
switch(N,(N:P;R)) :-
    call(P).
switch(N,(A:P;R)) :-
    \+(N=A),
    switch(N,R).