es un juego de programacion uno de los niveles hay que pasar una cadena ascii a su equivalente binario para luego pasar el binario a su sistema"chuck norris".
http://www.codingame.com
el ejemplo que dan es c= 1000011
chuck norris c=0 0 00 0000 0 00
cc=10000111000011
chuck norris cc= 0 0 00 0000 0 000 00 0000 0 00
si comienza en 0(el primer bloque) los que le siguen(segundo bloque) hasta el espacio son unos y si comienza en 00 los ceros que le siguen son ceros hasta el espacio
mi codigo es:
Código
pero no esta funcionando como deberia con c y cc funciona, o si le pasan % pero si le pasan:
#include <stdlib.h> #include <stdio.h> #include <string.h> /** * Auto-generated code below aims at helping you parse * the standard input according to the problem statement. **/ int main() { char MESSAGE[100]; int letra; int Ascii; int binario[50]; int temp; int contador=0; int reverso[700]; int indice=0; char chuck_norris[700]; int unocero=0; int unomas=0; short bloque1=0; // Write an action using printf(). DON'T FORGET THE TRAILING \n // To debug: fprintf(stderr, "Debug messages...\n"); //--------------------------- for(int a=0;a<size;a++){ if(MESSAGE[a]!='\0' && MESSAGE[a]!='\n') { letra=MESSAGE[a];//tomo el valor ascii if(letra<=64) { reverso[0]=0; unomas=1; //si es menor a el codigo ascii 64 se le pone un cero al comienzo eso es uno mas } //---------------------------- contador=0; temp=letra; //convierto el numero a binario while(temp>0){ binario[contador]=(temp%2); temp=temp/2; contador++; } int conta3=contador-1; //contador es el largo de binario contador=contador+unomas;//si es menor a 64 se le pone un cero al comienzo eso es uno mas for(int inv=0;inv<contador;inv++) { reverso[inv+unomas]=binario[conta3];// binario estan los numeros al reves asi que le doy la vuelta conta3--; } //ahora lo pasare a el codigo chuck norris for(int final=0;final<contador;final++){ //si bloque1=1 entonces estamos en el segundo bloque y se le agrega un cero si continua siendo el mismo del primer bloque unocero if(bloque1==1){ if(reverso[final]==unocero) { chuck_norris[indice]='0';indice++; } else { chuck_norris[indice]=' ';indice++; bloque1=0; } } //------------------------------------ if(reverso[final]==1 && bloque1==0) //si estamos en el primer bloque y es un uno escribe en la respuesta 0 0 { chuck_norris[indice]='0';indice++; chuck_norris[indice]=' ';indice++; chuck_norris[indice]='0';indice++; bloque1=1; // cambiamos de bloque unocero=1; //si cambia este numero es que se acabaron los unos repetidos } else if(reverso[final]==0 && bloque1==0) //si estamos en el primer bloque y es un cero escribe en la respuesta 00 0 { chuck_norris[indice]='0';indice++; chuck_norris[indice]='0';indice++; chuck_norris[indice]=' ';indice++; chuck_norris[indice]='0';indice++; bloque1=1;// cambiamos de bloque unocero=0;//si cambia este numero es que se acabaron los unos repetidos } //---------------------- } chuck_norris[indice]='\0';// se le agrega el final de la cadena } }
http://www.codingame.com/ide/fileservlet?id=373674626189
la salida deberia ser:
http://www.codingame.com/ide/fileservlet?id=373685797831
pero no es alguna idea?