Bonjour,
Il s'agit de trouver le nombre binaire le plus court possible contenant une fois et une seule chacun des huit triplets binaires suivants (pas forcément dans cet ordre) :
111 000 010 001 011 100 110 101
Bonne réflexion.
minkus
PS : Le nombre binaire en question peut commencer par un 0.
Bonjour,
il y a plusieurs solutions à 10 chiffres (pas en moins), mais voilà l'une d'entre elles:
1 0 0 0 1 1 1 0 1 0
Le nombre binaire à trouver comprend impérativement 10 bits.
Il y a plusieurs solutions et l'une d'entre elles est :
1 0 0 0 1 0 1 1 1 0
Je ne sais pas si je comprends bien la question. Ce qu'on veut optimiser ici, c'est le nombre de caractères. Le nombre doit contenir une et une seule fois chacun des 8 triplets... j'imagine que 3 caractères adjacents forment un triplet et qu'un même caractère peut faire partie de plusieurs triplets (overlap).
Si c'est bien ça, on y arrive aisément avec 10 caractères, ce qui est le minimum nécessaire pour former 8 triplets.
0111000101
Bonjour.
Bon moi je propose 000001010011100101110111
(j'espère que mon nombre n'est pas hasbeen(air)...ça c'était pour la blague du jour)
Longueur 10
Par exemple 0001011100
si on prend les tranches successives de 3 digits, on obtient bien les nombres binaires de 3 digits.
000 001 010 101 011 111 110 100
La solution la plus courte fait au minimum 10 digits puisqu'il faut 2^3+(3-1) digits pour former les 2^3 tranches de 3 digits. Donc nous avons bien la longueur la plus courte.
Il n'y a pas qu'une seule solution.
On constitue à partir de la suite précédente une suite qui boucle sur elle même de 8 digits
00010111
on la découpe en deux parties quelconques
00010 111
on la lit à partir du deuxième brin
111 00010
on brise la boucle en dupliquant les deux premiers digits à la fin
111 00010 11
çà donne
1110001011
et les 8 tranches de 3 digits donnent
111 110 100 000 001 010 101 011
Questions subsidiaires :
peut on généraliser à une longueur quelconque des n-uplets ?
peut on généraliser à une base quelconque, et pas seulement en base 2 ?
0111010001.
10 digits sont nécessaires (sinon les 8 n'y seront pas) et suffisants (sinon on peut former 9 triplets donc un répété)
Il me semble que le nombre le plus court doit avoir au moins 10 chiffres.
J'en ai trouvé 16 :
0 0 0 1 0 1 1 1 0 0 Le plus petit
0 0 0 1 1 1 0 1 0 0
0 0 1 0 1 1 1 0 0 0
0 0 1 1 1 0 1 0 0 0
0 1 0 0 0 1 1 1 0 1
0 1 0 1 1 1 0 0 0 1
0 1 1 1 0 0 0 1 0 1
0 1 1 1 0 1 0 0 0 1
1 0 0 0 1 0 1 1 1 0
1 0 0 0 1 1 1 0 1 0
1 0 1 0 0 0 1 1 1 0
1 0 1 1 1 0 0 0 1 0
1 1 0 0 0 1 0 1 1 1
1 1 0 1 0 0 0 1 1 1
1 1 1 0 0 0 1 0 1 1
1 1 1 0 1 0 0 0 1 1 Le plus grand
Question longueur, ils ont tous 10 Chiffres.
A+
Francesco
Je propose 0111000101 qui contient 10 chiffres.
Faut-il tenter de donner une démonstration
du fait que la solution soit optimale ?
Pour cette proposition, je ne sais absolument pas
si c'est la meilleure...
J'ai pas vraiment la JFF, mais j'essaie :
000 001 010 011 100 101 110 111
Notez bien que je ne suis pas sûr, et je demande à ne pas être noté s'il vous plaît.
Merci de ton indulgence Minkus.
Bonjour,
Une solution avec 10 chiffres: 0001011100
avec successivement: 000 001 010 101 011 111 110 100
A+
minimum 10 digits
ex:
0111010001
1000101110
0100011101
1000111010
0111000101
1011100010
Bonjour,
Voici un programme JAVA qui affiche toutes les solutions au problème posé.
Ca ne prend que quelques secondes car il suffit de vérifier 8! = 40320 configurations.
En effet, on a 8! façons d'ordonner les 8 mots de 3 bits du problème.
Trève de bavardage, voici le programme à mettre dans un fichier Main.java
package shorterbitword;
import java.util.ArrayList;
public class Main {
private String solution = "";
private long size = 150000;
private long counter = 0;
public Main() {
}
public void compute(ArrayList<String> list) {
if (list.size()==1) {
// Cette liste est un singleton.
// On arrive donc au bout de notre récursion
counter++;
append( list.get(0) );
if (solution.length() <= size) {
size = solution.length();
System.out.println(solution + " (" + size + ")");
solution = "";
}
} else {
for (int i=0; i<list.size(); i++) {
String backup = solution;
ArrayList<String> clonedList;
append( list.get(i) );
clonedList = (ArrayList<String>) list.clone();
clonedList.remove(i);
compute( clonedList );
solution = backup;
}
}
}
private void append(String item) {
if (solution.length() < 3) {
solution = item;
} else {
for (int i=item.length()-1; i>=0; i--) {
String leftPart = item.substring(0, i+1);
String rigthPart = solution.substring(solution.length() - i - 1);
if (rigthPart.equals(leftPart)) {
if (i < item.length()-1) {
solution = solution + item.substring(i+1);
}
return;
}
}
solution = solution + item;
}
}
private void finish() {
System.out.println("Nb checks: " + counter);
}
public static void main(String[] args) {
// TODO code application logic here
Main main = new Main();
ArrayList<String> list = new ArrayList<String>(8);
list.add("000");
list.add("001");
list.add("010");
list.add("011");
list.add("100");
list.add("101");
list.add("110");
list.add("111");
main.compute(list);
main.finish();
}
}
??
je ne suis pas certain de bien comprendre la question...
ca me semble trop facile pour une question de deux étoiles...
si jamais j'ai bien compris, je dirais que le nombre binaire le plus court possible contenant une fois et une seule chacun des huit triplets binaires est le meme que le plus long... c'est à dire qu'il possède 10 chiffre
ex : 1000111010
ou 0111000101
s'il y avait un nombre binaire de 11 chiffres, il y aurait un triplet qui serait contenu 2 fois... ce qui ne respecterait pas l'énoncé...
en espérant ne pas me retrouver avec un poisson!
mathieu
Bonjour,
Voici ma proposition :
0010111000
Merci pour cette énigme
Bonjour, et merci pour cette énigme
J'ai considéré que la solution optimale devait contenir 10 chiffres 0 où 1 au minimum pour contenir 8 triplets de 3 chiffres, et j'ai trouvé 8 solutions.
En voici deux:
1000101110 qui montre 100 000 001 010 101 011 111 et 110
où
1110100011 qui montre 111 110 101 010 100 000 001 et 011
Voili voilou
@ plus, Chaudrack
Je tenterais bien 1011100010, sachant que la solution en inversant les 1 et les 0 doit marcher aussi.
Merci pour l'énigme.
Bonjour,
La taille minimale étant de 10 chiffres (chevauchement de deux chiffres sur trois), je propose le nombre : (soit 92 en décimal)
Vérification:
0001011100
000
_001
__010
___101
____011
_____111
______110
_______100
(NB: S'il peut commencer par un zéro, le nombre doit pouvoir commencer par 3 zéros...)
Merci pour l'énigme.
Bonjour,
je ne sais pas si j'ai bien compris.
ma réponse est :
où l'on retrouve les triplets dans l'ordre suivant :
100 000 001 011 111 110 101 010
Je trouve : 000 001 010 011 100 101 110 111
Bonjour,
Je n'en suis pas sûr à 100% puisque je ne suis selement en 4ième primaire. Mais bon je vais essayer.
D'après moi si l'ont dit "le plus court possible" ça sinifie,pour moi, "celui qui a le moin de valeur" donc ça serais: 000 001 010 011 100 101 110 111
Bonne journée
P.S.
J'éspère avoir un
Il est clair qu'une solution nécessite au moins dix chiffres et on en trouve une : 1000101110 soit dans l'ordre : 100 000 001 010 101 011 111 110.
Bonjour
Je ne trouve pas moins que 10 chiffres (0 et 1)
Exemples : 1000111010 ; 0101110001 ; 1011100010 ; 0011101000.
pour lesquels on retrouve 1 seul fois 111 000 010 001 011 100 110 101 .
A+
salut
j'espere que je me trompe pas, je pense que le(s) plus courts nombres binaires en question sont composés de 10 chiffres, le plus petit sera: 0001011100.
merci pour l'énigme
le binaire est regroupé généralement par paquet de quatre:
0000 0101 0011 1001 0111 0111
Bonjour,
Je cloture cette énigme et le mois de mai par la même occasion.
Il fallait bien 10 "digits" au moins pour obtenir les 8 triplets.
>Tilee: Desolé mais ta solution comporte deux fois la séquence 110.
Mais oui bien sur que j'ai vérifié toutes les solutions !!
minkus
je n'ai toujours pas compris comment il peut y avoir plusieurs solut° si il s'agit de trouver le plus petit nombre: il ne peut y en avoir qu'un seul, pas deux ??!?
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :