(* Standard ML *) fun permutation [] = [[]] | permutation list = let fun revolve [] = [[]] | revolve l = let fun shift 0 _ = [] | shift n (x::xs) = (x::xs) :: (shift (n-1) (xs@[x])) in shift (length l) l end fun permutation' [] = [[]] | permutation' (x::xs) = map (fn y => x::y) (permutation xs) in foldr (op @) [] (map permutation' (revolve list)) end;
(* 実行結果 *) - permutation [1,2,3]; val it = [[1,2,3],[1,3,2],[2,3,1],[2,1,3],[3,1,2],[3,2,1]] : int list list - permutation [1,2,3,4]; val it = [[1,2,3,4],[1,2,4,3],[1,3,4,2],[1,3,2,4],[1,4,2,3],[1,4,3,2],[2,3,4,1], [2,3,1,4],[2,4,1,3],[2,4,3,1],[2,1,3,4],[2,1,4,3],...] : int list list -
program prog1(input, output); var i,n : integer; p : array[1..10] of integer ;
procedure perm(i,n:integer); var j,t :integer; begin if i<n+1 then begin for j:=i to n do begin t:=p[i] ; p[i]:=p[j] ; p[j]:=t ; perm(i+1,n); t:=p[i] ; p[i]:=p[j] ; p[j]:=t ; end; end else begin for j :=1 to n do write(p[ j ],' '); writeln(''); end; end;
begin write('n='); read(n); for i := 1 to n do p[i]:=i; perm(1,n); end.
program prog1(input, output); const pi=3.1415926535; var i:integer; s,c,t:real; begin writeln('deg','sin':8,'cos':10,'tan':10); for i := 0 to 360 do begin s := sin(i*2*pi/360); c := cos(i*2*pi/360); if (i mod 15) = 0 then begin if (i mod 180 = 90) or (c= 0) then writeln(i:3,s:10:5,c:10:5,'-------':10) else writeln(i:3,s:10:5,c:10:5,s/c:10:5) ; end; end; end.
program prog1(input, output); var i ,x1,x2,x3,y1,m1,d1,y2,m2,d2: integer;
function calcd(y,m,d:integer):integer; var i,leapday,years,days,mdays:integer; begin years := y-1; days := d; days := days + years * 365; days := days + trunc (years/4) - trunc (years/100) + trunc (years/400); if ( (y mod 4 =0) and (y mod 100 <>0) and (y mod 400 =0) ) then leapday := 1 else leapday := 0; for i:=1 to m - 1 do begin case i of 1,3,5,7,8,10,12 : mdays := 31; 4,6,9,11 : mdays := 30; 2 : mdays := 28 + leapday ; end; days := days + mdays; end; calcd:=days; end;
begin writeln('next birthday'); write('year=');readln(y1); write('month=');readln(m1); write('day=');readln(d1); writeln('today'); write('year=');readln(y2); write('month=');readln(m2); write('day=');readln(d2); x1:=calcd(y1,m1,d1); x2:=calcd(y2,m2,d2); x3:=x1-x2; write('tanjobi made ',x3,' nichi'); end.
program Mat(input,output,ExtFile); const COL = 4; ROW = 4;
type Matrix = packed array [1..COL,1..ROW] of integer; MatrixFile = file of Matrix;
var ExtFile : MatrixFile; i : 1..COL; j : 1..ROW; InputMatrix : Matrix;
begin rewrite( ExtFile, 'ExtFile' ); for i := 1 to COL do begin for j := 1 to ROW do begin write( '[', i, ',', j, ']?:' ); readln( InputMatrix[i,j] ) end end; write( ExtFile, InputMatrix ) end.
>>875 動作確認なんてしてないから間違ってたらすまん 改行大杉って怒られたんでつめて書く type TMatrix3x3 = array[0..2][0..2]of Double; function det3x3(Mat:TMatrix3x3):Double; var i,j:Integer; hoge:Extended; begin Result:=0; //Plus for i:=0 to 2 do begin hoge:=1;
for j:=0 to 2 do hoge:=hoge*Mat[j][(i+j)mod 3];
Result:=Result+hoge;
end; //Minus for i:=0 to 2 do begin hoge:=1; for j:=0 to 2 do