entenderia que nadie comente xDD.
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.comel 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:
#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];
fgets(MESSAGE
,100,stdin
); 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
}
}
printf("%s\n",chuck_norris
);//escribe la respuesta
pero no esta funcionando como deberia con c y cc funciona, o si le pasan % pero si le pasan:
http://www.codingame.com/ide/fileservlet?id=373674626189la salida deberia ser:
http://www.codingame.com/ide/fileservlet?id=373685797831pero no es alguna idea?