From a901e85c3c995bbb4365fa9cb2ffca8ca9320b51 Mon Sep 17 00:00:00 2001 From: Paul Chaignon Date: Sun, 1 Feb 2015 21:50:34 +0100 Subject: [PATCH] Sample for J --- samples/J/stwij.ijs | 73 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 samples/J/stwij.ijs diff --git a/samples/J/stwij.ijs b/samples/J/stwij.ijs new file mode 100644 index 00000000..453af90b --- /dev/null +++ b/samples/J/stwij.ijs @@ -0,0 +1,73 @@ +NB. From "Continuing to write in J". +NB. See http://www.jsoftware.com/help/jforc/continuing_to_write_in_j.htm + +empno=: 316 317 319 320 +payrate=: 60 42 44 54 +billrate=: 120 90 90 108 +clientlist=: 10011 10012 10025 +emp_client=: 10012 10025 10012 10025 +hoursworked=: 4 31 $ 8 0 3 10 9 8 8 9 4 0 8 7 10 10 12 9 0 6 8 9 9 9 0 0 10 11 9 7 10 2 0 8 0 0 9 9 8 9 10 0 0 8 8 10 7 10 0 0 7 8 9 8 9 0 4 9 8 9 8 9 0 0 5 0 0 8 9 9 9 9 0 0 8 7 0 0 9 0 2 10 10 9 11 8 0 0 8 9 10 8 9 0 0 9 0 0 9 10 8 6 6 8 0 9 8 10 6 9 7 0 6 8 8 8 9 0 5 8 9 8 8 12 0 0 + +NB. Finds the number of hours each employee worked in the given month. +emphours=: 3 : '+/"1 hoursworked' + +NB. Determines the wages earned by each employee in the given month. +empearnings=: 3 : 'payrate * +/"1 hoursworked' + +NB. Determines the profit brought in by each employee. +empprofit=: 3 : 0 +(billrate - payrate) * +/"1 hoursworked +) + +NB. Returns the amount to bill a given client. +billclient=: 3 : 0 +mask=. emp_client = y ++/ (mask # billrate) * +/"1 mask # hoursworked +) + +NB. Finds for each day of the month the employee who billed the most hours. +dailydrudge=: 3 : 0 +((|: hoursworked) i."1 0 >./ hoursworked) { empno +) + +NB. Returns the employees, in descending order of the profit brought in by each. +producers=: 3 : 'empno \: empprofit 0' + +NB. Returns the clients, in descending order of the profit generated by each. +custbyprofit=: 3 : 0 +clientlist \: +/ (clientlist ="1 0 emp_client) * empprofit 0 +) + +NB. Calculates withholding tax on each employee's earnings. +renderuntocaesar=: 3 : 0 +bktmin=. 0 6000 10000 20000 NB. Four brackets, 0..6000..10000..20000.._ +bktrate=. 0.05 0.10 0.20 0.30 +bktearns=. 0 >. ((1 |.!._ bktmin) <."1 0 empearnings'') -"1 bktmin ++/"1 bktrate *"1 bktearns +) + +NB. Main + +echo 'Problem 1' +echo emphours'' + +echo 'Problem 2' +echo empearnings'' + +echo 'Problem 3' +echo empprofit'' + +echo 'Problem 4' +echo billclient 10025 + +echo 'Problem 5' +echo dailydrudge'' + +echo 'Problem 6' +echo producers'' + +echo 'Problem 7' +echo custbyprofit'' + +echo 'Problem 8' +echo 0j2 ": renderuntocaesar''