wpc108



  • Ich finde das nimmt jetzt aber den Spaß daraus wenn man die möglichen Lösungen öffentlich diskutiert... BTW: Ich bin bei 34 Tokens :p



  • MaSTaH schrieb:

    BTW: Ich bin bei 34 Tokens :p

    int wpc108sec(int* low,int* high,int num,int key)
    {
        int count = 0;//5
        while ( num -- ) //5
          count += low [ num ] <= key && key <= high [ num ] ; //16
        return count ; //3
    } //29
    

    Keine Ahnung, ob das so funktioniert (ungetestet).

    Muss die Funktion mehrmals aufgerufen werden können oder darf man die so schreiben, dass sie nach dem ersten Aufruf nicht mehr funktioniert?



  • Meins sieht ähnlich aus (30 Tokens)... Man könnte oben noch "static int c;" schreiben um ein Token zu sparen, dann würde man aber Probleme beim zweiten Aufruf bekommen.



  • Das ist meins

    int wpc108sec(int* low, int* high, int num, int key)
    {
        int c = 0; // 5
        while ( num -- ) // 5
          low [ num ] <= key && key <= high [ num ] && ++ c; // 17
        return c ; //3
    } // 30
    

    beziehungsweise (falls erlaubt)

    int wpc108sec(int* low, int* high, int num, int key)
    {
        static int c; // 4
        while ( num -- ) // 5
          low [ num ] <= key && key <= high [ num ] && ++ c; // 17
        return c ; //3
    } // 29
    

    die kürzeste Version die einmal funktioniert ist (inspiriert von deiner)

    int wpc108sec(int* low, int* high, int num, int key)
    {
        static int c; // 4
        while ( num -- ) // 5
          c += low [ num ] <= key && key <= high [ num ]; // 16
        return c ; //3
    } // 28
    

    ist aber bestimmt nicht erlaubt.

    Deine Version funktioniert (EDIT: bin mir aber nicht sicher ob true immer garantiert 1 oder verschieden von 0 sein muss), aber ich bekomme das noch kürzer. Mal überlegen... 😃



  • Mir ist noch was eingefallen... ist aber mit Sicherheit auch verboten! Wo kann man die Regeln für die einzelnen Kategorien (in dem Fall "code brevity") nachlesen? In den FAQs steht da nicht genaues zu.

    int wpc108sec(int* low, int* high, int num, int key, int c = 0)
    {
        while ( num -- ) // 5
          c += low [ num ] <= key && key <= high [ num ]; // 16
        return c ; //3
    } // 24
    


  • MaSTaH schrieb:

    Mir ist noch was eingefallen... ist aber mit Sicherheit auch verboten! Wo kann man die Regeln für die einzelnen Kategorien (in dem Fall "code brevity") nachlesen? In den FAQs steht da nicht genaues zu.

    int wpc108sec(int* low, int* high, int num, int key, int c = 0)
    {
        while ( num -- ) // 5
          c += low [ num ] <= key && key <= high [ num ]; // 16
        return c ; //3
    } // 24
    

    sie versuchen, leute rauszukicken. mit unter umständen völlig abstrusen gründen. mangelde ernsthaftigkeit zum beispiel. oder daß sie gepackte sachen nicht annehmen können.
    es war nicht aufrufbarkeit gefordert, sondern explizit ein prototyp angegeben. die abweichung reicht denen betimmt als grund.
    und das static-ding ist einfach falsch.

    übrigens steht "sec" für secure (sicher) oder so und ist die referenzimplemetierung. die andere verfummele ich immer und teste mit der main, ob auch ja kein fehler ist.

    alle regeln kann man nicht nachlesen. sie erfinden auch gerne neue, um mich zu kicken. bestimmt schon 5 mal. wenn jemand ne neue regel erfährt, soll er sie doch bitte hier posten.



  • Mastah:
    ich sehe die Kuerzung nicht.
    Du hast naemlich vergessen das
    ,int c=0
    mitzuzaehlen.



  • 27



  • volkard schrieb:

    27

    auf 27 komme ich nur, wenn key unsigned ist 😞
    sonst bin ich auf 28



  • volkardus schrieb:

    es war nicht aufrufbarkeit gefordert, sondern explizit ein prototyp angegeben. die abweichung reicht denen betimmt als grund.

    Denke ich auch

    volkardus schrieb:

    und das static-ding ist einfach falsch.

    Ja, aber nur, wenn sie öfter als einmal aufgerufen wird.



  • Shade Of Mine schrieb:

    Mastah:
    ich sehe die Kuerzung nicht.
    Du hast naemlich vergessen das
    ,int c=0
    mitzuzaehlen.

    Sieh es einfach als billigen Trick an :).



  • Wie seht ihr das? Wäre die Variante von cd9000 mit dem count += expression legal?



  • MaSTaH schrieb:

    Wie seht ihr das? Wäre die Variante von cd9000 mit dem count += expression legal?

    warum sollte es nicht legal sein?



  • EDIT: Ok, hab es schon selber geklärt



  • MaSTaH schrieb:

    Deine Version funktioniert (EDIT: bin mir aber nicht sicher ob true immer garantiert 1 oder verschieden von 0 sein muss), aber ich bekomme das noch kürzer. Mal überlegen... 😃

    die acme softies sind nichzt standard-fixiert. wenn's auf jedem 'normalen' compiler klappt, nehmen die es. mal hab ich ne siegerlösung gesehen, die davon ausging, daß ein ascii-zeichensatz drunterliegt.
    man fliegt übrigens, wenn man ne standard-lösung bringt, die der msvc nicht compiliert.



  • int wpc108(int* low, int* high, int num, int key) 
    { 
        int count = 0; // 5 
        while ( num -- ) // 5 
          count += key >= *low++ && key <= *high++; // 14 
        return count; //3 
    } // 27
    


  • Geo, das laeuft nicht.
    high wird nicht immer erhoeht.



  • ja, hast recht.

    vielleicht so:

    int wpc108(int* low, int* high, int num, int key) 
    { 
        int count = 0; // 5 
        while ( num -- ) // 5 
          count += key >= *low++ & key <= *high++; // 14
        return count; //3 
    } // 27
    


  • Geo schrieb:

    vielleicht so:

    int wpc108(int* low, int* high, int num, int key) 
    { 
        int count = 0; // 5 
        while ( num -- ) // 5 
          count += key >= *low++ & key <= *high++; // 14
        return count; //3 
    } // 27
    

    da stehe ich auch gerade 🙂



  • Shade Of Mine schrieb:

    Geo schrieb:

    vielleicht so:

    da stehe ich auch gerade 🙂

    ich auch. und ch habs schon weggeschickt, weil ich nix mehr sehe.
    wird wohl 10 identische einsendungen geben und ein paar andere.


Anmelden zum Antworten