Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Rätselecke » *** Eilmeldung ***Eilmeldung ***Eilmeldung ***Eilmeldung ***

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
09.06.2004, 15:28 Uhr
virtual
Sexiest Bit alive
(Operator)


Soeben hat mich folgende Eilmeldung der VPA (Virtuals Presse Agentur erreicht:

Zitat:

Redmond. Wie das Europäische Patentamt und Herr Bill G. in seiner Eigenschaft als Vorsitzender der Firma Winzigweich übereinstimmend mitteilten, hat die Firma Winzigweich folgendes Patent erteilt bekommen:
Unter das Patent 20040609123XCF fällt fortan der kleine Buchstabe H ("h"), sofern dieser von einem Konsonanten gefolgt wird und nicht den Anfang eines Wortes bildet. Die Firma Winzigweich ist ab dem 1. Juli 2004 berechtigt, bei Urhebern deutscher Texte, die gegen Patent 20040609123XCF verstoßen, Gebühren von 0.01 € pro Verstoß einzufordern.



Das hat mich auf die Idee gebracht, daß man zur Lösung dieser Einschränkung ja ein kleines Programm als Aufgabe stellen könnte:

Zitat:

Schreibe ein Programm, welches einen Text umwandelt, so daß alle "h"s, welche Patent 20040609123XCF verletzen, durch "ha!" ersetzt werden.



PS: Wär doch gelacht, wenn wir uns von Bill G. die gute Laune verderben lassen würden!
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 09.06.2004 um 15:29 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.06.2004, 18:57 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


auf die schnelle ohne gross zu testen
das golfen spar ich mir jetzt gerade mal
hoffe der code ist diesmal in deinem sinne eingerückt

C++:
void ersetzen(char **inp,int *inp_l){
char neu[4]="ha!";
int offset,x=strlen(neu),z=strlen(*inp);
char *str=*inp,*tmp;

    while(str=strstr(str,"h")){

        if(str!=*inp && !isspace(*(str-1)) && *(str+1) && !isspace(*(str+1)) && tolower(*(str+1))!='a' && tolower(*(str+1))!='e' && tolower(*(str+1))!='i' && tolower(*(str+1))!='o' && tolower(*(str+1))!='u'){
            z+=2;                                        
            if(*inp_l<=z){            
                offset=str-*inp;    
                tmp=(char*)realloc(*inp,sizeof(char)*(z+1));    
                if(tmp){*inp=tmp;*inp_l=z+1;str=*inp+offset;}    
                else return;
            }
               memmove(str+3,str+1,sizeof(char)*strlen(str));    
            memcpy(str,neu,sizeof(char)*x);
        }
        ++str;
    }
}


int main(){

int inp_l=60;
char *inp;

inp=(char*)malloc(sizeof(char)*inp_l);

sprintf(inp,"hallo hihsch whche mahleh");

printf("%s\n",inp);
ersetzen(&inp,&inp_l);
printf("%s\n",inp);
free(inp);
}




--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.06.2004, 00:19 Uhr
(un)wissender
Niveauwart


So, ich hoffe, es ist korrekt und ich habe nichts vergessen, wie z.B einen Vokal.


C++:
#include <algorithm>
#include <iostream>
#include <string>
#include <cctype>

bool isVokal(char c);
bool shouldBeSubstituated(const std::string &textPart);
std::string& replace(std::string & text);

int main(int argc, char * args[])
{
    if(argc < 2)
    {
        std::cout << "Bitte Text eingeben!" << std::endl;
        return 0;
    }
    
    std::string text;
    for(int i = 1; i < argc - 1; ++i)
    {
        text += args[i];
        text += ' ';
    }
    text += args[argc - 1];
    
    std::cout << replace(text) << std::endl;
    return 0;
}

std::string& replace(std::string & text)
{
    const std::string insertString = "ha!";
    unsigned int times = std::count(text.begin(), text.end(), 'h');
    std::string temp;
    temp.reserve(text.size() + times * (insertString.size() - 1));
    
    for(unsigned int i = 0; i < text.size() - 2; ++i)
    {
        temp += text[i];
        if(shouldBeSubstituated(text.substr(i, insertString.size())))
        {              
            temp += insertString;
            ++i;
        }              
    }
    
    if(text.size() > 1)
    {
        temp += text.substr(text.size() - 2, text.size());
    }
    
    return text = temp;
}

bool isVocal(char c)
{
    return c == 'a' || c == 'e' || c == 'o' || c == 'u' || c == 'i';
}

bool shouldBeSubstituated(const std::string &textPart)
{
    return  isalpha(textPart[0]) &&
            textPart[1] == 'h'   &&
           !isVocal(textPart[2]);
}




Bearbeitung:

Kleine Verbesserung.


--
Wer früher stirbt ist länger tot.

Dieser Post wurde am 10.06.2004 um 00:22 Uhr von (un)wissender editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.06.2004, 00:24 Uhr
(un)wissender
Niveauwart


@virtual
Lustiges Rätsel, weiter so, vielleicht bringt uns die VPA ja noch mehr.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
10.06.2004, 00:33 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@(un)wissender
meins ist geiler, ich war erster.. usw... Ich bin also der König
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
10.06.2004, 00:51 Uhr
(un)wissender
Niveauwart


Deine kann vor allem keiner lesen und langsam ist es auch noch, aber gut, wenn es denn sein soll, du bist König.
Die haben eh nur noch repräsentative Rollen, ich bin halt Amipräsident, da habe ich Atomnukes zur freien Verfügung.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
11.06.2004, 13:51 Uhr
0xdeadbeef
Gott
(Operator)


Da ja keine Programmiersprache angegeben wurde - hier meine Lösung:

sed:

s/h/ha!/g
s/^ha!/h/g
s/ ha!/ h/g
s/\tha!/\th/g


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
11.06.2004, 14:31 Uhr
virtual
Sexiest Bit alive
(Operator)


@Beefy:
Dein Vorschlag ist aber fehlerhaft. Konvertier doch mal den Text:

Zitat:

ha!


Da sollte eigentlich "ha!" auch rauskommen; bei Dir kommt aber nur ein "h" raus.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
11.06.2004, 14:45 Uhr
0xdeadbeef
Gott
(Operator)


OK, ich sehs ein. Und es geht noch kürzer:

sed:

s/\([^^ \t]\)h/\1ha\!/g


Dir ist übrigens klar, dass der entstandene Text das Patent immer noch verletzt, weil h auch in ha! vorkommt?
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 11.06.2004 um 14:46 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
11.06.2004, 15:02 Uhr
ao

(Operator)



Zitat:
0xdeadbeef postete
Dir ist übrigens klar, dass der entstandene Text das Patent immer noch verletzt, weil h auch in ha! vorkommt?


Zitat:
"Patentschrift":
Unter das Patent 20040609123XCF fällt fortan der kleine Buchstabe H ("h"), sofern dieser von einem Konsonanten gefolgt wird ...

Nach dem 'h' kommt ein Vokal,
darum ist es hier legal.

Reimt sich sogar.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ Rätselecke ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: