Skip to content

Instantly share code, notes, and snippets.

@jmetev1
Created September 26, 2019 05:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jmetev1/8e7b204136dae3ddcc4f4139a1ece50e to your computer and use it in GitHub Desktop.
Save jmetev1/8e7b204136dae3ddcc4f4139a1ece50e to your computer and use it in GitHub Desktop.
fuzzy color matching
const colors = ["aliceblue","antiquewhite","aqua","aquamarine", "azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"]
const inner = w => {
if (w.length < 3) return [...w, w[0] +w[1]];
let last = w.pop()
let o = inner(w)
return o.concat([...o.map(string => string + last), last])
}
const makeSubset = word => inner(word.split('')).reduce((a,c) => {
if (c.length > 1) a.add(c)
return a
}, new Set())
const wordToSetMap = colors.reduce((a,c) => {
a[c] = makeSubset(c)
return a
}, {})
const fuzzy = i => {
return Object.entries(wordToSetMap).reduce((acc, [key, set]) => {
if (set.has(i)) acc.push(key)
return acc
}, [])
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment