3 5 (0=|)"0 1 i.10
1 0 0 1 0 0 1 0 0 1
1 0 0 0 0 1 0 0 0 0

   3 5 (0  ([: +./ =) |"0 1) i.10
1 0 0 1 0 1 1 0 0 1

   3 5 (] #~   0  ([: +./ =) |"0 1) i.10
0 3 5 6 9

   +/ 3 5 (] #~  0 ([: +./ =) |"0 1)  i.1000
233168



----- Original Message -----
From: Jon Hough <[email protected]>
To: "[email protected]" <[email protected]>
Cc: 
Sent: Tuesday, April 8, 2014 11:30:22 AM
Subject: [Jprogramming] Euler Project Problem 1

Euler Project  #1 is:If we list all the natural numbers below 10 that are 
multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. 
Find the sum of all the multiples of 3 or 5 below 1000.
In C/Java I could easily do something like:
int total =0;
for (int counter = 0; counter < 1000; counter ++ ){if(counter %3 = 0 || counter 
%5 = 0){    total += counter;}}
return counter;

The main features here being the if statement and the for-loop.
Obviously in J things need to be done differently. Here is my first attempt:
div3 =. 0&(="0)@:( 3&|) NB. is residue zerodiv5 =. 0&(="0)@:( 5&|)
div3or5 =. div3"0 +."0 div5"0
dummy =. 1&*"0 NB. You'll see why I need this...
result =.  dummy * div3or5
NB. final result is:
+/result i.1000

I used dummy because I wanted to do something like  multiply the value of y by 
"div3or5 y" so only multiples of 3 or 5 would be nonzero. 
Before attempting this problem I assumed it could be done in only one line and 
am pretty unhappy by my long solution. Any help explaining where I have gone 
wrong, or why my attempt at a fork is silly would be appreciated.
Thanks in advance,
Jon


----------------------------------------------------------------------
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