Ich habe in einem Interview das folgende Problem erhalten (das ich bereits nicht gelöst habe und nicht versucht habe, mich vorbeizuschleichen): Das Spiel beginnt mit einer positiven Ganzzahl . (ZB A 0 = 1234. ) Diese Zahl wird in eine binäre Darstellung umgewandelt, und N ist die Anzahl der auf 1 gesetzten Bits . (ZB A 0 = b 100 1101 0010 , N = 5 )
Spieler 1 wählt eine Nummer kleiner als A 0 ist . Für B 0 darf nur ein Bit auf 1 gesetzt sein. (Beispiel: B 0 = b 10 0000 0000 = 512. ) Sei A 1 = A 0 - B 0 . (ZB A 1 = 1234 - 512 = 722 = b 10 1101 0010. ) Ein Zug ist gültig, wenn B 0erfüllt die vorherigen Bedingungen, und wenn die Anzahl der in gesetzten Bits immer noch gleich N ist .
Spieler 2 fährt von indem er ein gültiges B 1 wählt , dann fährt Spieler 1 von A 2 fort und so weiter. Ein Spieler verliert, wenn er keine gültigen Züge mehr hat.
Unter der Annahme, dass beide Spieler optimal spielen, bestimmen Sie den Gewinner mit einer einigermaßen effizienten Methode. (In meiner Problemdefinition bestand die Einschränkung darin, dass das Programm eine Lösung für einige Millionen eingegebene Zahlen liefern muss, die in eine vorzeichenbehaftete 32-Bit-Ganzzahl passen.) Das heißt, die Lösung muss nicht vorhanden sein voll analytisch.
Mein persönliches Interesse ist es, herauszufinden, ob die Erwartung, in den 120 Minuten, die ich erhalten habe, die richtige Lösung gefunden und umgesetzt zu haben, ohne dass eine Rückmeldung zur Richtigkeit möglich war, vernünftig war. oder ob dies eine der Fragen war, bei denen "Mal sehen, ob sie dieses Rätsel schon einmal gesehen haben".
Ich war gescheitert, weil ich mich für die Implementierung einer vernünftigen Strategie entschieden hatte, die mir korrekte Ergebnisse für die wenigen Testfälle lieferte, die ich im Vorfeld erhalten hatte, zu viel Zeit verschwendete, um dies schnell laufen zu lassen, und schließlich falsche Ergebnisse einreichte volle Ausgabe als meine Zeit abgelaufen ist.
Im Nachhinein hätte ich eine Brute-Force-Suche durchführen und Teillösungen für kleine Startnummern auswendig lernen sollen, aber im Nachhinein ist das immer 20/20. Ich bin jedoch gespannt, ob es einen anderen gemeinsamen Ansatz gibt, der mir als Betrügerin entgangen ist.