Project Euler problem 28

Post date: Aug 27, 2009 8:15:38 AM

DROP TABLE row

CREATE TABLE row(n INT, x1 BIGINT, y1 BIGINT, x2 BIGINT, y2 BIGINT);

GO

DROP FUNCTION calcx1

GO

CREATE FUNCTION calcx1(@n INT) RETURNS BIGINT

AS

BEGIN

DECLARE @sum BIGINT

SET @sum = 0

WHILE @n > 0

BEGIN

SET @sum = @sum + (8 * @n)

SET @n = @n - 1

END

RETURN @sum + 1

END

GO

DECLARE @num INT

SET @num = 1

DECLARE @x1 BIGINT

DECLARE @y1 BIGINT

DECLARE @x2 BIGINT

DECLARE @y2 BIGINT

WHILE @num < 500

BEGIN

SET @x1 = dbo.calcX1(@num)

SET @y1 = (SELECT @x1 - ((8 * @num) / 2) AS y1)

SET @x2 = (SELECT @x1 - (@num * 2))

SET @y2 = (SELECT @y1 - (@num * 2))

INSERT INTO row(n, x1, y1, x2, y2) VALUES(@num, @x1, @y1, @x2, @y2)

SET @num = @num + 1

END

SELECT * FROM row

SELECT SUM(x1) + SUM(y1) + SUM(x2) + SUM(y2) + 1 AS answer FROM row