sqrt1=: (] -:@+ %)^:_~
   x -: *: sqrt1 x=: 100 ?@$ 1000
1
   x -: *: sqrt1 x=: 100 ?@$ 0
1




On Thu, Dec 12, 2013 at 1:31 PM, Roger Hui <[email protected]>wrote:

> Ooops.  A longer but correct solution.  Can probably be shortened.
>
>    sqrt=: (0.5 * ] + %)^:_ ~
>    sqrt 3
> 1.73205
>    sqrt 17
> 4.12311
>
>
>
>
> On Thu, Dec 12, 2013 at 1:29 PM, Roger Hui <[email protected]>wrote:
>
>>    sqrt=: -:@(+%)^:_~
>>    sqrt 3
>> 1.78078
>>    sqrt 17
>> 8.55842
>>
>>
>>
>> On Thu, Dec 12, 2013 at 1:22 PM, William Tanksley, Jr <
>> [email protected]> wrote:
>>
>>> I'm clueless -- how would you implement one of the more formally
>>> correct solutions (Newton's, Babylonian, exhaustive search, or random
>>> probing)? K did pretty well.
>>>
>>> -Wm
>>>
>>>
>>> On Thu, Dec 12, 2013 at 11:09 AM, Dan Bron <[email protected]> wrote:
>>> > There is a stack exchange dedicated to code golfing,
>>> > http://codegolf.stackexchange.com/ . During free moments at work, I
>>> find
>>> > posting J solutions is a good way to relieve stress.
>>> >
>>> > Today I came across a competition to reimplement square root in as few
>>> > characters as possible [1]. Most languages copped out and simply
>>> restated
>>> > sqrt as ^&0.5 to minimize their golf score.  (I did this too, to allow
>>> > apples-to-apples comparisons).
>>> >
>>> > But the C++ entry caught my eye:  exp(log(x)/2)) .  This is an
>>> interesting
>>> > approach, and gives us an opportunity to highlight some of the
>>> advantages
>>> > of J's notaton. Leaving aside the question of syntax, even expressing
>>> the
>>> > 4 primitives in that expression (exp, log, x, 2) would cost most
>>> languages
>>> > 8 characters.  But not in J.  In J, we do NOT need:
>>> >
>>> >    - To name variables (so no "x")
>>> >    - To name the constant 2 (in this particular case)
>>> >    - To delimit functions from arguments using parentheses
>>> >    - To explicitly instruct the intreprter to undo the log by typing
>>> "exp".
>>> >
>>> > This last freebie is perhaps the most satisfying.  We just tell the
>>> > interpreter that we want to operate "log space", and let J figure out
>>> the
>>> > exp for itself.
>>> >
>>> >    -:&.^.
>>> >
>>> > Six characters.  Less than it takes to write "log" and "exp" separated
>>> by a
>>> > single space!
>>> >
>>> > -Dan
>>> >
>>> > [1]
>>> >
>>> http://codegolf.stackexchange.com/questions/73/reimplementing-square-root/15856
>>> >
>>> > ----------------------------------------------------------------------
>>> > For information about J forums see http://www.jsoftware.com/forums.htm
>>> ----------------------------------------------------------------------
>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>>
>>
>>
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to