Skip to content

Instantly share code, notes, and snippets.

@yurivish
Last active August 29, 2015 13:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yurivish/9947301 to your computer and use it in GitHub Desktop.
Save yurivish/9947301 to your computer and use it in GitHub Desktop.
xs =: (i: 10) % 10
ys =: (i: 20) % 10
grid =: ys j./ xs
in =: 4 > |
out =: 1 - in
trim =: (* in) + (_ * out)
iter =: trim @ (+ *:)
require 'viewmat'
viewmat grid iter^:1000 grid
@yurivish
Copy link
Author

yurivish commented Apr 3, 2014

Grid:

r =: i. % <: NB. Constructs a range of n elements from 0 to 1
g =: [: |: j./ NB. A dyadic function that takes (r x) g (r y) and constructs a 2d grid on [0, 1] * [0, 1]

@yurivish
Copy link
Author

yurivish commented Apr 3, 2014

len =: -/ |. NB. Subtract the right index from the left index by reversing the list and inserting a minus.

Better:
len =: }. - {. NB. Subtract the second from the first

@yurivish
Copy link
Author

yurivish commented Apr 3, 2014

r =: {. + ([: i. len) NB. For (x y) passed in, return the range x + i. len x

(this leaves out the endpoint)

@yurivish
Copy link
Author

yurivish commented Apr 3, 2014

len =: -@- NB. Monadic minus composed with dyadic minus. Usage: x len y

Alternate formulation: [: - - or [: | -

And now you can define

r =: [ + ([: i. len)

which is equal x + the range from 0 to (x len y)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment