Skip to content

Instantly share code, notes, and snippets.

@roryokane
Last active October 15, 2017 05:39
Show Gist options
  • Select an option

  • Save roryokane/f15bb23abcf9938c0707 to your computer and use it in GitHub Desktop.

Select an option

Save roryokane/f15bb23abcf9938c0707 to your computer and use it in GitHub Desktop.

Revisions

  1. roryokane revised this gist Jun 23, 2015. 1 changed file with 2 additions and 3 deletions.
    5 changes: 2 additions & 3 deletions find collisions between rounded HUSL triads.js
    Original file line number Diff line number Diff line change
    @@ -6,9 +6,8 @@ function intTo2DigitHex(integer) {
    }
    }

    function findCollisions(quitAfterFindingOne) {
    function findCollisions(numDigitsRounding, quitAfterFindingOne) {
    var knownHusls = {};
    var numDigitsRounding = 2;
    var numCollisionsFound = 0;

    for (var r = 0; r < 256; r++) {
    @@ -36,4 +35,4 @@ function findCollisions(quitAfterFindingOne) {
    console.log("collisions found:", numCollisionsFound);
    }

    findCollisions(false);
    findCollisions(2, false);
  2. roryokane created this gist Jun 23, 2015.
    39 changes: 39 additions & 0 deletions find collisions between rounded HUSL triads.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,39 @@
    function intTo2DigitHex(integer) {
    if (integer < 16) {
    return '0' + integer.toString(16)
    } else {
    return integer.toString(16)
    }
    }

    function findCollisions(quitAfterFindingOne) {
    var knownHusls = {};
    var numDigitsRounding = 2;
    var numCollisionsFound = 0;

    for (var r = 0; r < 256; r++) {
    for (var g = 0; g < 256; g++) {
    for (var b = 0; b < 256; b++) {
    var thisHex = intTo2DigitHex(r) + intTo2DigitHex(g) + intTo2DigitHex(b);

    var husl = $.husl.fromHex(thisHex);
    roundedHuslString = husl.map(function(num){ return num.toFixed(numDigitsRounding) }).join(',');

    if (knownHusls[roundedHuslString]) {
    var oldHex = knownHusls[roundedHuslString];
    console.log("found collision", roundedHuslString, "for hexes", thisHex, "and", oldHex);
    numCollisionsFound++;
    if (quitAfterFindingOne) return;
    } else {
    knownHusls[roundedHuslString] = thisHex;
    }
    }
    }
    console.log("finished enumerating gs and bs for r =", r);
    console.log("collisions found so far:", numCollisionsFound);
    }

    console.log("collisions found:", numCollisionsFound);
    }

    findCollisions(false);