URI Online Judge | 2338
Timelimit: 1
Morse
Por Syed Sarfaraz Akhtar, IIITH
India

Todos os seus amigos estão loucos pelo filme "Interstellar". Agora eles estão postando textos no Facebook em Código Morse. Você precisa escrever um código para decodificar Morse!
Este Código Morse contém somente letras minúsculas (a-z) e espaços em branco.
Nota - Código Morse é uma forma de codificar caracteres em uma sequências de pontos e traços. Cada caracter tem uma codificação fixa. Um exemplo bem famoso é o Morse de SOS "...---..." . S é codificado como "..." (ponto ponto ponto) e O é codificado como "---" (traço traço traço).
Neste problema, um ponto é denotado por "=" e um traço por "===". Símbolos são separados por "." , letras são separadas por "..." e palavras são separadas por "......." .
Sendo assim, SOS é codificado como =.=.=...===.===.===...=.=.=
Codificações para todos os caracteres podem ser encontradas no link abaixo.
Neste problema, um ponto é denotado por "=" e um traço por "===". Símbolos são separados por "." , letras são separadas por "..." e palavras são separadas por "......." .
Sendo assim, SOS é codificado como =.=.=...===.===.===...=.=.=
Codificações para todos os caracteres podem ser encontradas no link abaixo.
Entrada
A entrada consiste em múltiplos casos de teste.
A primeira linha de cada entrada contém o número de casos de teste (t)(1 <= t <= 10).
As próximas t linhas contém os Códigos Morse. O tamanho de cada código é menor que 1000 caracteres.
Saída
A saída é divida em linhas, que representam a mensagem decodificada de cada caso de teste.
URI Online Judge | 2338
Timelimit: 1
Morse
By Syed Sarfaraz Akhtar, IIITH
India

All your friends are crazy about the movie "Interstellar". They are now posting on facebook in Morse code. You need to write a code to decode Morse!!
These Morse codes only contain lowercase english letters(a-z) and whitespaces.
Note - Morse code is a way to encode characters as a sequence of dits and dashes. Each character has a fixed encoding. An example of a famous morse code is that of SOS "...---..." . S is encoded as "..." (dit dit dit) and O is encoded as "---" (dash dash dash).
In this problem, a dit is denoted by "=" and a dash is denoted by "===". Symbols are seperated by "." , letters are seperated by "..." and words are seperated by "......." .
So, SOS is encoded as =.=.=...===.===.===...=.=.=
Encodings for all the characters can be found at the link given below.
In this problem, a dit is denoted by "=" and a dash is denoted by "===". Symbols are seperated by "." , letters are seperated by "..." and words are seperated by "......." .
So, SOS is encoded as =.=.=...===.===.===...=.=.=
Encodings for all the characters can be found at the link given below.
Input
There are multiple test cases.
The first line of the input contains the number of test cases (t)(1 <= t <= 10).
The next t lines contain morse codes. The length of each code is less than 1000 characters
Output
Output the decoded codes in a new line for each test case.
#include <stdio.h>
int main()
{
int tst, i, j, l, cndtn = 0;
char str[1000*2], tmp[15];
scanf("%d", &tst);
for(i = 1; i<=tst; i++)
{
scanf("%s", str);
for(j = 0; j < strlen(str) ;)
{
for(l = 0; ;l++)
{
if(str[j] == '=')
{
tmp[l] = '=';
j += 1;
}
else if(str[j] == '.' && str[j+1] == '.' && str[j+3] == '.')
{
j += 7;
tmp[l] = '\0';
cndtn = 1;
break;
}
else if((str[j] == '.' && str[j+1] == '.' && str[j+2] == '.'))
{
j += 3;
tmp[l] = '\0';
break;
}
else
{
tmp[l] = '.';
j += 1;
}
if(strlen(str) <= j)
{
tmp[l+1] = '\0';
j += 1;
break;
}
}
if(strcmp( tmp, "=.===") == 0) printf("a");
else if(strcmp( tmp, "===.=.=.=") == 0) printf("b");
else if(strcmp( tmp, "===.=.===.=") == 0) printf("c");
else if(strcmp( tmp, "===.=.=") == 0) printf("d");
else if(strcmp( tmp, "=") == 0) printf("e");
else if(strcmp( tmp, "=.=.===.=") == 0) printf("f");
else if(strcmp( tmp, "===.===.=") == 0) printf("g");
else if(strcmp( tmp, "=.=.=.=") == 0) printf("h");
else if(strcmp( tmp, "=.=") == 0) printf("i");
else if(strcmp( tmp, "=.===.===.===") == 0) printf("j");
else if(strcmp( tmp, "===.=.===") == 0) printf("k");
else if(strcmp( tmp, "=.===.=.=") == 0) printf("l");
else if(strcmp( tmp, "===.===") == 0) printf("m");
else if(strcmp( tmp, "===.=") == 0) printf("n");
else if(strcmp( tmp, "===.===.===") == 0) printf("o");
else if(strcmp( tmp, "=.===.===.=") == 0) printf("p");
else if(strcmp( tmp, "===.===.=.===") == 0) printf("q");
else if(strcmp( tmp, "=.===.=") == 0) printf("r");
else if(strcmp( tmp, "=.=.=") == 0) printf("s");
else if(strcmp( tmp, "===") == 0) printf("t");
else if(strcmp( tmp, "=.=.===") == 0) printf("u");
else if(strcmp( tmp, "=.=.=.===") == 0) printf("v");
else if(strcmp( tmp, "=.===.===") == 0) printf("w");
else if(strcmp( tmp, "===.=.=.===") == 0) printf("x");
else if(strcmp( tmp, "===.=.===.===") == 0) printf("y");
else if(strcmp( tmp, "===.===.=.=") == 0) printf("z");
if(cndtn == 1)
{
printf(" ");
cndtn = 0;
}
}
printf("\n");
}
return 0;
}
int main()
{
int tst, i, j, l, cndtn = 0;
char str[1000*2], tmp[15];
scanf("%d", &tst);
for(i = 1; i<=tst; i++)
{
scanf("%s", str);
for(j = 0; j < strlen(str) ;)
{
for(l = 0; ;l++)
{
if(str[j] == '=')
{
tmp[l] = '=';
j += 1;
}
else if(str[j] == '.' && str[j+1] == '.' && str[j+3] == '.')
{
j += 7;
tmp[l] = '\0';
cndtn = 1;
break;
}
else if((str[j] == '.' && str[j+1] == '.' && str[j+2] == '.'))
{
j += 3;
tmp[l] = '\0';
break;
}
else
{
tmp[l] = '.';
j += 1;
}
if(strlen(str) <= j)
{
tmp[l+1] = '\0';
j += 1;
break;
}
}
if(strcmp( tmp, "=.===") == 0) printf("a");
else if(strcmp( tmp, "===.=.=.=") == 0) printf("b");
else if(strcmp( tmp, "===.=.===.=") == 0) printf("c");
else if(strcmp( tmp, "===.=.=") == 0) printf("d");
else if(strcmp( tmp, "=") == 0) printf("e");
else if(strcmp( tmp, "=.=.===.=") == 0) printf("f");
else if(strcmp( tmp, "===.===.=") == 0) printf("g");
else if(strcmp( tmp, "=.=.=.=") == 0) printf("h");
else if(strcmp( tmp, "=.=") == 0) printf("i");
else if(strcmp( tmp, "=.===.===.===") == 0) printf("j");
else if(strcmp( tmp, "===.=.===") == 0) printf("k");
else if(strcmp( tmp, "=.===.=.=") == 0) printf("l");
else if(strcmp( tmp, "===.===") == 0) printf("m");
else if(strcmp( tmp, "===.=") == 0) printf("n");
else if(strcmp( tmp, "===.===.===") == 0) printf("o");
else if(strcmp( tmp, "=.===.===.=") == 0) printf("p");
else if(strcmp( tmp, "===.===.=.===") == 0) printf("q");
else if(strcmp( tmp, "=.===.=") == 0) printf("r");
else if(strcmp( tmp, "=.=.=") == 0) printf("s");
else if(strcmp( tmp, "===") == 0) printf("t");
else if(strcmp( tmp, "=.=.===") == 0) printf("u");
else if(strcmp( tmp, "=.=.=.===") == 0) printf("v");
else if(strcmp( tmp, "=.===.===") == 0) printf("w");
else if(strcmp( tmp, "===.=.=.===") == 0) printf("x");
else if(strcmp( tmp, "===.=.===.===") == 0) printf("y");
else if(strcmp( tmp, "===.===.=.=") == 0) printf("z");
if(cndtn == 1)
{
printf(" ");
cndtn = 0;
}
}
printf("\n");
}
return 0;
}
Nenhum comentário:
Postar um comentário