Mercurial > hg > jgplsrc
view test/g232.ijs @ 0:e0bbaa717f41 draft default tip
lol J
author | Jordi Gutiérrez Hermoso <jordigh@octave.org> |
---|---|
date | Mon, 25 Nov 2013 11:56:30 -0500 |
parents | |
children |
line wrap: on
line source
NB. |: ------------------------------------------------------------------ NB. mask =: =/ i.@>:@(>./) NB. vec =: >@{@:(i.&.>)@((<./ .+) 127&*@-.) NB. ind =: vec +/ .* (#. |:) NB. mask =: i.@>:@(>./) =/ ] NB. canta =: ($@] ind mask@[) { ,@] X =: +/ .* mask =: = /: ~. rho =: <./@# ind =: (#:i.)@:rho X #.~ canta =: (mask@[ ind $@]) { ,@] rank =: #@$ pfill =: (i.@[ -. |) , | en =: - #@; ci =: (/:@pfill ;) { i.@en , en + (#&> # i.@#)@] cant2 =: (rank@] ci [) canta ] cant1 =: i.@-@#@$ |: ] vfy =: 3 : 0 : a =. (#$y) pfill x ((x|:y) -: a|:y), ((x|:y) -: (+&.>x)|:y), ($x|:y) -: a{$y ) x =: a.{~?(?~5)$256 (|:x) -: (|.i.$$x)|:x x -: ''|:x x -: _1|:x 0 1 vfy x (p=:?~#$x) vfy x NB. Boolean (p=:(?#$a)?#$a) vfy a =: 1=?(4?6)$2 (|: -: cant1) a (|: -: cant1) a=:? 8 32$2 (|: -: cant1) a=:?32 8$2 (|: -: cant1) a=:? 8 8$2 (|: -: cant1) a=:?13 13$2 (|: -: cant1) a=:?13 7$2 (|: -: cant1) a=:? 7 13$2 NB. literal (p=:(?#$a)?#$a) vfy a =: a.{~?(4?6)$256 (|: -: cant1) a (|: -: cant1) a=:a.{~? 8 32$256 (|: -: cant1) a=:a.{~?32 8$256 (|: -: cant1) a=:a.{~? 8 8$256 (|: -: cant1) a=:a.{~?13 13$256 (|: -: cant1) a=:a.{~?13 7$256 (|: -: cant1) a=:a.{~? 7 13$256 NB. integer (p=:(?#$a)?#$a) vfy a =: ?(4?6)$111256 (|: -: cant1) a (|: -: cant1) a=:_1e6+? 8 32$2e6 (|: -: cant1) a=:_1e6+?32 8$2e6 (|: -: cant1) a=:_1e6+? 8 8$2e6 (|: -: cant1) a=:_1e6+?13 13$2e6 (|: -: cant1) a=:_1e6+?13 7$2e6 (|: -: cant1) a=:_1e6+? 7 13$2e6 NB. floating point (p=:(?#$a)?#$a) vfy a =: o.?(4?6)$111256 (|: -: cant1) a (|: -: cant1) a=:o._1e6+? 8 32$2e6 (|: -: cant1) a=:o._1e6+?32 8$2e6 (|: -: cant1) a=:o._1e6+? 8 8$2e6 (|: -: cant1) a=:o._1e6+?13 13$2e6 (|: -: cant1) a=:o._1e6+?13 7$2e6 (|: -: cant1) a=:o._1e6+? 7 13$2e6 NB. complex (p=:(?#$a)?#$a) vfy a =: ^0j1*?(4?6)$111 (|: -: cant1) a (|: -: cant1) a=:r._1e6+? 8 32$2e6 (|: -: cant1) a=:r._1e6+?32 8$2e6 (|: -: cant1) a=:r._1e6+? 8 8$2e6 (|: -: cant1) a=:r._1e6+?13 13$2e6 (|: -: cant1) a=:r._1e6+?13 7$2e6 (|: -: cant1) a=:r._1e6+? 7 13$2e6 NB. boxed x =: (+&.>?20$100), ;:'((?#$a)?#$a) vfy a =: ^0j1*?(4?6)$111' (p=:(?#$a)?#$a) vfy a =: x{~?(4?6)$#x (|: -: cant1) a (|: -: cant1) a=:x{~? 8 32$#x=:;:'deip no so phist epi cur ean ex cell ence' (|: -: cant1) a=:x{~?32 8$#x (|: -: cant1) a=:x{~? 8 8$#x (|: -: cant1) a=:x{~?13 13$#x (|: -: cant1) a=:x{~?13 7$#x (|: -: cant1) a=:x{~? 7 13$#x id0 =: =&i. id1 =: 1: (<0 1)&|:@i.@$@]} ($&0)&(,~) (id0 4) -: id1 4 (id0 0) -: id1 0 (id0 7) -: id1 7 t -: |: t=:'a' t -: |: t=:9 t -: |: t=:3j4 t -: |: t=:<i.3 4 t -: ''|: t=:'a' t -: ''|: t=:9 t -: ''|: t=:3j4 t -: ''|: t=:<i.3 4 (x=:2 2?2) (|: -: cant2"1 _) y=:? 5 7$100 (x=:3 3?3) (|: -: cant2"1 _) y=:?3 5 7$100 ((i.4 6)A. i.4) (|: -: cant2)"1 _ x=:?5 6 7 8$2e6 NB. |: main diagonals --------------------------------------------------- diag =: <@;~"0@:i.@(<./)@$ { ] (diag -: (<0 1)&|:) x=:?4 5$100 (diag -: (<0 1)&|:) x=:?5 2$100 (diag -: (<0 1)&|:) x=:?5 5$100 ((<0 1)&|:&.(<"_2) x) -: (0 1;+&.>2}.i.#$x)|:x=:a.{~?2 3 $#256 ((<0 1)&|:&.(<"_2) x) -: (0 1;+&.>2}.i.#$x)|:x=:a.{~?2 3 4 $#256 ((<0 1)&|:&.(<"_2) x) -: (0 1;+&.>2}.i.#$x)|:x=:a.{~?2 3 4 1 $#256 ((<0 1)&|:&.(<"_2) x) -: (0 1;+&.>2}.i.#$x)|:x=:a.{~?2 3 4 1 2$#256 (0 1;2;3) (|: -: cant2) x=:?2 3 4 5$100 (0 1;2;3) (|: -: cant2) x=:?3 2 4 5$100 (0 1;2;3) (|: -: cant2) x=:?3 3 4 5$100 '' -: (<0 1)|: x=:?0 5$100 '' -: (<0 1)|: x=:?5 0$100 '' -: (<0 1)|: x=:?0 0$100 (i.2 0 5) -: (0 1;2;3) |: x=:?2 3 0 5$100 (i.0 4 5) -: (0 1;2;3) |: x=:?0 3 4 5$100 (i.0 2 3) -: (0 1;2;3) |: x=:?0 0 2 3$100 NB. |: on matrices ------------------------------------------------------ mi =: i.@{: +/ {: * i.@{. cant =: mi@$ { , NB. Boolean ( |: -: cant) 1=?50 45$2 (1 0&|: -: cant) 1=?40 60$2 (|:"2 -: cant"2) ?3 1 100$2 (|:"2 -: cant"2) ?3 100 0$2 (|:"2 -: cant"2) a=:? 8 32$2 (|:"2 -: cant"2) a=:?4 32 8$2 (|:"2 -: cant"2) a=:?5 8 8$2 (|:"2 -: cant"2) a=:?1 13 13$2 (|:"2 -: cant"2) a=:?3 13 7$2 (|:"2 -: cant"2) a=:?2 7 13$2 NB. literal ( |: -: cant) (?45 45$#a){a=:'foo upon thee 1=?10 20$2' (0&|: -: cant) (?10 200$#a){a (|:"2 -: cant"2) (?400 1$#a){a (|:"2 -: cant"2) (?0 1000$#a){a (|:"2 -: cant"2) a=:a.{~? 8 32$256 (|:"2 -: cant"2) a=:a.{~?4 32 8$256 (|:"2 -: cant"2) a=:a.{~?5 8 8$256 (|:"2 -: cant"2) a=:a.{~?1 13 13$256 (|:"2 -: cant"2) a=:a.{~?3 13 7$256 (|:"2 -: cant"2) a=:a.{~?2 7 13$256 NB. integer ( |: -: cant) ?50 50$212341 (1 0&|: -: cant) ?60 45$212341 (|:"2 -: cant"2) ?400 1$123541 (|:"2 -: cant"2) ?0 1000$123456 (|:"2 -: cant"2) a=:_1e6+? 8 32$2e6 (|:"2 -: cant"2) a=:_1e6+?4 32 8$2e6 (|:"2 -: cant"2) a=:_1e6+?5 8 8$2e6 (|:"2 -: cant"2) a=:_1e6+?1 13 13$2e6 (|:"2 -: cant"2) a=:_1e6+?3 13 7$2e6 (|:"2 -: cant"2) a=:_1e6+?2 7 13$2e6 NB. floating point ( |: -: cant) o.?35 35$212341 (0&|: -: cant) o.?30 40$212341 (|:"2 -: cant"2) o.?1 400$123541 (|:"2 -: cant"2) o.?100 0$123456 (|:"2 -: cant"2) a=:o._1e6+? 8 32$2e6 (|:"2 -: cant"2) a=:o._1e6+?4 32 8$2e6 (|:"2 -: cant"2) a=:o._1e6+?5 8 8$2e6 (|:"2 -: cant"2) a=:o._1e6+?1 13 13$2e6 (|:"2 -: cant"2) a=:o._1e6+?3 13 7$2e6 (|:"2 -: cant"2) a=:o._1e6+?2 7 13$2e6 NB. complex ( |: -: cant) ^0j1*?30 25$21234 (1 0&|: -: cant) ^0j1*?25 25$21234 (|:"2 -: cant"2) ^0j1*?1 256$1235 (|:"2 -: cant"2) ^0j1*?127 0$1234 (|:"2 -: cant"2) a=:r._1e6+? 8 32$2e6 (|:"2 -: cant"2) a=:r._1e6+?4 32 8$2e6 (|:"2 -: cant"2) a=:r._1e6+?5 8 8$2e6 (|:"2 -: cant"2) a=:r._1e6+?1 13 13$2e6 (|:"2 -: cant"2) a=:r._1e6+?3 13 7$2e6 (|:"2 -: cant"2) a=:r._1e6+?2 7 13$2e6 NB. boxed ( |: -: cant) (?30 25$#x){x=:;:'Cogito, ergo sum. +/2 12 341 CBC News' (0&|: -: cant) (?30 30$#x){x (|:"2 -: cant"2) (?255 1$#x){x (|:"2 -: cant"2) (?0 0$#x){x (|:"2 -: cant"2) a=:x{~? 8 32$#x (|:"2 -: cant"2) a=:x{~?4 32 8$#x (|:"2 -: cant"2) a=:x{~?5 8 8$#x (|:"2 -: cant"2) a=:x{~?1 13 13$#x (|:"2 -: cant"2) a=:x{~?3 13 7$#x (|:"2 -: cant"2) a=:x{~?2 7 13$#x (1 0 2 |:x) -: |:&.(<"_2) x=:?3 4 5$1000 (1 0 2 3 |:x) -: |:&.(<"_2) x=:?2 3 4 2$1000 (1 0 2 3 4|:x) -: |:&.(<"_2) x=:a.{~?2 3 4 2 3$#a. (i.0 13 7) -: |:"2 i.0 7 13 (i.a,0) -: |: i.0,a=:<._1+2^31 (i.0,a) -: |: i.a,0 'domain error' -: 'abc' |: etx i.3 4 'domain error' -: (<'abc')|: etx i.3 4 'domain error' -: 0.5 |: etx i.3 4 'domain error' -: (<0.5) |: etx i.3 4 'domain error' -: 3j4 |: etx i.3 4 'domain error' -: (<3j4) |: etx i.3 4 'domain error' -: (<<0) |: etx i.3 4 'domain error' -: (0;<<1) |: etx i.3 4 'domain error' -: (0;'a') |: etx i.3 4 'index error' -: 0 0 |: etx i.3 4 'index error' -: (<0 0) |: etx i.3 4 'index error' -: 2 |: etx i.3 4 'index error' -: (<2 2) |: etx i.3 4 'index error' -: (i.2 3) |: etx i.3 4 NB. |:"r ---------------------------------------------------------------- (2 1 |:x) -: |:"2 x=:?4 3 2 $100 (_1 _2|:x) -: |:"2 x=:?2 3 4 5$100 (|:"2 -: cant1"2) ?2 3 4$2 (|:"2 -: cant1"2) a.{~?2 3 4$#a. (|:"2 -: cant1"2) ?2 3 4$1000 (|:"2 -: cant1"2) o.?2 3 4$1000 (|:"2 -: cant1"2) r.?2 3 4$1000 (|:"2 -: cant1"2) x{~?2 3 4$#x=:(+/i.2 3);;:'Cogito, ergo sum.' 1 0 (|:"2 -: cant2"2) ?3 4 5$1000 1 0 (|:"3 -: cant2"3) ?2 3 4 5$1000 1 2 0 (|:"3 -: cant2"3) ?2 3 4 5$1000 (1 0,:0 1) (|:"1 2 -: cant2"1 2) a.{~?2 3 4$#a. (1 0,:0 1) (|:"1 2 -: cant2"1 2) a.{~?2 3 4 5$#a. (1 0,:0 2) (|:"1 3 -: cant2"1 3) a.{~?2 3 4 5$#a. NB. magic cubes due to Professor James G. Mauldon magic=: 4 : 0 assert. (,3)=$x assert. x=<.x assert. 0=#$y assert. y=<.y s=. y m=. 3 3{.3 4$x s #. s | +/ .*&m (#: i.) 3#s ) magicprop=: 3 : 0 s=. +/ (<0 1 2) |: y z=. *./, s = +/y z=. z , *./, s = +/"1 y z=. z , *./, s = +/"2 (0 1;0 2;1 2)|:"0 _ y ) vfy=: 4 : 0 m=. x magic y (1 1 1 -: magicprop m) >: *./1=y+.x,+/x ) 3 4 5 vfy 1 3 4 5 vfy"1 0 >: i.5 10 3 4 5 vfy"1 0 p: i.4 5 2 4 6 vfy 1 2 4 6 vfy"1 0 >: i.5 10 2 4 6 vfy"1 0 p: i.4 5 (x=: >:3?20) vfy"1 0 y=: >:?4 5$80 NB. |: inverse ---------------------------------------------------------- vfy=: 4 : 'y -: x&|:^:_1 x|:y' " 1 _ x=: ?2 3 5 7 11 13$1000 ((23$0) ? #$x) vfy x ((23$1) ? #$x) vfy x ((23$2) ? #$x) vfy x ((23$3) ? #$x) vfy x ((23$4) ? #$x) vfy x ((23$5) ? #$x) vfy x ((23$6) ? #$x) vfy x NB. |: symmetric array ------------------------------------------------- NB. two transposes suffice to test for symmetry NB. 0. (p|:q|:X) -: (p{q)|:X NB. 1. Therefore, the following are equivalent: NB. P (] -: |:)"1 _ X NB. (subgroup P) (] -: |:)"1 _ X NB. 2. The two permutations 0&C. and _2&C. generate the whole group perm=: i.@! A. i. x=: (4$8)$0 x=: (?1e6) (<"1 (perm #$x){?$x)}x x=: (?1e6) (<"1 (perm #$x){?$x)}x x=: (?1e6) (<"1 (perm #$x){?$x)}x sym0=: [: *./ perm@#@$ (] -: |:)"1 _ ] sym1=: (-: 0&|:) *. (-: _2&|:) (sym0 -: sym1) x 4!:55 ;:'a cant cant1 cant2 canta ci diag en id0 id1 ' 4!:55 ;:'ind magic magicprop mask mi p perm pfill ' 4!:55 ;:'rank rho sym0 sym1 t vfy X x y'