La plupart des combinaisons binaires à partir de 4 bits, avec un seul changement par bit

J'ai 4 bits binaires

Bit 3  Bit 2  Bit 1  Bit 0

Normalement la réponse est simple: 2^4, ou 16 combinaisons différentes; et il serait ressemble à quelque chose comme:

0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

Cependant, Le LSB (Bit 0) change d'état à chaque itération.

J'ai besoin d'un algorithme d'où l'état d'un bit seulement les changements une fois à travers toutes les itérations; je.e, j'ai besoin de tous mes bits d'agir comme le MSB (Bit 3).

Comment puis-je faire cela?

Modifier

Il semble que la plupart des gens sont en train de converger à seulement 5 solutions possibles. Toutefois, cela suppose qu'il existe un point de départ pour la valeur et un point de fin. Ce n'est pas grave donc je vais vous donner un scénario réel de mieux expliquer.

Supposons que j'ai un numérique réveil qui me donne 4 sorties. Chaque sortie peut être programmée pour aller à un certain moment et à un certain moment et sont programmés indépendants les uns des autres, par exemple. Je peux le programme de la sortie 1 pour aller sur à 1 h et descendre à 3 heures du matin, alors que je peux le programme de la sortie 2 pour aller à 7 h et descendre à 2 heures du matin. Il n'existe aucune restriction pour combien de temps à chaque sortie peut rester sur.

Maintenant je veux brancher ce réveil à un ordinateur et à se rapprocher le plus possible au courant de l'heure exacte. j'.e Si l'horloge indique le temps est de 2:15 pm, mon ordinateur ne connaît que l'alarme est dans les 12 h à 6 h de gamme par exemple. Je veux être en mesure d'obtenir le plus petit nombre possible. Quel est le plus petit nombre possible que je peux obtenir?

  • C'est un très intéressant problème. Je suis en train de le comprendre maintenant, j'aime les défis. =) Savez-vous si il est possible ou est-il prouver/infirmer?
  • Les Bits sont habituellement numérotées d'une manière qui LSB est le bit 0, permettez-moi de le modifier pour vous. 🙂
  • J'ai trouver une solution, mais n'a pas d'état dans la question parce que je veux voir ce que les autres gens. En fait, j'ai utiliser une interface d'ordinateur.
  • L'ordinateur a sa propre horloge interne? Si oui, alors il sait l'heure qu'il est, et n'a pas besoin de réveil. Si ça ne marche pas, alors comment voulez-4 bits à partir de l'alarme de l'horloge de donner à l'ordinateur de toute info sur le temps?
  • Aussi, vous avait d'abord déclaré que chaque bit peut changer qu'une seule fois, mais dans votre "horloge", par exemple, chaque bit changements à deux reprises. Par exemple, à l'origine, sur à 1h du matin, à 3h du matin.
  • Tant pis, je pense que j'obtiens ce que tu veux dire maintenant: * Une personne décrit un réveille-matin numérique pour faire 4 bits individuellement allumer une fois au cours de la journée, puis de désactiver une fois (au cours de la même journée, ou peut tourner sur, à 11 heures du soir et descendre à 1h du matin)? (suite)
  • * Si la personne ne sait pas quelle heure il est, mais des regards à l'état des bits, ils devraient être en mesure de déduire que l'heure est à une certaine distance. * La question que vous vous poser est: Quelle doit être l'heure / heure pour chaque bit qui produirait le min(max(ressort intervalle de temps))?

InformationsquelleAutor darudude | 2009-01-16