>>846
% Prolog
t846 :-
  t846_入力(_整数ならび,_ローテーションする数),
  length(_整数ならび,_入力した要素数),
  t846(_ローテーションする数,_入力した要素数,_整数ならび,_ローテーションした整数ならび),
  concat_atom(_ローテーションした整数ならび,',',S),
  write_formatted('ローテーションした整数列 %t です\n',[S]),!.
t846.

t846(_ローテーションする数,_入力した要素数,_整数ならび,X) :-
  _入力した要素数>0,_入力した要素数<11,
  ならびの回転(右方向,_ローテーションする数,L,X),!.
t846(_ローテーションする数,_入力した要素数,L,X) :-
  \+((_入力した要素数>0,_入力した要素数<11)),
  write_formatted('入力した要素数が適切でありません %t 個\n',[_入力した要素数]),
  fail.

t846_入力(_ローテーションする数,_入力した要素数,_整数ならび,X) :-
  write('整数をカンマで区切り最大10個まで入力してください : '),
  get_line(Line),
  split(Line,[','],_整数ならび),
  write('ローテーションする数を入れてください : '),
  get_integer(_ローテーションする数),!.

ならびの回転(右方向,1,L1,L2) :- append(L0,[A],L1),append([A],L0,L2).
ならびの回転(右方向,N,L1,L2) :- N > 1,append(L0,[A],L1),append([A],L0,L3).