kann man diesen code komprimieren?



  • if(a == b || a == c || a == d) {
      printf("bcd");
      if(a == b) printf("abc");
      else if(a == c) printf("def");
      else if(a == d) printf("ghi");
    }
    
    else if(a == e || a == f || a == g) {
      printf("efg");
      if(a == e) printf("abc");
      else if(a == f) printf("def");
      else if(a == g) printf("ghi");
    }
    


  • if(a == b) printf("bcdabc"); 
      if(a == c) printf("bcddef"); 
      if(a == d) printf("bcdghi"); 
      if(a == e) printf("efgabc"); 
      if(a == f) printf("efgdef"); 
      if(a == g) printf("efgghi");
    


  • uuencode in der Verbindung mit bzip2 gibt mir folgende Komprimierung:

    begin 644 -
    M0EIH.3%!62936?AHR+,``')9@``04&``"C_E7`X@`((*J>DD>IB&@&0*J1H`
    M:`#U..:VZ](,RW!H,$,5WM(U5$AU[9;5)-O'IY&08QB^,2>1F.I;4MHD2)$R
    M1W56J32EV]E-%Z>);LX&PO?:G-L[3$"Z2\3$#Z2!-Z5%'XNY(IPH2'PT9%F`
    `
    end
    


  • Zwar ungetestet, aber wer will das schon so machen:

    int arr[]={b,c,d,e,f,g,a};
    int i; for(i=0;arr[i]-a;++i);
    char abc[][]={"abc","def","ghi","bcd","efg"};
    if(6-i)printf("%s%s",abc[3+i/3],abc[i%3]);
    


  • printf(&"\0bcd\0efg"[a==b|a==c|a==d?1:5*(a==e|a==f|a==g)]);
    printf(&"\0abc\0def\0ghi"[a==b|a==e?1:a==c|a==f?5:(a==d|a==g)*9]);
    


  • Mal ganz ehrlich?

    Schaut wie eine simple Anfänger-Hausaufgabe aus und ich gehe mal stark davon aus, dass diese Lösung hier genau das ist, was erwartet wurde...

    .|.< schrieb:

    if(a == b) printf("bcdabc"); 
      if(a == c) printf("bcddef"); 
      if(a == d) printf("bcdghi"); 
      if(a == e) printf("efgabc"); 
      if(a == f) printf("efgdef"); 
      if(a == g) printf("efgghi");
    


  • ChrisIT schrieb:

    Mal ganz ehrlich?

    Schaut wie eine simple Anfänger-Hausaufgabe aus und ich gehe mal stark davon aus, dass diese Lösung hier genau das ist, was erwartet wurde...

    .|.< schrieb:

    if(a == b) printf("bcdabc"); 
      if(a == c) printf("bcddef"); 
      if(a == d) printf("bcdghi"); 
      if(a == e) printf("efgabc"); 
      if(a == f) printf("efgdef"); 
      if(a == g) printf("efgghi");
    

    OK... doch nicht. Man bedenke, dass ja a = b = c = d = e = f = g zu einem ziemlich Kauderwelsch führen würde, da es kein else if ist 🙂

    Das von Wutz ist wahrscheinlich die am schwierigsten nachvollziehbare und gleichzeitig am stärksten "komprimierte" Darstellungsvariante ,o)


Anmelden zum Antworten