On m'a donné le problème suivant dans une interview (que j'ai déjà échoué à résoudre, n'essayant pas de me tromper): Le jeu commence avec un nombre entier positif . (Par exemple ) Ce nombre est converti en représentation binaire, et est le nombre de bits mis à . (Par exemple , )
Le joueur 1 choisit un nombre inférieur à . doit avoir qu'un seul bit mis à 1. (Par exemple ) Soit . (Par exemple ). Un mouvement est valide si satisfait les contraintes précédentes, et si le nombre de bits mis en est toujours égal à n .A 0 B 0 B 0 = b 10 0000 0000 = 512 A 1 = A 0 - B 0 A 1 = 1234 - 512 = 722 = b 10 1101 0010 B 0 A 1
Le joueur 2 continue depuis en choisissant un valide , puis le joueur 1 continue depuis , et ainsi de suite. Un joueur perd s'il n'a plus de coups valides.B 1 A 2
En supposant que les deux joueurs jouent de manière optimale, déterminez le joueur gagnant en utilisant une méthode raisonnablement efficace. (Dans ma définition de problème, les contraintes à cela étaient que le programme devait être en mesure de fournir une solution pour quelques millions de nombres d'entrée qui correspondent à un entier signé de 32 bits.) Autrement dit, la solution n'a pas besoin d'être entièrement analytique.
Mon intérêt personnel ici est de déterminer si l'attente de moi d'avoir trouvé et mis en œuvre la bonne solution sans aucun retour sur l'exactitude dans les 120 minutes qui m'ont été donnée était raisonnable; ou si c'était l'une de ces questions "voyons s'ils ont déjà vu ce puzzle".
J'avais échoué parce que j'avais choisi de mettre en œuvre ce qui semblait être une stratégie raisonnable, ce qui m'a donné des résultats corrects pour les quelques cas de test qui m'avaient été donnés à l'avance, j'ai perdu trop de temps à accélérer cette course et j'ai fini par remettre des données incorrectes. pleine sortie que mon temps est écoulé.
Rétrospectivement, j'aurais dû implémenter une recherche par force brute et mémoriser des solutions partielles pour les petits nombres de départ, mais le recul est toujours de 20/20. Je suis curieux cependant s'il y a une approche commune différente qui m'a échappé en tant que flunkee.