From 5d5fbb3d06e123b94101f7a48d6a5c290030e50a Mon Sep 17 00:00:00 2001 From: Dimitri Lozeve Date: Thu, 16 Mar 2023 22:11:50 +0100 Subject: [PATCH] Add examples --- examples/Makefile | 12 ++++++++++++ examples/checkers.bqn | 2 ++ examples/checkers.png | Bin 0 -> 2221 bytes examples/gradient.bqn | 3 +++ examples/gradient.png | Bin 0 -> 929 bytes examples/hsv.bqn | 3 +++ examples/hsv.png | Bin 0 -> 2187 bytes examples/random_pbm.bqn | 2 ++ examples/random_pbm.png | Bin 0 -> 2643 bytes examples/random_pgm.bqn | 2 ++ examples/random_pgm.png | Bin 0 -> 14586 bytes examples/random_ppm.bqn | 3 +++ examples/random_ppm.png | Bin 0 -> 14759 bytes 13 files changed, 27 insertions(+) create mode 100644 examples/Makefile create mode 100644 examples/checkers.bqn create mode 100644 examples/checkers.png create mode 100644 examples/gradient.bqn create mode 100644 examples/gradient.png create mode 100644 examples/hsv.bqn create mode 100644 examples/hsv.png create mode 100644 examples/random_pbm.bqn create mode 100644 examples/random_pbm.png create mode 100644 examples/random_pgm.bqn create mode 100644 examples/random_pgm.png create mode 100644 examples/random_ppm.bqn create mode 100644 examples/random_ppm.png diff --git a/examples/Makefile b/examples/Makefile new file mode 100644 index 0000000..1523ca0 --- /dev/null +++ b/examples/Makefile @@ -0,0 +1,12 @@ +.PHONY: all +all: checkers.png random_pbm.png random_pgm.png random_ppm.png gradient.png hsv.png + +%.pnm: %.bqn + bqn $< > $@ + +%.png: %.pnm + pnmtopng $< | convert - -scale 300x300 - > $@ + +.PHONY: clean +clean: + rm -f *.png *.pnm diff --git a/examples/checkers.bqn b/examples/checkers.bqn new file mode 100644 index 0000000..343187a --- /dev/null +++ b/examples/checkers.bqn @@ -0,0 +1,2 @@ +⟨PBM⟩←•Import"../pnm.bqn" +•Out PBM 39‿39⥊0‿1 diff --git a/examples/checkers.png b/examples/checkers.png new file mode 100644 index 0000000000000000000000000000000000000000..9867c90471f6a2150fcf89cfcfce78d455431ed8 GIT binary patch literal 2221 zcma)7YgAKL7Ctdx98e;V8bBb_3RR*T?z7K1Ywxqy{=WU) zY(HQ65)&H}0KgKTZM5A0z+9)kMbH5_u&ntzXfX=+-sug1RAf4S&=}e;IJARK1Cysk zN*T06#QE&pg6M@WHMceQMp}`flP({c_a5Fet%Q0wFx*OB^v$J{CwWV<<%`ox9c-2& zjNyT&GuG@~niKbUMXT>!=FzK?kUMc@5^k;Ij=XDM#rwY~cBB31-9S5e*kQAh+U?Qv z&s43B5`HhFFatAUTi7``XgKw3 z=noPoE|N;LdLK|jWNuKMPJjcF6}qjE!?9)cv#UE{K+HbCO!6Ey>ku5_Qolif7VD%o zdzLSO?%Oru<)YCMQ8RgOxu%<7YI809k^R}EY8WWB&o-QJ>TC7|HGTP6@T4o0?_r?4 zD=Rv5t6iV)b;7ydzAeRd((L{Xz}*t_5i=UU+yuPXXcMD}Z@~tF8ac0ljJWLUx|N(4 zcIH3*>B)sZvw{lJ*nfL(yq2x>^n6MmtYpyNlpugkti`oaHW-7}CSJa_nF-Py<)&Q5 zg!?Krze1*tdj6Fos3BCOvc_JefEtuKoGaS65d0Va8)r<8^AAwwxzWDAEvs#}{2^DG zsomexA#md+5Y|TFe?i+U{3Gb_IPwlEF*7Dt8`+a6cdOWEGkI`S#-pnlZ$f+L^r6v^ zdwjCKG*I*COOUot@REys7_H|+t1PFyE{J`<=t4|^RG!Q=2Dd~~p*EX0tRz%O|ApI* zW(u{z5MYL^t>SuxUro7@>yBx&Dp_1HAb7ndwAnj4=m6tP>t`6dgAtbCM;intNGP$W zQUMS$9(0{aZ>c=uKdKmerYhag9f);}f`MmM*c%P>uon@=fGdZYk(ebXe~$-VrqqJ# zvfQfMaUw=E(U&v!6ZxRi~7vscDa>csMg38uv^P9#`@hQsTpABWD zPk172v|$^^mNT|eb6;=KY^2^&fqQhs8!nLD=DS4-^@~-VLu+rMVp+<3{UJ}%g_3Tg zD74y11s@d+iL85_mZ!Y_T-70@^0Q*jC#G`uqOC&O3NLW|+Ml$d6ASf!S1E+l58Hcu zfS8J8ur>MDMbh&}tNS<9w>~+}=vk#+rBWyb9Ri6mAf}A?=-%Tm82jzR+F40!jtQmt z+9;^CJ%%jK@>rg=$!sE}QB5p0&QI-~AKHeVT2SB^7CddvN(3jwNL{CxKDymqP3JO% zD-$qk1~+vA4#G0^o~p`jQLRCs-6f_QBG;*lxQv%@pd_R;4mUAipvnp(^}0D_cXeA2f)i9kt4!@b)mx=r%OdRCTw}L%yuy{)!QN z)U7YWp~;J|e@VF&35`egJX7I8g)*KUq zi~Bqjxxd;@->5H5;J|<#)|{d9;dAhPH~kkj(fGO*eT#78_bm0EBbzGKe-^(oH7}y% zoVbAjei$K7x2GlPCx4uy_=m+Jm1_oQOfe8{I`&;MTCGVhYb{sHIl(3W!9e7?NFQc+HyXtTp= z1^+vjDH1jI2JbvIqfzf`3@|)8@c}k(Ve`L8J}WwWaq(=0F6}|HQE#BiMyfTa6y&)> zX1LAM>OG~myPXxx4!ZlSccy0bUES+5JK&WY18UQ~hjl8GPw! zn#zdGS^o~HIj^OcxsF`DCa$Nu*Ug^}zpnZ_I);U$TX7@yoQmAFXMy_mV+r*C zcZ}N-6vsLk$0jk4v7rSJ@x--m__c0?FZK}Dk%*oo!n)OXJPD6~zN@KnPQcMInferno¨40÷˜+⌜˜↕20 diff --git a/examples/gradient.png b/examples/gradient.png new file mode 100644 index 0000000000000000000000000000000000000000..96e7726a15333fc46466f59b5f5fb57369d69526 GIT binary patch literal 929 zcmeAS@N?(olHy`uVBq!ia0y~yVAKI&4rZW;-{LxVAjOjI=74`ANbBIpPK7()kT?dELs{Q`Iu(X{D~xOWa}< zz0V@_xUK(rC(j#Rjt>H@UPK$cP0{|8r~JKA@>jFq-w7Q5XS4lZ&h>wb*uMiRf6kfy zyyf=&S=850W&i*G|6#s#0niPMN#5=*>bm?Zlz|-f5>H=O_UFt3f--`R{1Ubd3`}aC zE{-7;x87dZ?&!=Y!m@#XMoLqsTJooV%0cm;cfDRBxJ4&Z|LyYTEne*}HDs4hE}3=h zrOw>t-6b>4UTVcIpItIrEOJxI$w{i-({x~rHGb3PCO+3g6$Hsn-SmdX`nxAWB~;7m zDXHl+oF|vQ?e{>65K`@BTV!3 zxecFZp?M4_>lInnHg~%Ul5ZheLQicnezQj%yBE@@<1nZnhe0*C!a^HISlq`E7C$|4 zghf7%u=s~1EYx4iKiwf|K6Q$S888v4mbgZgq$HN4S|t~y0x1R~10!Qy17lr7vk*gb uDHSVtoRGB¨{(𝕨×360)‿𝕩‿1}⌜˜↕⊸÷˜50 diff --git a/examples/hsv.png b/examples/hsv.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0f675cc3de7102f5c43b3c37fb054e3ae2b856 GIT binary patch literal 2187 zcmZ`)3s6%>6n(TR2*VUb8>>)MM$x1opCUBBj;R_!`5K5KBqD@=v_MECk=754Q#DeC z$*34W!~g*ap8yImU}-@OA|M$;f{`jB!V5_G1rscNwBrctbl!Qh^X|U8d+*(I&;H`? zOSUv$Zw^6_rPsdQfe>W!&BAN;8Dg2S`)V^XEQ{XdvkQW%GA-u9mm}XBBlZRQKoEB; z1f5QYAOm7L{RVCE0h zNjdX!c$%9guh%}u=#9Fy@pZ4|w=2cMrqkOtr8|E>B}^JsQl4ZeMB=$`1=NDTL^Q=I zLs9Gh?l{^<2E#9Ma_QE&T3@qp(jwH3y(#%Amd;@*bxhGHBg{fIckpgho1&XLBmWw= zDShQ4gzcyDNBn~K(kf6IA}sY6v-o1#m%+PVlm#-Jiam>^NpZ(Dw< zEmr9suWC`0G>K>hUf3WTt0zu2pmTBDBg6_m{GShIQ(P zrt8%}K`gXg)Pl*w*f{F&jT!#4>5_c>L_j{g4vaiOj4Qo)vpT#5@E3W&Mq+%oe%1A9 zVy4@CSkL52zXF_j_bQT^^#{OsT*&Ymf^5w7a^h>7XnEG?qGXZ8ds5joPq&v+_VOdx z(zhHoP+TULT~m%{pKPDQOsRTR^xwe{#@=w{osJm&qn-gTg36BlVc-7(*f0~7CZcOp zCS_B9^vEzcnZx^ZhgxgWRjZHaeW~s`NFFRMo6wcwbLKhEnw)$FqpKCX%y&H$1C}>{ zE~aDdWW+z|QW%?z%ok1RaHQbvoeMyvy`#xZIeEQ-+&+YrHO2nqc3OQ=SjWGdgyoZ3 zkIQO3K?XQ|DJv|Nc#BXCG)_$g%CIf8TW?`9mPDO)0_tFi$7$Ha9rUKMsj$9!jf5gX zg}h5rmc0G7Z1!Rh21px|XInl+!Wg&(g5&~01&L8nMe?f(ty-G+A^r8~wBhng-Rx|% zywiKoJ;o;aTKua}V6hFeQE7C)+KIkf0$MPgp?nzZ+2LtCQUIiKA)1U)-D_wS-z(_X zrxZJq^OyvlO={hAf(J;-hW^{8t(8lI=?&y4!|%&0qBHF~>hdhfbxWrYo#0HFeXozn zaO2PYhN%H2N6QYtX`RM{#Qn#elHaF*#hXUT!8((-ftH=CH6N;vI{(Q64%pExfyJVfiUnfXrLd1hGnSGw(%C0Oy)kXZ`rN!$+w?G^=t- z-NmCal%7X|U(+Y&F!(n)Koit;+7jek^pIph(AJQ^M1->qgF1b)`)K}vOgtrTkkc5- zw!um2Wy3AtgpXix8cMaiGXRdo6cQ!R_4RoXp>Ff$L-X;yfQBg%Vmb8DV*2>E9|sMe zs(UZ;9+IXh6@DTK)kUVB2T!#Uk%(3?>jHX+WF)Q*s&DgbJbUhCmwhiJI zR5ZI!_A?0i<7-CUfiMv%(O^+yrBfL+G}w8H*X@Y0+Xua`kk{Tob4fD;8K(%WH_IA{WFgD1|%6+YR3IlE74(W5Ni0OTvH+ z5&_uSFcGKGx9SVaT;qfRYvHQAEEp(6?|o@uTCo>KdrKA{DxGkDqz2eFvjbaVZ+m{+ za^Yg%!rF6)6&cQAU?Y+k$N;%IySh0#yE(e-q_}usT|Kcb9vEk5th4iB}`wt=+sqg>* literal 0 HcmV?d00001 diff --git a/examples/random_pbm.bqn b/examples/random_pbm.bqn new file mode 100644 index 0000000..5b4b7e9 --- /dev/null +++ b/examples/random_pbm.bqn @@ -0,0 +1,2 @@ +⟨PBM⟩←•Import"../pnm.bqn" +•Out PBM •rand.Range¨100‿100⥊2 diff --git a/examples/random_pbm.png b/examples/random_pbm.png new file mode 100644 index 0000000000000000000000000000000000000000..48a78be7da2a9078dcaabe0acf32e3ef9ab65724 GIT binary patch literal 2643 zcmV-Z3as^sP)vovOP|?H&!w z-_*QmAFTOq`*1&F%I!X`l{fa?p3IIV)zPr#YfA!D_m!1 z(Xa$;vV3XxYOANMv9(#c{B3!*<`Du#GR(m+zArC<%f#0wx7h`9zD`B{*`7*y-bBL^ z-`duEDfYg762(U** zX)KzhXw3G$*eBbw+iXjvVxrd^3?u9h*)=BxyiB#0)aBQGh{UWpi!`=%9}GL*BEJ+9 zgCyUAlw+?A-he~whP$W&Dk~WFSqU{o%`%>(Xt2>@&P8cZXDbOnKw@G0bi>k5wgEsR z;I3NaY}yw#1r8rpi-r*pV{Pm{p(xul^7*E;hf;XW?LMr(xCO!>tK*_zTet$TtA`uX z&OhSJ!z}ehs@5hPb|QKA0XbiW4pLvoo5%qaDv|AFm&Wc%!7woPrHUoH&5{UsZm8k9 zkHw=;_#;+F!=Apd51I~lbBC==CdLM5%!- z-Gs!#;HaDr@lnQN+LT(-Pn@}Q&m@&cj}W71*v2yQMa6}I$zR1sRGDo^15Z(6>_RNe zw>6PbPzTYVcu5A)W(85NCWa|s%UD>_3z8I7J|m?q#y(u`dDXo{PzECu21DvwlXblB zTRRb;`w)K$rq4g-i;sjgGb&%80()8DRO_)g(EYMt_oa-L+1q)zB4LERksrP>Hn_w( zyQR74KK`8an~=qyX^e!CR5d;d8KTkn!Y8X7;}>tFdgvv(pNP#KN?mUR?&Mj&+1Nsp4H}R>;JDC~d7R7RJ8QZm_VY>_i>j-yJ45j;kTz z`4HKSg#mE>H+-_zHe!j3CsV%zUtw&B*xm=j9ygeF5H6eVggk}~yLGYDnhXm)B6+*lPF}A&+R0J;;SEVe!j^B_0Eu3 zGz{AJ)`NngcfRp#hm4%6OvD9If46WLk*|jhmR6HaN)Pv;u}?v}hsnt`F-Y2lP?&x7 zzau>wIxQM`HLp4mDvq@G##xh}U>HlPte!N%Q+rOPX|?FSHPT`*YGY$zB)Mjli)-H{ zf35_BqG{XJ^iktJHVK7czctFEmrR`+E0uN!TSD4ug(fhazCtLhSy~zaDS}2oGEUG4 zl7wRvpSUbqG^{SujttqYN5}ymkZLaB%BxOxbgd7C+1F>JACtitrG_-iGy(`B36H-* zq4sE4j*l|cvQ`3X4ea=4ZtBPiwVbkc(J&m#Kp}Uu8?vS!+b2ka-g(vB`*ja62g9W7 z_;5GFG<4bp9C9fWmDu;xsu@Yauq5kyYeb1_l4IOpNcdT!Zw$cq#;ZTkFe+$QgN*s_ zv={6?+ks4YmxsIfZ9y#TM^I`cmjcFswKS}tt3@W}uAa7B^NL`YqMdN3E^aW-6j4f%PJlA%#w6r)kV)d)* zU>K5@G##a~G77U{3}$wnCB4xIAMUC55v44ee$#S_En{KiFzWMSX=JG2 z$wcQ>CO^v2ln;BO;aez7$E=tc(}BY7+2xC&+_1`bj%Pe?YM4UM>qm8EL%HJM;aDT?SRGb5B;QvrbH7r4!F!7{XU3omtD4o1f;~y8iLDgoQqfUf?*RVZCyjWe|bi z+$mQ;I438V&o+_VXp_z#78_U2Dv)nJpTDyO1&m~JhW(mpkRDP;9u zQi@<0Yr~L>Ow?8BMoq4pX;gPBhpgd`|27m>rw&fm5O31O0Oj7O5aqLaXE3Zy{w)}$ z8#Rp&z0pA(pl7XkV@Cc5tTXG!~}bs`rzcYnA?*Fuy74muC=Mw=tzmojCJUhx@n=hQj^<=gc`>X(<%80000bbVXQn zWMOn=I%9HWVRU5xGB7eTEif}JF*Z~&H##ynIx#mZFfckWFyK$mw*UYDC3HntbYx+4 zWjbwdWNBu305UK#Gc7PPEipD!F*iCgI65&mD=;uRFffr4cMAXj002ovPDHLkV1mt{ B`NIGJ literal 0 HcmV?d00001 diff --git a/examples/random_pgm.bqn b/examples/random_pgm.bqn new file mode 100644 index 0000000..41f467e --- /dev/null +++ b/examples/random_pgm.bqn @@ -0,0 +1,2 @@ +⟨PGM⟩←•Import"../pnm.bqn" +•Out PGM •rand.Range¨100‿100⥊100 diff --git a/examples/random_pgm.png b/examples/random_pgm.png new file mode 100644 index 0000000000000000000000000000000000000000..b03b296fe5471e84e90a74df0f639c0ebdeabfd5 GIT binary patch literal 14586 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 literal 0 HcmV?d00001 diff --git a/examples/random_ppm.bqn b/examples/random_ppm.bqn new file mode 100644 index 0000000..10f2f2d --- /dev/null +++ b/examples/random_ppm.bqn @@ -0,0 +1,3 @@ +⟨PPM⟩←•Import"../pnm.bqn" +⟨Inferno,Viridis⟩←•Import"../colormaps.bqn" +•Out PPM ⌊255×>Viridis¨100÷˜•rand.Range¨100‿100⥊100 diff --git a/examples/random_ppm.png b/examples/random_ppm.png new file mode 100644 index 0000000000000000000000000000000000000000..f7bb5da7d5cca8a489958ae5d308bd6e90528fdb GIT binary patch literal 14759 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 literal 0 HcmV?d00001