I am profiting from a foray into Python, which, it is claimed, is much more
easily understood than J. Some people boast they can program in Python as
quickly as they can type.
Problem 1 of Project Euler:
Find the sum of all the multiples of 3 or 5 below 1000.
Programming in J, I like to see intermediate results to be sure I am on the
right lines, so I write a simple important useful function
will_divide_into=: +./ @: (0 = |/)
3 5 will_divide_into i.10
1 0 0 1 0 1 1 0 0 1
3 5 (will_divide_into # ]) i.10
0 3 5 6 9
3 5 ([: +/ will_divide_into # ]) i.10
23
When I have got here, I am pretty confident to get the answer as
3 5 ([: +/ will_divide_into # ]) i.1000
233168
If you are pretty competent at Python you can type this:
>>> ans = 0
>>> for n in range(1000):
if not n % 3 or not n % 5:
ans = ans + n
>>> ans
233168
>>>
Very different in concept! The J code will easily handle any number of
divisors, whereas the Python code I have written wouldn't comfortably. Now,
I prefer the J code because I understand it, and because I understand the
power and the potential of the concepts, but I can see why ordinary people
instinctively vote for Python.
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm