Ergebnis 1 bis 8 von 8

Thema: Google Code Jam!

  1. #1

    Google Code Jam!

    Hi!

    Kurzer Hinweis:
    Heute Nacht startet die Google Code Jam.
    Ist ein Wettbewerb über mehrere Iterationen hinweg.
    Die erste Iteration (Qualification Round) ist immer sehr gut machbar, an diesem WE muss man ein paar Programmieraufgaben lösen, und hat das ganze WE Zeit.

    Wer 30 Punkte oder mehr bekommt, kommt eine Runde weiter. Die nächsten Runden gehen immer nur so 3 Stunden.
    Wenn man da weiter kommt, bekommt man T-Shirts und und und (und natürlich FAME! :-P )

    Die Aufgaben sind eigentlich immer sehr nette Knobelaufgaben. Mit unterschiedlichen Schwierigkeitsgraden.

    Ich werde wohl mitmachen.
    Viel Spaß!

    --- [2019-04-06 12:47 CEST] Automatisch zusammengeführter Beitrag ---

    So, ich hab mich inzwischen für die nächste Runde qualifiziert :-)

    Die ersten beiden Aufgaben (Foregone Solution, You Can Go Your Own Way) sind wirklich sehr gut zu lösen! (Und reichen aus zur Qualifizierung)
    Für diesen Beitrag bedanken sich exomo, LadyRavenous

  2. #2
    Mitglied
    Registriert seit
    Aug 2015
    Beiträge
    66

    Re: Google Code Jam!

    Ich schaue mir das mal an, danke für den Hinweis.
    Viel Hoffnungen habe ich aber nicht nicht dass ich die Aufgaben lösen kann .

    EDIT:
    Die ersten zwei konnte ich auch lösen, die waren tatsächlich nicht so schwierig. Die dritte habe ich versucht, hat mit den beiden Beispielen auch funktioniert, aber beim richtigen Check heißt es dann "wrong answer". Ohne zu sehen was da falsch ist bin ich nicht weitergekommen. Die vierte habe ich gar nicht erst ernsthaft versucht. Das ist mir um diese Uhrzeit zu kompliziert.
    Geändert von exomo (07.04.19 um 00:41 Uhr)

  3. #3
    Mitglied

    (Threadstarter)


    Registriert seit
    Jul 2013
    Beiträge
    303

    Re: Google Code Jam!

    Schön dass Du mitgemacht hast.
    Ggf. können wir ja dann in der nächsten Runde bisschen über die Problemstellungen sprechen! Natürlich nur so weit, wie es das Google Code Jam-Regelwerk erlaubt

  4. #4
    Mitglied
    Registriert seit
    Aug 2015
    Beiträge
    66

    Re: Google Code Jam!

    Die Regeln sagen leider, dass man gar nicht über die Probleme sprechen darf. Aber mal sehen

  5. #5

    Re: Google Code Jam!

    @exomo: Ist die Aufgabenstellung nicht eh, bei dem Wettbewerben, öffentlich?
    Oder sieht man die Aufgabenstellungen erst, wenn man die vorherigen gelöst hat?
    Gruß theSplit
    @ I might be sober. The good things... the bad things... all I ever know is here! @
    +++ thunderNote +++ Thom's Inventarverwaltung +++ Pi-Thread +++ IT-Talents Code Competitions +++ NGB-Statistik Opt-Out/Anonymisierung +++ Stonerhead +++ Add-on Flag Cookies +++ Google Image Directlinks +++ Bandcamp 500 +++ dwrox.net

  6. #6
    Mitglied
    Registriert seit
    Aug 2015
    Beiträge
    66

    Re: Google Code Jam!

    @theSplit: Die Aufgabenstellung ist wohl schon öffentlich, kannst du ja mal ausprobieren: Runde 1A 2019
    Ich meinte nur dass man während die Runde läuft nicht darüber sprechen darf, damit der Wettbewerb nicht beeinflusst wird. Danach ist das sicher kein Problem.

    Also wenn du Ideen zu den Problemen hast immer her damit. Ich habe mich mal an der ersten Aufgabe versucht, bin aber nur soweit gekommen dass es für den ersten Testdatensatz funktioniert hat, für den zweiten ist mein Algorithmus vermutlich zu schlecht (=langsam), war ein relativ einfacher "probiere alle Möglichkeiten". So wie ich das sehe gibt es bei den Problemen immer einen algorithmischen "Kniff" den man finden muss um eine effiziente Lösung zu haben, sonst hat man keine Chance beim zweiten Testdatensatz, selbst wenn es für den ersten funktioniert.

    Als allgemeinen Tipp würde ich empfehlen dass man die alten Probleme auch mal löst, wenn man am Wettbewerb mitmachen will. Ich werde mir wohl für die nächste Runde (1B am 28. April) ein Programm für die "Interaktiven Probleme" vorbereiten, das kostet viel Zeit wenn man das auch alles innerhalb der Wettbewerbszeit machen muss. Es ist schon schwierig genug eine Lösung für die Probleme zu finden.

  7. #7
    Mitglied

    (Threadstarter)


    Registriert seit
    Jul 2013
    Beiträge
    303

    Re: Google Code Jam!

    Hab bei Runde 1A nicht mitgemacht, da mir das einfach zu spät in der Nacht war

    Runde 1B oder spätestens 1C werde ich dann in Angriff nehmen!

  8. #8
    Mitglied
    Registriert seit
    Aug 2015
    Beiträge
    66

    Re: Google Code Jam!

    Runde 1B hatte ich verpasst, war an dem Wochenende unterwegs.
    Runde 1C ist jetzt auch vorbei. Ich habe versucht die Aufgaben zu lösen, aber in der relativ kurzen Zeit bin ich nicht besonders weit gekommen.
    Aufgabe 1: Ich habe irgendwo einen Denkfehler, mein Programm funktioniert mit der kleinen Beispieleingabe, aber besteht die Tests nicht.
    Aufgabe 2: Habe ich geschafft. Wen es interessiert, hier ist mein Code:

    Spoiler: 

    Code (C++):
    1. #include <algorithm>
    2. #include <functional>
    3. #include <iostream>
    4. #include <sstream>
    5. #include <string>
    6. #include <vector>
    7.  
    8. using namespace std;
    9.  
    10. std::string getLine()
    11. {
    12.     std::string str;
    13.     getline(cin, str);
    14.     return str;
    15. }
    16.  
    17. int getLineAsInt()
    18. {
    19.     std::string str;
    20.     getline(cin, str);
    21.     int i = stoi(str);
    22.     return i;
    23. }
    24.  
    25. vector<int> getLineAsIntVector()
    26. {
    27.     std::string str;
    28.     getline(cin, str);
    29.  
    30.     vector<int> is;
    31.     istringstream oss(str);
    32.  
    33.     int i;
    34.     while (oss >> i)
    35.     {
    36.         is.push_back(i);
    37.     }
    38.  
    39.     return is;
    40. }
    41.  
    42. struct guessResult
    43. {
    44.     vector<int> interrestingSet;
    45.     vector<char> remainingToGuess;
    46.     char missing;
    47. };
    48.  
    49. int possibilitiesPerRound(int round)
    50. {
    51.     switch (round)
    52.     {
    53.     case 1:
    54.         return 24;
    55.     case 2:
    56.         return 6;
    57.     case 3:
    58.         return 2;
    59.     case 4:
    60.         return 1;
    61.     default:
    62.         return 0;
    63.     }
    64. }
    65.  
    66. guessResult doGuessRound(const vector<int>& interrestingSet, vector<char> remainingToGuess, int round)
    67. {
    68.     guessResult result;
    69.  
    70.     vector<int> possibleSets[5];
    71.  
    72.     for (int i : interrestingSet)
    73.     {
    74.         cout << (round + (i * 5)) << endl;
    75.         char r = getLine()[0];
    76.         possibleSets[r - 'A'].push_back(i);
    77.     }
    78.  
    79.     for (char c : remainingToGuess)
    80.     {
    81.         if (possibleSets[c - 'A'].size() < possibilitiesPerRound(round))
    82.         {
    83.             result.interrestingSet = possibleSets[c- 'A'];
    84.             result.missing = c;
    85.             break;
    86.         }
    87.     }
    88.  
    89.     result.remainingToGuess = remainingToGuess;
    90.     auto it = find(result.remainingToGuess.begin(), result.remainingToGuess.end(), result.missing);
    91.     result.remainingToGuess.erase(it);
    92.  
    93.     return result;
    94. }
    95.  
    96. bool doCase(int F)
    97. {
    98.     vector<int> interrestingSet;
    99.     interrestingSet.resize(119);
    100.     for (int i = 0; i < 119; ++i) interrestingSet[i] = i;
    101.  
    102.     string missingSet = "";
    103.  
    104.     auto result = doGuessRound(interrestingSet, { 'A', 'B', 'C', 'D', 'E' }, 1);
    105.     missingSet += result.missing;
    106.     result = doGuessRound(result.interrestingSet, result.remainingToGuess, 2);
    107.     missingSet += result.missing;
    108.     result = doGuessRound(result.interrestingSet, result.remainingToGuess, 3);
    109.     missingSet += result.missing;
    110.     result = doGuessRound(result.interrestingSet, result.remainingToGuess, 4);
    111.     missingSet += result.missing;
    112.     missingSet += result.remainingToGuess[0];
    113.  
    114.     cout << missingSet << endl;
    115.     auto response = getLine();
    116.     if (response == "Y") return true;
    117.     return false;
    118. }
    119.  
    120. int main()
    121. {
    122.     auto TF = getLineAsIntVector();
    123.     int T = TF[0];
    124.     int F = TF[1];
    125.  
    126.     for (int i = 0; i < T; ++i)
    127.     {
    128.         if (!doCase(F))
    129.         {
    130.             return 1;
    131.         }
    132.     }
    133.  
    134.     return 0;
    135. }
    136.  

    Aufgabe 3: Bin ich gar nicht dazu gekommen.

    Mit nur einer gelösten Aufgabekomme ich wohl nicht weiter, habe ich aber auch nicht erwartet

    @MingsPing: Und hast du es geschafft mitzumachen? Wenn ja mit welchem Erfolg.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •