Javascript JS函数,用于写出一个单词,二进制计数器样式
如何创建循环以输出任何给定单词,如下所示: …如果单词是“abcd”Javascript JS函数,用于写出一个单词,二进制计数器样式,javascript,string,binary,Javascript,String,Binary,如何创建循环以输出任何给定单词,如下所示: …如果单词是“abcd” a--- -b-- ab-- --c- a-c- -bc- abc- ---d a--d -b-d ab-d --cd a-cd -bcd abcd 换句话说,字母以二进制计数器顺序出现 1000 0100 1100 0010 1010 等等 谢谢看起来你实际上想要的是二进制计数的倒数;i、 e.对于二进制,它将是 0001 0010 0011 但你在翻它。这很好。下面的代码从0计数到四个字母单词所需的数字16,获取每个
a---
-b--
ab--
--c-
a-c-
-bc-
abc-
---d
a--d
-b-d
ab-d
--cd
a-cd
-bcd
abcd
换句话说,字母以二进制计数器顺序出现
1000
0100
1100
0010
1010
等等
谢谢看起来你实际上想要的是二进制计数的倒数;i、 e.对于二进制,它将是
0001
0010
0011
但你在翻它。这很好。下面的代码从0计数到四个字母单词所需的数字16,获取每个数字的二进制表示形式,将其反转,并在二进制表示形式中有一个字母的地方输出单词的字母
function letterScroller(str) {
var iterations = Math.pow(2,str.length);//iterate from 0 to 2**wordlength
var result = "";
for (i=0;i<iterations;i++) {
//get the binary representation, pad it, and reverse it
var bin = reverse(pad(i.toString(2), str.length));
//loop through binary, adding character of word where there's a 1
for (j=0;j<str.length;j++) {
if (bin.charAt(j)=="1") {
result += str.charAt(j)
} else {
result += "-";
}
}
result += "<br />"; //separate lines with HTML line break
}
return result;
}
function pad(str, length) {
while (str.length < length) {
str="0" + str;
}
return str;
}
function reverse (str) {
return str.split("").reverse().join("");
}
看起来你实际上想要的是二进制计数的倒数;i、 e.对于二进制,它将是
0001
0010
0011
但你在翻它。这很好。下面的代码从0计数到四个字母单词所需的数字16,获取每个数字的二进制表示形式,将其反转,并在二进制表示形式中有一个字母的地方输出单词的字母
function letterScroller(str) {
var iterations = Math.pow(2,str.length);//iterate from 0 to 2**wordlength
var result = "";
for (i=0;i<iterations;i++) {
//get the binary representation, pad it, and reverse it
var bin = reverse(pad(i.toString(2), str.length));
//loop through binary, adding character of word where there's a 1
for (j=0;j<str.length;j++) {
if (bin.charAt(j)=="1") {
result += str.charAt(j)
} else {
result += "-";
}
}
result += "<br />"; //separate lines with HTML line break
}
return result;
}
function pad(str, length) {
while (str.length < length) {
str="0" + str;
}
return str;
}
function reverse (str) {
return str.split("").reverse().join("");
}
有了KennyTM的代码,它可以很容易地完成
String.prototype.reverse = function(){
splitext = this.split("");
revertext = splitext.reverse();
reversed = revertext.join("");
return reversed;
}
str='abcd'; //your string
for(var i=0;i<20;i++){ //a loop of numbers
var result='';
var ii=i.toString(2).reverse();
for(var q=0;q<Math.max(ii.length,str.length);q++){
if(ii.charAt(q)=='1'){
result+=str.charAt(q);
}else{
result+='-';
}
}
document.write(result+'<br>');
}
这很有趣:
你需要它做什么?用KennyTM的代码可以很容易地完成
String.prototype.reverse = function(){
splitext = this.split("");
revertext = splitext.reverse();
reversed = revertext.join("");
return reversed;
}
str='abcd'; //your string
for(var i=0;i<20;i++){ //a loop of numbers
var result='';
var ii=i.toString(2).reverse();
for(var q=0;q<Math.max(ii.length,str.length);q++){
if(ii.charAt(q)=='1'){
result+=str.charAt(q);
}else{
result+='-';
}
}
document.write(result+'<br>');
}
function doStuff(word) {
var wordLength = word.length, num = 1 << wordLength;
var i, bit, wordChars = word.split(""), chars;
for (var i = 1; i < num; ++i) {
chars = [];
for (bit = 0; bit < wordLength; ++bit) {
chars.push( i & 1 << bit ? wordChars[bit] : "-" );
}
console.log( chars.join("") );
}
}
doStuff("abcd");
这很有趣:
你需要它做什么?以下是简短版本:
function doStuff(word) {
var wordLength = word.length, num = 1 << wordLength;
var i, bit, wordChars = word.split(""), chars;
for (var i = 1; i < num; ++i) {
chars = [];
for (bit = 0; bit < wordLength; ++bit) {
chars.push( i & 1 << bit ? wordChars[bit] : "-" );
}
console.log( chars.join("") );
}
}
doStuff("abcd");
var string = 'abcd';
for (i = 1; i < Math.pow(string.length,2); i++) {
str = "";
for (j = 0; j < string.length; j++) {
if (i & (1 << j))
str += string[j];
else
str += "-";
}
console.log(str);
}
享受吧 以下是简短的版本:
var string = 'abcd';
for (i = 1; i < Math.pow(string.length,2); i++) {
str = "";
for (j = 0; j < string.length; j++) {
if (i & (1 << j))
str += string[j];
else
str += "-";
}
console.log(str);
}
享受吧
只需将i从1循环到2^length-1
只需将循环i从1到2^length-113.toString2==1101;这就是如何得到一个二进制数字-我需要一个给定单词的字母以二进制顺序一个接一个地输出。。。i、 e.循环的步骤4将输出上面的-c-。谢谢,不过:-13.ToString==1101;这就是如何得到一个二进制数字-我需要一个给定单词的字母以二进制顺序一个接一个地输出。。。i、 e.循环的步骤4将输出上面的-c-。谢谢,不过:-你的反向功能是错误的我相信你,但你能给我一个潜在的错误的例子吗?我得到了想要的输出。你的反向函数是错误的。我相信你,但是你能给我一个潜在错误的例子吗?我得到了想要的输出。哈哈,你的更短!很好这是一个伟大的一个-短而甜:-哈哈,你的更短!很好这是一个很好的例子-简短而甜蜜:-我想用它作为一种进度指示器-像一个旋转器,但是计算起来…如果你用'Math.powstr.length,2'替换'20',你会得到正确的循环数…我想用它作为一种进度指示器-像一个旋转器,但是计算起来…如果你用'Math.powstr.length'替换'20',那么,2',你得到了正确的循环数。。。