A hook can save recomputation. (computation with original data and reused me) (resuse me)
test=: [: %: ([: -: +/) * [: */ ([: -: +/) - ] NB. play with the half factor f=: 4 %~ [: %: [: */ (([ , (- +:))~ +/) NB. shorter NB. c o m p u t a t i o n r e u s e g=: ([: %: [: */ [ , -)~ ([: -: +/) g2=: ([: %: [: */ [ , -)~ -:@:(+/) %/ (g , test) 3?@:$0 1 On 09/04/2018 08:00 AM, [email protected] wrote:
Date: Tue, 04 Sep 2018 11:50:43 +0000 From: Martin Kreuzer<[email protected]> To:[email protected] Subject: [Jprogramming] Tacit form: How to handle intermediate result..? Message-ID: <[email protected]> Content-Type: text/plain; charset="us-ascii"; format=flowed Hi all - To calculate the area of a flat triangle, using Heron's formula, A(a,b,c)= sqrt( s2*(s2-a)*(s2-b)*(s2-c) ) I wrote a simple function doing this: * get the three sides (as list input y) * compute the half perimeter s2 * build the differences s2-y * build product * take square root My explicit solution looks like this taher=: 13 : '%: s2 * */ s2-y [ s2=. -: +/ y' and works taher 3 4 5 6 Suggested tacit version looks like this (and works too) tahert=: [: %: ([: -: +/) * [: */ ([: -: +/) - ] Q: Is there a way to reference the intermediate result of ([: -: +/) the half perimeter s2 within the tacit expression, as has been done in the explicit..? [Guess the interpreter takes care of this anyway; my question aims at whether a shorter formulation could be reached.] Thanks -M
---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
