vector.gravity 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #unittest {
  2. name: "Vector class.";
  3. result: 69;
  4. };
  5. class Vector {
  6. public var x=0;
  7. public var y=0;
  8. public var z=0;
  9. public func init (a, b, c) {
  10. if (!a) a = 0;
  11. if (!b) b = 0;
  12. if (!c) c = 0;
  13. x = a; y = b; z = c;
  14. }
  15. public func + (v) {
  16. if (v is Int) {
  17. return Vector(x+v, y+v, z+v);
  18. } else if (v is Vector) {
  19. return Vector(x+v.x, y+v.y, z+v.z);
  20. }
  21. return null;
  22. }
  23. public func - (v) {
  24. if (v is Int) {
  25. return Vector(x-v, y-v, z-v);
  26. } else if (v is Vector) {
  27. return Vector(x-v.x, y-v.y, z-v.z);
  28. }
  29. return null;
  30. }
  31. public func * (v) {
  32. if (v is Int) {
  33. return Vector(x*v, y*v, z*v);
  34. } else if (v is Vector) {
  35. return Vector(x*v.x, y*v.y, z*v.z);
  36. }
  37. return null;
  38. }
  39. public func / (v) {
  40. if (v is Int) {
  41. return Vector(x/v, y/v, z/v);
  42. } else if (v is Vector) {
  43. return Vector(x/v.x, y/v.y, z/v.z);
  44. }
  45. return null;
  46. }
  47. public func neg() {
  48. return Vector(-x, -y, -z);
  49. }
  50. public func sum() {
  51. return x+y+z;
  52. }
  53. public func String() {
  54. return "[" + x.String() + "," + y.String() + "," + z.String() + "]";
  55. }
  56. }
  57. func main() {
  58. var v1 = Vector(1,2,3); // 1,2,3 (6)
  59. var v2 = Vector(4,5,6); // 4,5,6 (15)
  60. var v3 = v1 + v2; // 5,7,9
  61. var v4 = v2 - v1; // 3,3,3
  62. var v5 = -v4; // -3,-3,-3
  63. var v6 = v4 / v5; // -1,-1,-1
  64. var v7 = v3 + v6; // 4,6,8 (18)
  65. var v8 = v4 * v1; // 3,6,9 (18)
  66. var v9 = v1 + 2; // 3,4,5 (12)
  67. // just trigger this code in order in order to trigger internal test
  68. var test = v9.String();
  69. if (test != "[3,4,5]") return false;
  70. return v1.sum() + v2.sum() + v7.sum() + v8.sum() + v9.sum();
  71. }