annotate src/grph.c @ 12254:616be78bd12e draft

<oerjan> revert
author HackEso <hackeso@esolangs.org>
date Fri, 06 Dec 2019 07:54:58 +0000
parents 5339a7aef477
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6589
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
1 #include "stdio.h"
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
2 #include "string.h"
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
3 #include "stdlib.h"
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
4 #include "math.h"
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
5 char *vgraph[] = {" ","▁","▂","▃","▄","▅","▆","▇","█"};
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
6 char *hgraph[] = {"█","▉","▊","▋","▌","▍","▎","▏"," "};
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
7 int main(int argc,char**argv){
6591
e2234a3876d1 <fizzie> ` sed -i -e \'s/int h = 3/int h = 1/\' grph.c
HackBot
parents: 6589
diff changeset
8 int h = 1;
6589
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
9 int w = 80;
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
10 int color = 0,ori = 0,zebra=0,label=0;
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
11 if(argc >= 2&&argv[1][0]=='-'){
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
12 if(strchr(argv[1],'c'))color = 1;
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
13 if(strchr(argv[1],'z'))zebra = 1;
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
14 if(strchr(argv[1],'h'))ori = 1;
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
15 if(strchr(argv[1],'l'))label = 1;
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
16 argv++;argc--;
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
17 }
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
18 if(ori)h=10;
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
19 if(argc >= 2)h = strtol(argv[1],0,0);
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
20 if(argc >= 3)w = strtol(argv[2],0,0);
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
21 float *x=malloc(sizeof(float)*w);
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
22 int i,c,j;
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
23 float M = -HUGE_VALF;
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
24 float m = HUGE_VALF;
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
25 for(i=0;i<w;i++){
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
26 c=scanf(" %f",x+i);
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
27 if(c<1)break;
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
28 if(x[i]>M)M=x[i];
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
29 if(x[i]<m)m=x[i];
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
30 }
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
31 if(argc >= 4)sscanf(argv[3],"%f",&m);
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
32 if(argc >= 5)sscanf(argv[4],"%f",&M);
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
33 w = i;
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
34 float l = (M-m)/h;
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
35 if(ori == 0){//vertical, default
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
36 for(j=h-1;j>=0;j--){
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
37 if(color)fputs("\e[44m",stdout);
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
38 for(i=0;i<w;i++){
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
39 float r = x[i]-m-l*j;
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
40 if(zebra)fputs((i%2)?"\e[31m":"\e[32m",stdout);
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
41 if(r>l){
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
42 fputs(vgraph[8],stdout);
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
43 }else if(r>0){
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
44 fputs(vgraph[(int)(r/l*8+0.5)],stdout);
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
45 }else{
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
46 fputs(" ",stdout);
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
47 }
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
48 }
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
49 if(color||zebra)fputs("\e[0m",stdout);
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
50 if(label&&j==h-1)printf(" %f",M);
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
51 if(label&&j==0)printf(" %f",m);
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
52 putchar(10);
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
53 }
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
54 }else{
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
55 for(i=0;i<w;i++){
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
56 if(zebra)fputs((i%2)?"\e[31m":"\e[32m",stdout);
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
57 if(color)fputs("\e[44m",stdout);
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
58 for(j=0;j<h;j++){
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
59 float r = x[i]-m-l*j;
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
60 if(r>l){
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
61 fputs(hgraph[0],stdout);
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
62 }else if(r>0){
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
63 fputs(hgraph[8-(int)(r/l*8+0.5)],stdout);
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
64 }else{
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
65 fputs(hgraph[8],stdout);
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
66 }
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
67 }
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
68 if(color||zebra)fputs("\e[0m",stdout);
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
69 putchar(10);
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
70 }
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
71 int n;
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
72 if(label){
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
73 printf("%f%n",m,&n);
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
74 while(n++<h-1)putchar(' ');
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
75 printf("▕ %f",M);
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
76 }
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
77 }
7b90e3fd7e09 <\oren\> fetch http://www.orenwatson.be/grph.c
HackBot
parents:
diff changeset
78 }