top | item 39784091

(no title)

bruturis | 1 year ago

>> find the GCD (greatest common divisor) of the smallest and largest numbers in an array

Just for a short comparison, In J the analogous code is </ +. >/

  Where / is for reduce, +. is for the GCD,  the LCM is *. 

 The basic idea of J notation is using some small change to mean the contrary, for example {. for first and {: for last, {. for take and }. for drop (one symbol can be used as a unary or binary operator with different meaning.  So if floor is <. you can guess what will be the symbol for roof. For another example /:~ is for sorting in ascending order and I imagine that you can guess what is the symbol for sorting in descending order.  In a sense, J notation include some semantic meaning, a LLM could use that notation to try to change an algorithm.  So perhaps someone could think about how to expand this idea for LLM to generate new algorithms.
The matrix m, the sum of the rows, and the maximum of the sum of the rows in J (separated by ;)

  m ; (+/ m) ; >./ +/ m
  ┌─────┬───────┬──┐
  │0 1 2│9 12 15│15│
  │3 4 5│       │  │
  │6 7 8│       │  │
  └─────┴───────┴──┘

discuss

order

KarlKode|1 year ago

I think you mistyped J code. I don't know any J but what I understood from your comment that it should be something like

  </ +. >/ *.

bruturis|1 year ago

You are right, the correct code is .</ +. >./

To understand this you need to know that >. and <. are the min and max functions, and that in J three functions separated by spaces, f g h, constitutes a new function mathematically defined by (f g h)(x) = g(f(x), h(x)). An example is (+/ % #) which applied to a list gives the mean of the list. Here +/ gives the total, # gives the number of elements and % is the quotient.

kqr|1 year ago

> So if floor is <. you can guess what will be the symbol for roof.

Based on the examples, no, I cannot. It could be either of <: and >.

bruturis|1 year ago

You are right, both are good options, the author of J chose >. for ceiling and >: for greater than or equal.