heap.gravity 1.5 KB

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