JSFiddle - React, Tailwind, and code Playground

by evan

HTML

<input id="addvalue" type="text" />
<button id="addbutton">add</button>
<button id="testbutton">test</button>
<button id="resetbutton">reset</button>
<div id="bitarray"></div>

CSS

#bitarray {
    margin-top: 3px;
}

#bitarray span {
    display: inline-block;
    width: 20px;
    height: 20px;
    font-size: 18px;
    line-height: 20px;
    font-family: monaco;
    border: 1px solid #666;
    margin: 1px;
    text-align: center;
}

.one {
        background: #eee;

}

.hilite {
    color: red;
    background: #fdd;
}

JavaScript

/* Lettering.JS 0.6.1 by Dave Rupert  - http://daverupert.com */
(function($){function injector(t,splitter,klass,after){var a=t.text().split(splitter),inject='';if(a.length){$(a).each(function(i,item){inject+='<span class="'+klass+(i+1)+'">'+item+'</span>'+after});t.empty().append(inject)}}var methods={init:function(){return this.each(function(){injector($(this),'','char','')})},words:function(){return this.each(function(){injector($(this),' ','word',' ')})},lines:function(){return this.each(function(){var r="eefec303079ad17405c889e092e105b0";injector($(this).children("br").replaceWith(r).end(),r,'line','')})}};$.fn.lettering=function(method){if(method&&methods[method]){return methods[method].apply(this,[].slice.call(arguments,1))}else if(method==='letters'||!method){return methods.init.apply(this,[].slice.call(arguments,0))}$.error('Method '+method+' does not exist on jQuery.lettering');return this}})(jQuery);

var pad = function (str, max) {
  return str.length < max ? pad("0" + str, max) : str;
}
    
var hashFunctions = [];
// length
hashFunctions.push(function (v) {return v.length;});
// vowels
hashFunctions.push(function (v) {return (v.match(/a|e|i|o|u/g) || "").length});
// character codes
hashFunctions.push(function (v) {
    var r = 0, j = 0;
    for (j; j < v.length; j++) {
        r += v.charCodeAt(j);
    }
    return r;
});

var bitArray = 0;
var n = 24;
                                 
var lastCalced = [];
                                 
var calcHashes = function (value) {
    var bitTemp = 0, r, arr = [];
    $.each(hashFunctions, function (idx, fn) {
        r = fn(value) % n;
        arr.push(r);
        bitTemp = bitTemp | Math.pow(2, r);
    });
    lastCalced = arr;
    return [bitTemp, arr];
};

var add = function (value) {
    bitArray = bitArray | calcHashes(value)[0];
};
                                 
var test = function (value) {
    var tested = calcHashes(value);
    alert(tested & bitArray);
}

var print = function () {
   ...