Select Git revision
-
Martin Mareš authoredMartin Mareš authored
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");
}
}