Skip to content
Snippets Groups Projects
Select Git revision
  • 4ce5f27bddbd8d765d62dcbc1f6d846019a87c45
  • master default protected
2 results

visualize.cpp

Blame
  • visualize.cpp 1.66 KiB
    #include "lib.h"
    #include <random>
    #include <algorithm>
    #include <unistd.h>
    #include <cassert>
    #include <cstring>
    #include <fcntl.h>
    
    using namespace lib;
    using namespace internal;
    
    // HACK for using lib
    const int VERSION=1;
    const bool ALLOW_MISTAKES=0;
    
    int main(int argc, char ** argv)
    {
    	const char * mode = "";
    	if(argc > 1) mode=argv[1];
    
    	int n;
    	vector<int> in;
    	vector<bool> out;
    	char * verdict;
    	bool mistakes;
    	load_data(n, in, out, verdict, mistakes);
    
    	auto other = gen_arr_other_car_of_type(n, in);
    
    	printf("n: %d       %s\n", n, mistakes?"\e[31mMISTAKES ALLOWED\e[0m":"");
    	printf("score: %d   mistakes: %d \n", calc_score(n, out), calc_mistakes(n, in, out));
    	fflush(stdout);
    
    	FILE * jq_pipe = popen("jq", "w");
    	fprintf(jq_pipe, "%s", verdict);
    	pclose(jq_pipe);
    
    	auto print_color = [&](int i){
    		printf(out[i] ? "\e[91m" : "\e[92m");
    		if(out[i] == out[other[i]])
    			printf("\e[44m");
    	};
    	auto print_int = [](int val, int bound){
    		int div = 1;
    		while(10*div <= bound) div*=10;
    		for(;div;div/=10) putchar(val/div%10 + '0');
    	};
    
    	if(!strcmp(mode, "n"))
    	{
    		fo(i, 2*n)
    		{
    			if(i) putchar(' ');
    			print_color(i);
    			print_int(in[i], n);
    			printf("\e[0m");
    		}
    		printf("\n");
    	}
    	else
    	if(!strcmp(mode, "nd"))
    	{
    		fo(i, 2*n)
    		{
    			if(i) putchar(' ');
    			print_color(i);
    			if(i > other[i]) putchar('<');
    			print_int(in[i], n);
    			if(i < other[i]) putchar('>');
    			printf("\e[0m");
    		}
    		printf("\n");
    	}
    	else
    	if(!strcmp(mode, "d"))
    	{
    		fo(i, 2*n)
    		{
    			print_color(i);
    			putchar(i<other[i]?'>':'<');
    			printf("\e[0m");
    		}
    		printf("\n");
    	}
    	else
    	if(!strcmp(mode, "h"))
    	{
    		fo(i, 2*n)
    		{
    			print_color(i);
    			printf("#\e[0m");
    		}
    		printf("\n");
    	}
    
    
    }