024
14.09.2004, 18:37 Uhr
virtual
Sexiest Bit alive (Operator)
|
Zitat von 0xdeadbeef: |
Heh. Mir fällt aber gerade auf, dass all diese Lösungen fehlerhaft sind - was ist, wenn der erste String kürzer als der zweite ist und an der Stelle, an der der erste Sentinel hängt, im zweiten String ein Leerzeichen steht, schlägt der Vergleich nicht fehl und die Funktion segfaultet möglicherweise. In meiner Lösung ist das einfach zu beheben:
C++: |
f(s,t)char*s,*t;{while(*s&&*t)if((*s++^*t++)&~32)return 1;return*s|*t;}
|
...bei euch beiden ist das nicht so einfach.
@pablo: Mit & kommen wir nicht weiter, nein. Stell dir z.B. vor, *s = 'A' = 65 und *t = ' ' = 32, dann ist *s & *t == 65 & 32 == 0.
|
Naja, dann eben 42 Zeichen:
C++: |
int f(const char* a, const char* b) {return!*b+!*a+(*a^*b)&95?*a|*b:f(a+1,b+1);}
|
Irgendwie noch 11 Zeichen Platz... -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |