fork download
  1. #include <ctype.h>
  2. #include <string.h>
  3.  
  4. int isvalid(char c){
  5. return c>29 ? 1 : 0 ;
  6. }
  7.  
  8. void read_sequence( char result[] ){
  9. char c;
  10. int i = 0;
  11. while(isvalid(c=getchar_unlocked())){
  12. result[i] = c; i++;
  13. } result[i] = '\0';
  14. }
  15.  
  16.  
  17. char* read(char str[]) {
  18. size_t size = strlen(str);
  19. char* ret = (char*)malloc(size - 3);
  20.  
  21. for (size_t i = 4; i < size; i++)
  22. ret[i - 4] = (str[i - 1] != str[i]) ? '1' : '0';
  23.  
  24. return ret;
  25. }
  26.  
  27. char* write(const char str[]) {
  28. size_t size = strlen(str);
  29. char* ret = (char*)malloc(size + 5);
  30. strcpy(ret, "DDDD"); // Początkowe 4 znaki 'D'
  31.  
  32. for (size_t i = 0; i < size; i++){
  33. if (str[i] == '1')
  34. ret[i + 4] = (ret[i + 3] == 'D') ? 'G' : 'D';
  35. else
  36. ret[i + 4] = (ret[i + 3] == 'D') ? 'D' : 'G';
  37. }
  38. return ret;
  39. }
  40.  
  41. int main() {
  42. char str[1004];
  43. //scanf("%s",str);
  44. read_sequence(str);
  45. char* result = str[0]>64 ? read(str) : write(str) ;
  46. printf("%s",result);
  47.  
  48. free(result);
  49.  
  50. return 0;
  51. }
Success #stdin #stdout 0.01s 5296KB
stdin
DDDD
stdout
Standard output is empty