Auteur Sujet: Un Raytracer écrit en K (a variant of APL containing elements of Scheme)  (Lu 881 fois)

0 Membres et 1 Invité sur ce sujet

/ http://www.ffconsultancy.com/free/ray_tracer/comparison.html   hit 18 upper 6 leaf of 1325
s:(-3 3 -3 3;3 3 3 3;-3 -3 3 3)%sqrt 12;C:{[k;c;r]$[k-:1;((c;r*3);(,(c;r)),C[k;;r%2]'+c+r*s);(c;r)]}
s:C[6;0 -1 0.;1.];u:{x%sqrt x wsum x};e:%m:1e9;l:u 1 3 -2;b:0 0 -4.                        /scene
d:{[v;s]$[0>d:(n*n:c wsum v 1)-(c wsum c:(*s)-*v)-d*d:s 1;m;n>e+d:sqrt d;n-d;n>e-d;n+d;m]} /distance
i:{[v;m;s]$[@*s;$[(*m)>a:d[v;s];(a;*s);m];(*m)>d[v;*s];m i[v]/s 1;m]}                      /intersect
t:{[v;s]$[m=d:*r:i[v;m;s];0.;0>g:l wsum n:u(b:v[0]+d*v 1)-r 1;0.;m=*i[(b;l);m;s];g;0.]}    /trace
 
j:(&4 4 4 4)%4;k:16#(!4)%4;n:16
\t r:(|r){+/t[;s]'(b;)'u'+(x+j-n%2;y+k-n%2;n+16#0.)}\:/:r:!n
 


http://en.wikipedia.org/wiki/K_(programming_language)

Citer
The small size of the interpreter and compact syntax of the language makes it possible for K applications to fit entirely within the level 1 cache of the processor. Vector processing makes efficient use of the cache row fetching mechanism and posted writes without introducing bubbles into the pipeline by creating a dependency between consecutive instructions.


Dans le même genre, le J :

  quicksort=: (($:@(<#[) , (=#[) , $:@(>#[)) ({~ ?@#)) ^: (1<#)

http://en.wikipedia.org/wiki/J_(programming_language)

Citer
Tacit programming involves composing functions together and not referring explicitly to any variables. J's support for forks and hooks dictates rules on how arguments applied to this function will be applied to its component functions.
http://en.wikipedia.org/wiki/Tacit_programming