In R:

norm = function(v) v/sqrt(sum(v^2))

:)


   Juan Pablo




2008/12/10 Arnaud Delobelle <[EMAIL PROTECTED]>:
> "Dotan Cohen" <[EMAIL PROTECTED]> writes:
>
>> 2008/12/10  <[EMAIL PROTECTED]>:
>>> On Dec 5, 9:51 am, Xah Lee <[EMAIL PROTECTED]> wrote:
>>>>
>>>> For those of you who don't know linear algebra but knows coding, this
>>>> means, we want a function whose input is a list of 3 elements say
>>>> {x,y,z}, and output is also a list of 3 elements, say {a,b,c}, with
>>>> the condition that
>>>>
>>>> a = x/Sqrt[x^2+y^2+z^2]
>>>> b = y/Sqrt[x^2+y^2+z^2]
>>>> c = z/Sqrt[x^2+y^2+z^2]
>>>
>>>>
>>>> In lisp, python, perl, etc, you'll have 10 or so lines. In C or Java,
>>>> you'll have 50 or hundreds lines.
>>>
>>> Ruby:
>>>
>>> def norm a
>>>  s = Math.sqrt(a.map{|x|x*x}.inject{|x,y|x+y})
>>>  a.map{|x| x/s}
>>> end
>>
>> If someone doesn't counter with a Python one-liner then I'm going to
>> port that to brainfuck.
>
> def unit(v):
>    return map((sum(map(lambda x:x*x, v))**0.5).__rdiv__, v)
>
> The hard bit was to make it less readable than the Ruby version ;)
>
> --
> Arnaud
> --
> http://mail.python.org/mailman/listinfo/python-list
>
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to