• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

Google Code Jam!

MingsPing

NGBler

Registriert
15 Juli 2013
Beiträge
346
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)
 

exomo

NGBler

Registriert
1 Aug. 2015
Beiträge
129
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 :D.

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.
 
Zuletzt bearbeitet:

MingsPing

NGBler

Registriert
15 Juli 2013
Beiträge
346
  • Thread Starter Thread Starter
  • #3
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 ;)
 

exomo

NGBler

Registriert
1 Aug. 2015
Beiträge
129
Die Regeln sagen leider, dass man gar nicht über die Probleme sprechen darf. Aber mal sehen :D
 

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.560
@exomo: Ist die Aufgabenstellung nicht eh, bei dem Wettbewerben, öffentlich?
Oder sieht man die Aufgabenstellungen erst, wenn man die vorherigen gelöst hat?
 

exomo

NGBler

Registriert
1 Aug. 2015
Beiträge
129
@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.
 

MingsPing

NGBler

Registriert
15 Juli 2013
Beiträge
346
  • Thread Starter Thread Starter
  • #7
Hab bei Runde 1A nicht mitgemacht, da mir das einfach zu spät in der Nacht war :p

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

exomo

NGBler

Registriert
1 Aug. 2015
Beiträge
129
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:
[src=cpp]#include <algorithm>
#include <functional>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>

using namespace std;

std::string getLine()
{
std::string str;
getline(cin, str);
return str;
}

int getLineAsInt()
{
std::string str;
getline(cin, str);
int i = stoi(str);
return i;
}

vector<int> getLineAsIntVector()
{
std::string str;
getline(cin, str);

vector<int> is;
istringstream oss(str);

int i;
while (oss >> i)
{
is.push_back(i);
}

return is;
}

struct guessResult
{
vector<int> interrestingSet;
vector<char> remainingToGuess;
char missing;
};

int possibilitiesPerRound(int round)
{
switch (round)
{
case 1:
return 24;
case 2:
return 6;
case 3:
return 2;
case 4:
return 1;
default:
return 0;
}
}

guessResult doGuessRound(const vector<int>& interrestingSet, vector<char> remainingToGuess, int round)
{
guessResult result;

vector<int> possibleSets[5];

for (int i : interrestingSet)
{
cout << (round + (i * 5)) << endl;
char r = getLine()[0];
possibleSets[r - 'A'].push_back(i);
}

for (char c : remainingToGuess)
{
if (possibleSets[c - 'A'].size() < possibilitiesPerRound(round))
{
result.interrestingSet = possibleSets[c- 'A'];
result.missing = c;
break;
}
}

result.remainingToGuess = remainingToGuess;
auto it = find(result.remainingToGuess.begin(), result.remainingToGuess.end(), result.missing);
result.remainingToGuess.erase(it);

return result;
}

bool doCase(int F)
{
vector<int> interrestingSet;
interrestingSet.resize(119);
for (int i = 0; i < 119; ++i) interrestingSet = i;

string missingSet = "";

auto result = doGuessRound(interrestingSet, { 'A', 'B', 'C', 'D', 'E' }, 1);
missingSet += result.missing;
result = doGuessRound(result.interrestingSet, result.remainingToGuess, 2);
missingSet += result.missing;
result = doGuessRound(result.interrestingSet, result.remainingToGuess, 3);
missingSet += result.missing;
result = doGuessRound(result.interrestingSet, result.remainingToGuess, 4);
missingSet += result.missing;
missingSet += result.remainingToGuess[0];

cout << missingSet << endl;
auto response = getLine();
if (response == "Y") return true;
return false;
}

int main()
{
auto TF = getLineAsIntVector();
int T = TF[0];
int F = TF[1];

for (int i = 0; i < T; ++i)
{
if (!doCase(F))
{
return 1;
}
}

return 0;
}
[/src]

Aufgabe 3: Bin ich gar nicht dazu gekommen.

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

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