1

Here is exercice and example

Binary with 0 and 1 is good, but binary with only 0, or almost, is even better! Originally, this is a concept designed by Chuck Norris to send so called unary messages.

Write a program that takes an incoming message as input and displays as output the message encoded using Chuck Norris’ method.

Rules

Here is the encoding principle:

The input message consists of ASCII characters (7-bit) The encoded output message consists of blocks of 0 A block is separated from another block by a space Two consecutive blocks are used to produce a series of same value bits (only 1 or 0 values): - First block: it is always 0 or 00. If it is 0, then the series contains 1, if not, it contains 0 - Second block: the number of 0 in this block is the number of bits in the series Example Let’s take a simple example with a message which consists of only one character: Capital C. C in binary is represented as 1000011, so with Chuck Norris’ technique this gives:

0 0 (the first series consists of only a single 1)
00 0000 (the second series consists of four 0)
0 00 (the third consists of two 1)
So C is coded as: 0 0 00 0000 0 00

Second example, we want to encode the message CC (i.e. the 14 bits 10000111000011) :

0 0 (one single 1)
00 0000 (four 0)
0 000 (three 1)
00 0000 (four 0)
0 00 (two 1)
So CC is coded as: 0 0 00 0000 0 000 00 0000 0 00

I m stuck on the string "%";

const MESSAGE = "%";
let binaryMess="";
for(let i = 0; i<MESSAGE.length; i++){
    binaryMess += MESSAGE.charCodeAt(i).toString(2);
}
const regex = /(1*)(0*)/g;
const answer = binaryMess.replace(regex, (str, g1, g2)=>{
  let a="", b="";
  if(g1)a = "0 "+"0".repeat(g1.length);
  if(g2)b = "00 "+"0".repeat(g2.length);

  if(a&&b){return a + " " + b + " ";}
  else if(a){return a + " "}
  else if(b){return b + " "}
  else{return ""}
});



console.log(answer.trim()); 

The result => Failure Found: 0 0 00 00 0 0 00 0 0 0 Expected: 00 0 0 0 00 00 0 0 00 0 0 0

Any idea why it s not working? I managed to do it with "c" "cc" but didn't with "%" and "Chuck Norris' keyboard has 2 keys: 0 and white space."

3
  • 2
    .toString(2).padStart(7, "0"); would probably help, yet maybe not fix everything. Commented May 14, 2020 at 20:08
  • Well it worked thanks, I don't understand padStart but I m going to look it up! Commented May 14, 2020 at 20:11
  • 1
    Well e.g. for a space, " ", the binary doesn't have seven digits - it's 0b100000. For an encoding like this (7 bit blocks), you always want full seven bits, 0100000. You need to "pad the start", if necessary. Commented May 14, 2020 at 20:13

1 Answer 1

1

.toString(2).padStart(7, "0"); would probably help, yet maybe not fix everything. – ASDFGerte

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.