Point Distance
module app.main;
import std.core;
import c.stdio as io;
from c.math import sqrt;
struct Point {
x: double;
y: double;
}
extension Point {
fn distance(other: Point) -> double {
let dx = self.x - other.x;
let dy = self.y - other.y;
return sqrt(dx * dx + dy * dy);
}
}
fn main() -> int {
let points = Vec<Point>.create();
points.add(Point(0, 0));
points.add(Point(3, 4));
foreach index, point in points {
let zero = Point(0, 0);
let d = point.distance(zero);
io.printf(
"point %d = %.2f\n",
index,
d
);
}
points.free();
return 0;
}
test "point distance" {
let a = Point(0, 0);
let b = Point(3, 4);
expect(a.distance(b) == 5);
}