lolcat.c (684B)
1 // Copyright 2018 Haelwenn (lanodan) Monnier <contact@hacktivis.me> 2 // Distributed under the terms of the CC-BY-SA-4.0 license 3 4 #include <stdio.h> /* getchar(), putchar(), snprintf(), printf() */ 5 #include <math.h> /* sin() */ 6 7 void rainbow(double freq, int i) { 8 int red, green, blue; 9 double pi = 3.14159; 10 11 red = sin(freq*i + 0) * 127 + 128; 12 green = sin(freq*i + 2*pi/3) * 127 + 128; 13 blue = sin(freq*i + 4*pi/3) * 127 + 128; 14 15 printf("[38;2;%02d;%02d;%02dm", red, green, blue); 16 // TODO: Replace to sprintf? 17 } 18 19 int main(void) { 20 int c, i; 21 double freq = 0.1; 22 23 i = 0; 24 25 while((c = getchar()) != EOF) 26 { 27 rainbow(freq, i); 28 i++; 29 putchar(c); 30 } 31 32 printf("[0m"); 33 34 return 0; 35 }