Skip to main content
12 of 30
added 3 characters in body
Albert Renshaw
  • 3.1k
  • 1
  • 17
  • 37

#C, 511 488 474 470 460 457 453

void f(char*a){char*s;int i=-1,c,o,w,b,e=b=w=o=c,l=3,n,r,z=i,y=0;for(;s=a[++i];c+=s==99,o+=s=='o',w+=s=='w',b+=s==98,e+=s=='e',l+=s=='l');r=l/2;n=c<o?c:o;n=w<n?w:b<n?b:e<n?e:r<n?r:n;c=c==n;o=o==n;w=w==n;b=b==n;e=e==n;if(r==n){if(!(l%2)){l=1;c=o=w=b=e=0;}else{l=2;}}else{l%=2;}n=c+o+w+b+e+l;for(printf("%s",a);s=n?a[++z]:0;s==99&&c?n--,c--:0,s=='o'&&o?n--,o--:0,s=='w'&&w?n--,w--:0,s==98&&b?n--,b--:0,s=='e'&&e?n--,e--:0,s=='l'&&l?n--,l--:0,putchar(s));}

Try it online


Readable format:

void f(char*a) {

    char*s;

    int i=-1,c,o,w,b,e=b=w=o=c,l=3,n,r,z=i,y=0;
    
    for(;s=a[++i];c+=s==99,o+=s=='o',w+=s=='w',b+=s==98,e+=s=='e',l+=s=='l');

    r=l/2;

    n=c<o?c:o;n=w<n?w:b<n?b:e<n?e:r<n?r:n;
    
    c=c==n;o=o==n;w=w==n;b=b==n;e=e==n;
    
    if(r==n){if(!(l%2)){l=1;c=o=w=b=e=0;}else{l=2;}}else{l%=2;}
    
    n=c+o+w+b+e+l;

    for(printf("%s",a);s=n?a[++z]:0;s==99&&c?n--,c--:0,s=='o'&&o?n--,o--:0,s=='w'&&w?n--,w--:0,s==98&&b?n--,b--:0,s=='e'&&e?n--,e--:0,s=='l'&&l?n--,l--:0,putchar(s));

}
Albert Renshaw
  • 3.1k
  • 1
  • 17
  • 37