Rainbow of 1000
████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
Quickly generated text with this java program:
import java.util.Arrays;
public class Rainbow {
/*
* Any color is an int triple of r, g and b value
* */
final static int[] RED = new int[] {0xee, 0x00, 0x00};
final static int[] ORANGE = new int[] {0xee, 0x7e, 0x00};
final static int[] YELLOW = new int[] {0xee, 0xee, 0x00};
final static int[] GREEN = new int[] {0x00, 0xee, 0x00};
final static int[] BLUE = new int[] {0x00, 0x7e, 0xee};
final static int[] PURPLE =new int[] {0xee, 0x00, 0xee};
/*
* transition vectors
* */
final static int[] REDTOORANGE = new int[] {ORANGE[0]-RED[0], ORANGE[1]-RED[1], ORANGE[2]-RED[2]};
final static int[] ORANGETOYELLOW = new int[] {YELLOW[0]-ORANGE[0], YELLOW[1]-ORANGE[1], YELLOW[2]-ORANGE[2]};
final static int[] YELLOWTOGREEN = new int[] {GREEN[0]-YELLOW[0], GREEN[1]-YELLOW[1], GREEN[2]-YELLOW[2]};
final static int[] GREENTOBLUE = new int[] {BLUE[0]-GREEN[0], BLUE[1]-GREEN[1], BLUE[2]-GREEN[2]};
final static int[] BLUETOPURPLE = new int[] {PURPLE[0]-BLUE[0], PURPLE[1]-BLUE[1], PURPLE[2]-BLUE[2]};
final static int[] PURPLETORED =new int[] {RED[0]-PURPLE[0], RED[1]-PURPLE[1], RED[2]-PURPLE[2]};
/*
* indexing colors and transition vectors
* */
final static int[][] COLORS = new int[][] {RED, ORANGE, YELLOW, GREEN, BLUE, PURPLE};
final static int[][] COLORDIFFERENCES = new int[][] {REDTOORANGE, ORANGETOYELLOW,
YELLOWTOGREEN, GREENTOBLUE, BLUETOPURPLE, PURPLETORED};
public static void main(String[] args) {
String in = "";
for(int i=0; i<1000; i++) {
in+="█";
}
System.out.println(rainbowformat(in));
}
public static String rainbowformat(String in) {
/*
* Not doing anything when less than 6 characters are put in
* */
if (in.length() < 6)
return in;
/*
* Calculating colors for each character via linear interpolation.
* Before that the string is split as the difference vector changes after the split part
* */
String[] splitstring = splitString(in, 6);
String out = "";
for(int i=0, index = 0; i<6; i++) {
for(int j=0; j<splitstring[0].length(); j++, index++) {
int color = colorToHex(new int[] {
(COLORS[i][0] + j * COLORDIFFERENCES[i][0] / splitstring[0].length()),
(COLORS[i][1] + j * COLORDIFFERENCES[i][1] / splitstring[0].length()),
(COLORS[i][2] + j * COLORDIFFERENCES[i][2] / splitstring[0].length()),
});
out += ("[color=#" + padHex( Integer.toHexString(color)) + "]" +
( (index < in.length()) ? in.charAt(index) : "")
+ "[/color]");
}
}
return out;
}
public static String[] splitString(String in, int parts) {
/*
* Splitting the string to an array with the parts
* */
if (in.length() < parts) {
return new String[] {};
}
final int ONE_NTH_OF_STRING_LENGTH = in.length()%parts >= parts/2 ? in.length() / parts +1 : in.length()/parts;
String[] out = new String[parts];
for (int i = 0; i < out.length; i++) {
out[i] = "";
}
for (int i = 0; i < parts; i++) {
for (int j = 0; j < ONE_NTH_OF_STRING_LENGTH; j++) {
int currentIndex = ONE_NTH_OF_STRING_LENGTH * i + j;
if (currentIndex < in.length()) {
out[i] += in.charAt(currentIndex);
}
}
}
System.out.println(Arrays.toString(out));
return out;
}
/*
* Color-Hex calculations
* */
public static int colorToHex (int[] c) {
return c[0] * 0x10000 + c[1] * 0x100 + c[2];
}
public static String padHex(String hex) {
if(hex.length() >=6 ) return hex;
int numberOfZeroes = 6-hex.length();
String padding = "";
for(int i=0; i<numberOfZeroes; i++) {
padding+="0";
}
return padding + hex;
}
}