mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			74 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			J
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			J
		
	
	
	
	
	
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''
 |