CUBE.PAS 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. const
  2. TRYs = 900000;
  3. type
  4. tVec = record
  5. x,y,z : real;
  6. end;
  7. var
  8. Norms : array [1..6] of tVec;
  9. Ds : array [1..6] of real;
  10. count : array [0..63] of word;
  11. j : longint;
  12. P : tVec;
  13. val,i : byte;
  14. begin
  15. with norms[1] do begin x:=1;y:=0; z:= 0; end;
  16. with norms[2] do begin x:=0;y:=1; z:= 0; end;
  17. with norms[3] do begin x:=0;y:=0; z:= 1; end;
  18. with norms[4] do begin x:=-1;y:=0; z:= 0; end;
  19. with norms[5] do begin x:=0;y:=-1; z:= 0; end;
  20. with norms[6] do begin x:=0;y:=0; z:= -1; end;
  21. for i := 1 to 6 do Ds[i] := -1.0;
  22. Fillchar(Count,2*64,0);
  23. randomize;
  24. for j := 0 to TRYs do begin
  25. val := 0;
  26. with p do begin
  27. x := random * 10.0 - 5;
  28. y := random * 10.0 - 5;
  29. z := random * 10.0 - 5;
  30. end;
  31. for i := 1 to 6 do
  32. begin
  33. val := val shl 1;
  34. if (Norms[i].x*p.x + Norms[i].y*p.y + Norms[i].z*p.z + ds[i]) > 0 then inc(val);
  35. end;
  36. inc(count[val]);
  37. end;
  38. Assign(output, 'cube.out');
  39. rewrite(output);
  40. for j := 0 to 63 do
  41. begin
  42. for i := 1 to 6 do Write( (j shr (6-i)) and 1);
  43. Write(' = ',j:2);
  44. WriteLn(' - ', count[j]:5,'=',count[j]/TRYs*100:0:2,'%');
  45. end;
  46. close(output);
  47. end.