```I'm doing a little cheating here, and may have severely wimped out.
Not only did I fail to meet the actual requirements of the quiz, but
also ignored the unit test (well, not completely).  I was going to
--and may still-- use dot products some other day to show off my
meager knowledge of math and allow myself to enter valhalla.  I'm not
here for prosperity, so, anyways, my one-liner to satisfy the quiz was
atrocious.  To replace it, I'll use this for now...

require 'mathn'
puts 0.5 * Matrix[[28.0, 23.0, 1.0], [-46.0, 31.0, 1.0], [-39.0, 5.0,
1.0]].det.abs

=> 934.0

That's probably the easiest way.

Doing a redneck modify to the test data structure...

require 'mathn'
arr = [
[[-42, 4, 1], [-26, -34, 1], [  2,   8, 1]],
[[ 45, -44, 1], [  1,  43, 1], [ 42,  48, 1]],
[[-24,  29, 1], [ 42,  -1, 1], [ 10,  43, 1]],
[[ 48, -19, 1], [-19,  37, 1], [-15,  36, 1]],
[[-10, -40, 1], [-35, -19, 1], [  1,  33, 1]],
[[ 28,  23, 1], [-46,  31, 1], [-39,   5, 1]],
[[-32,  17, 1], [-50,  -8, 1], [-39,  27, 1]],
[[ 40, -19, 1], [ 39, -34, 1], [-37, -15, 1]],
[[ 47, -34, 1], [ 26, -37, 1], [ 50,  -7, 1]],
[[-49,  46, 1], [ 29,  46, 1], [  5, -34, 1]],
]
arr.each do |a|
puts 0.5 * Matrix[*a].det.abs
end

<output/>
868.0
1893.5
972.0
78.5
1028.0
934.0
177.5
579.5
279.0
3120.0

It's not "application worthy", but I wasn't shooting for that.  I'm
also not sure if you might have to use Floats in the array above or
not, because it passes the test given Integers.

I wrote some code that attempts to build a random array, but I'm
embarrassed to show it; and also the Vector into Matrix code I used
looks ugly.

I wrote that snippet of code before going to wikipedia.  I had this
feeling originally that I should attempt something like Heron's idea,
but didn't have the time.

I suppose another way to approach it could be to use a matrix
transformation to get your 'base' (turn the triangle, or the
coordinate system; however you prefer to see it) and use a simple
1/2(b*h).

Non-euclidean would be an interesting extra credit.

Todd

```