Javascript 如何使用程序从行中间用8种不同的代码填充128个框

Javascript 如何使用程序从行中间用8种不同的代码填充128个框,javascript,algorithm,sorting,bubble-sort,divide-and-conquer,Javascript,Algorithm,Sorting,Bubble Sort,Divide And Conquer,我想用不同数量的颜色填充128个盒子 让我们考虑有8种颜色来填充这些框,请检查下面的视觉表示以获得预期的输出。 我尝试过使用Javascript,但没有得到预期的结果 window.onload=function(){ var res='' ,顺序={} ,levels={'#':'红色','&':'009688','O':'FF9800','@':'FFEB3B','%':'9C27B0','*':'2196F3','^':'00BCD4','-':'FF9800'- ,符号=对象。关键点

我想用不同数量的颜色填充128个盒子

让我们考虑有8种颜色来填充这些框,请检查下面的视觉表示以获得预期的输出。

我尝试过使用Javascript,但没有得到预期的结果

window.onload=function(){
var res=''
,顺序={}
,levels={'#':'红色','&':'009688','O':'FF9800','@':'FFEB3B','%':'9C27B0','*':'2196F3','^':'00BCD4','-':'FF9800'-
,符号=对象。关键点(级别)
,totalLevels=symbols.length;
对于(i=0;i<128;i++){order[i+1]='';}
变量ID=“”;

对于(v=1;v此公式与您的描述不匹配:

 Math.ceil(128/level);
因为你描述了二的幂(64,32,…),但这里你得到的结果是128/3=43

虽然不完全匹配(请参见我在您问题下方的评论),但您可以在数字的二进制表示形式中计算尾随零的数量,并从零开始计数(因此0..127):

十进制的 7位二进制 #尾随零 颜色 0 0000000 7. 红色 1. 0000001 0 灰色 2. 0000010 1. 紫色 3. 0000011 0 灰色 4. 0000100 2. 橙色 ... ... ... ... 8. 0001000 3. 青色 ... ... ... ... 16 0010000 4. 黄色的 ... ... ... ... 32 0100000 5. 蓝色 ... ... ... ... 64 1000000 6. 绿色 ... ... ... ... 127 1111111 0 灰色 128 0000000 7. 红色
为什么1..128的中间值等于64?我的意思是,1..128有偶数个值,所以没有中间元素。65和64一样中间…@trincot没有严格的规则。如果
n==0
,那么中间值应该是
n+=1
n-=1
。如果我们对所有级别都这样做,那就好了。