/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
hslToRgb(240.0 / 360.0, 1.0, 0.5);
// expected result: [0, 0, 255]
}
public static double[] hslToRgb(double h, double s, double l){
System.
out.
println("HSL: " + h
+ ", " + s
+ ", " + l
);
double r = -1;
double b = -1;
double g = -1;
if(s == 0){
r = l;
b = l;
g = l;
}else{
double q = l < 0.5 ? l * (1 + s) : l + s - l * s;
double p = 2 * l - q;
r = hueToRgb(p, q, h + (1.0 / 3));
g = hueToRgb(p, q, h);
b = hueToRgb(p, q, h - (1.0 / 3));
}
System.
out.
println("RGB: " + r
+ ", " + g
+ ", " + b
); double[] rgb = {r, g, b};
return rgb;
}
private static double hueToRgb(double p, double q, double t){
if(t < 0){
t++;
}
if(t > 1){
t--;
}
if(t < 1.0 / 6){
return p + (q - p) * 6 * t;
}
if(t < 1.0 / 2){
return q;
}
if(t < 2.0 / 3){
return p + (q - p) * ((2.0 / 3) - t) * 6;
}
return p;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCWhzbFRvUmdiKDI0MC4wIC8gMzYwLjAsIDEuMCwgMC41KTsKCQkvLyBleHBlY3RlZCByZXN1bHQ6IFswLCAwLCAyNTVdCgl9CgkKCXB1YmxpYyBzdGF0aWMgZG91YmxlW10gaHNsVG9SZ2IoZG91YmxlIGgsIGRvdWJsZSBzLCBkb3VibGUgbCl7CgoJICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSFNMOiAiICsgaCArICIsICIgKyBzICsgIiwgIiArIGwpOwoJCgkgICAgZG91YmxlIHIgPSAtMTsKCSAgICBkb3VibGUgYiA9IC0xOwoJICAgIGRvdWJsZSBnID0gLTE7CgkKCSAgICBpZihzID09IDApewoJCgkgICAgICAgIHIgPSBsOwoJICAgICAgICBiID0gbDsKCSAgICAgICAgZyA9IGw7CgkKCSAgICB9ZWxzZXsKCQoJICAgICAgICBkb3VibGUgcSA9IGwgPCAwLjUgPyBsICogKDEgKyBzKSA6IGwgKyBzIC0gbCAqIHM7CgkgICAgICAgIGRvdWJsZSBwID0gMiAqIGwgLSBxOwoJCgkgICAgICAgIHIgPSBodWVUb1JnYihwLCBxLCBoICsgKDEuMCAvIDMpKTsKCSAgICAgICAgZyA9IGh1ZVRvUmdiKHAsIHEsIGgpOwoJICAgICAgICBiID0gaHVlVG9SZ2IocCwgcSwgaCAtICgxLjAgLyAzKSk7CgkgICAgfQoJCgkgICAgciA9IE1hdGgucm91bmQociAqIDI1NSk7CgkgICAgYiA9IE1hdGgucm91bmQoYiAqIDI1NSk7CgkgICAgZyA9IE1hdGgucm91bmQoZyAqIDI1NSk7CgkKCSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlJHQjogIiArIHIgKyAiLCAiICsgZyArICIsICIgKyBiKTsKCSAgICBkb3VibGVbXSByZ2IgPSB7ciwgZywgYn07CgkKCSAgICByZXR1cm4gcmdiOwoJfQoJCglwcml2YXRlIHN0YXRpYyBkb3VibGUgaHVlVG9SZ2IoZG91YmxlIHAsIGRvdWJsZSBxLCBkb3VibGUgdCl7CgkKCSAgICBpZih0IDwgMCl7CgkKCSAgICAgICAgdCsrOwoJICAgIH0KCQoJICAgIGlmKHQgPiAxKXsKCQoJICAgICAgICB0LS07CgkgICAgfQoJCgkgICAgaWYodCA8IDEuMCAvIDYpewoJCgkgICAgICAgIHJldHVybiBwICsgKHEgLSBwKSAqIDYgKiB0OwoJICAgIH0KCQoJICAgIGlmKHQgPCAxLjAgLyAyKXsKCQoJICAgICAgICByZXR1cm4gcTsKCSAgICB9CgkKCSAgICBpZih0IDwgMi4wIC8gMyl7CgkKCSAgICAgICAgcmV0dXJuIHAgKyAocSAtIHApICogKCgyLjAgLyAzKSAtIHQpICogNjsKCSAgICB9CgkKCSAgICByZXR1cm4gcDsKCX0KfQ==