Le Puzzle de l'Avent 2025
Posté le 02/12/2025 03:33
Décembre est de retour, et du même coup le Puzzle de l'Avent de Planète Casio ! La neige n'est peut-être pas au rendez-vous mais les activités de saison n'attendent pas.
On en est à pas moins de la
6ème édition (
2018,
2019,
2021,
2023,
2024) et la formule est proche de ce qu'on a fait ces dernières années.
Principe et lots
Le but du jeu est de
reconstituer un puzzle en pixel art (en l'occurrence de 192x112 pixels) en résolvant des problèmes d'informatique posés durant le moins de Décembre. Cette année j'ai retenu ma leçon que poser un problème pas trivial tous les jours c'est beaucoup (pour vous comme pour moi), donc on va la jouer cool avec en gros des problèmes 1 jour sur 2.
Il y aura
3 lots à remporter gracieusement sponsorisés par
Calcuso !
- Une calculatrice Graph Math+ (normalement gravée laser avec un message personnalisé--je vous confirme ça) ;
- Deux housses pour calculatrices (ou, selon les goûts, une coque d'édition limitée pour Graph Light/Math+ offerte par Casio Éducation).

Fonctionnement des problèmes et attribution des lots
Je change un poil la formule cette année pour élargir le type de problèmes !
- Chaque problème sera posé sous la forme d'un "énoncé" que vous devrez résoudre. Généralement du code Python sera fourni, à utiliser sur votre calculatrice ou ordinateur, et parfois vous devrez écrire du code Python pour trouver une réponse.
- Une solution sera soit un nombre soit une chaîne de caractères. Contrairement aux années précédentes, il pourra y avoir plusieurs solutions, auquel cas vous devrez en trouver une « suffisamment bonne ».
- Une page sur le site sera à votre disposition pour soumettre vos réponses en échange des pièces du puzzle du jour.
- Page de soumission des réponses en échange des pièces : https://events.planet-casio.com/avent2025
- Réassemblez le puzzle dans un outil d'édition d'images (comme GIMP ou Photoshop) pour remporter des lots et le titre de Maître du Puzzle !
Le dernier problème sera posté le 24 Décembre. Comme d'habitude, les premières personnes qui m'enverront par MP le puzzle résolu avec leurs solutions/scripts remporteront les lots. Je préciserai quand on approchera de la fin
Avant que j'oublie, pour que ça tourne un peu les membres qui ont déjà gagné une Math+ en 2025 ne pourront prétendre qu'aux deux lots de housses/coques. Si vous n'avez jamais joué, c'est le meilleur moment pour vous lancer !
Le titre de
Maître du Puzzle pourra être collecté au moins jusqu'à début Janvier, et ceux qui auront trouvé des solutions meilleures que ce qui était attendu dans les problèmes auront bien sûr la classe éternelle. :3
Les premiers jours
Une fois n'est pas coutume, mon planning cette année est ridicule (récemment j'ai
fait des trucs et changé de job). Du coup j'ai un peu de retard sur le code et j'ai pas tout à fait fini le puzzle. Je mettrai en ligne la page permettant de récupérer les pièces d'ici quelques jours, donc gardez bien vos solutions au chaud. En échange de ce désagrément, je ferai une animation pour montrer la progression du dessin du puzzle
Allez, à vos neurones !
Liste des puzzles
Citer : Posté le 14/01/2026 08:20 | #
Actually I meant that the right way would be the long way around
Oh snap...! Why did no one tell me...? 😰
I'm blown away by how close your full adder looks to mine. It's incredible that we get exactly the same substring "a6b4a4b2". How cool is that xD
Citer : Posté le 14/01/2026 09:42 | #
Quel magnifique challenge et quelles brillantes solutions.
J'ai adoré ces questions toutes très intéressantes et qui chatouillent bien les neurones.
Pour cout-circuit qui m'a bloqué, j'étais près de la solution avec une expression *(?a?bc qui ne me donnait que les 20 premiers caractères correctement puisque je n'avais que 8 caractères pour la chaine d'entrée. Il y avait pourtant l'indice de prendre au plus court par la droite !
Comme Afyu j'ai passé un temps qu'il faut mieux ne pas révéler, mais par contre, moi, je n'ai pas abouti
Comme j'avais déjà une solution en 17 caractères, j'ai fini par abandonner (et ai préféré me tourner vers les tutos sur gint et fxsdk (génial). Je pars sur le développement d'add-in et espère apporter ma contribution d'ici peu, car pour l'instant j'ai simplement profité de vos efforts)
C'est frustrant de voir que la solution était finalement si simple avec le code de recherche que j'avais écrit (voir dans le spoiler)
Félicitations aux lauréats.
Et encore merci à Lephé pour cet impressionnant travail.
1 décembre : un monde de séquences : 94;2?(abc : autre solution en 9 caractères
9 décembre : un million de variation : 732;*(?ab?c?de?f?g donne 66 paquets distincts
11 décembre :Toupie dans un labyrinthe : *(dhhddb
13 decembre : Court-circuit
Après des recherches sur papier, j'ai fini par lancer un recherche systématique avec ce code et plus de trente formules dans la liste resultat.
Ci-dessous j'ai mis la bonne expression et j'ai bien rapidement obtenu )0)3)02)2;*(a?bc : aacaabbbcaacabbcaabbcaac
import itertools
seq='aacaabbbcaacabbcaabbcaac'
symbole2 =['3','1','2','0',')']
resultat=['a?bc']
gen=0
for chaine in resultat:
gen+=1;
f=';*('+chaine)
print(f)
print("Generation "+str(gen))
for c1 in itertools.product(symbole2, repeat=16-len(f)):
p1=''.join(c1)
formule1=p1+f
out= generate(formule1, outsize=24)
if out !=None and out==seq:
print("\t\t\t",end="\t")
print( formule1,' :', out)
break;
15 décembre : aux limites de la légalité : j'ai fait une recherche avec ce code
import itertools
# Définir les caractères disponibles
characters = ['a', 'b', 'c', '*','?','(',')']
# Fonction pour générer toutes les permutations de 1 à 8 caractères
def generate_permutations():
all_permutations = []
# Générer des permutations pour chaque longueur de 1 à 8
for length in range(1, 9):
permutations = itertools.product(characters, repeat=length)
for perm in permutations:
all_permutations.append(''.join(perm))
return all_permutations
# Générer les permutations
permutation2s = generate_permutations()
chaine=[]
nombre=0
formules=[]
for formula in permutation2s:
out, err = generate("a3b2c;" + formula, outsize=10, timeout=100)
if not err:
formules.append(formula)
if not out in chaine:
chaine.append(out)
nombre+=1
print(nombre)
17 décembre : Tri-formule j'ai fait une recherche avec ce code
import itertools
# Définir les caractères disponibles
characters = ['a', 'b','0','1','2','3','*','(',')']
# Fonction pour générer toutes les permutations de 4 à 6 caractères
def generate_permutations():
all_permutations = []
# Générer des permutations pour chaque longueur de 4 à 6
# car 5 caractères dans la formule et sortie limitée à 20
for length in range(4, 6):
permutations = itertools.product(characters, repeat=length)
for perm in permutations:
all_permutations.append(''.join(perm))
return all_permutations
# Générer les permutations
listeEntree=[]
permutation2s = generate_permutations()
seq=['aabbbbbbbabbbbaaaaaa','aabbabbaabbbbabbbbbb','aabbbbbbabbbbbaabbbb']
for entree in permutation2s:
out0, err0 = generate(entree+";*(a?b2?)" , outsize=20)
out1, err1 = generate(entree+";*(a??2b)" , outsize=20)
out2, err2 = generate(entree+";*(?a?2b)" , outsize=20)
if not (err2 or err1 or err0):
if out2 in seq and out1 in seq and out0 in seq:
listeEntree.append(entree)
print(entree)
print('*(a?b2?)->',out0)
print('*(a??2b)->',out1)
print('*(?a?2b)->',out2)
break
Pour les autres soit mes solutions sont identiques, soit elles sont plus longues, mais valides.
L'optimisation n'est pas ma qualité, comme vous pouvez le voir en lisant le code ci-dessus (légèrement optimisé dans court-circuit vu la durée de la recherche)
Citer : Posté le 14/01/2026 10:14 | #
Incroyable j'aurais jamais cru qu'il y aurait une solution par ce côté xD
Merci d'avoir joué ! J'essaierai de faire encore mieux l'an prochain pour que ce soit moins frustrant à chercher. J'espère que le développement d'add-ins te plaît
Citer : Posté le 14/01/2026 20:18 | #
Bonjour tout le monde !
Je vais essayer de présenter mes solutions, plus ou moins proprement et lisiblement :
Ce ne sont pas des explications, mais plutôt des traces de mes recherches et de mes (parfois nombreux) essais.
Énigme 1 : Un monde de séquences (01/12)
Énigme 2 : Théorème de factorisation (03/12)
aaa bb bbb aa aaa aa bbb aa aaa aa bbb bb aaa aa aaa bb aa
3a 2b 3b 2a 3a 2a 3b 2a 3a 2a 3b 2b 3a 2a 3a 2b
aaa bbbbb aa aaaaa bbb aaaaa aa bbbbb aaa aaaaa bb aa
3a 5b 2a 5a 3b 5a 2a 5b 3a 5a 2b 5a
3525;4(?a?b?a)
2a 1a 2b 3b 2a 1a 2a 2a 2b 1b 2a 3a 2a 1b 2b 2b 2a 1a 2a 3a 2b 1a 2a 2a
3a 2b 3b 3(?a) 3b 2a 3a 2a 3b 2b 3a 2a 3a 2b
32;?a2(?b)3(?a)?b3(?a)2(?b)3(?a)?b?a ← ok avec 36 caractères
32;?a2(2(?b)3(?a)?b3(?a)) ← ok avec 25 caractères
32;?a2(?b2(?b3(?a))) ← ok avec 20 caractères (au lieu de 14 max)
3525;4(?a?b?a) ← ok avec 14 caractères (14 max) !
a 2a2b3b5a 2a3b5a 2a2b3b5a 3a2b2a
3a2b3b4a 3a3b4a 3a2b3b4a a 3a2b2a
3234;?a?b
Énigme 3 : Prélude (05/12)
2(4(CDEGu)Cd3(GEDCd)GED4(ABCEu)Ad3(ECBAd)ECB)A
10;2(4(CDEGu)Cd3(GEDCd)GEDd4(ABuCE)A3(ECdBA)ECdB?u)A ← ok avec 52 caractères (au lieu de 40 max)
10;2(4(CDEGu)4(CdGED)d4(ABuCE)A3(ECdBA)ECdB?u)A ← ok avec 47 caractères
10;2(4(CDEGu)4(CdGED)d4(ABuCE)4(AECdB)?u)A ← ok avec 42 caractères
uA;2(4(CDEGu)4(CdGED)d4(ABuCE)4(AECdB)? ← ok avec 39 caractères !
Énigme 4 : Pavé César (07/12)
abcdefghijklmnopqrstuvwxyz;*(55??0? ← ok avec 35 caractères
Énigme 5 : Un million de variations (09/12)
0123;*(???a???b???c???d???e???f ← ok mais avec 31 caractères (au lieu de 22 max)
01g21d1ef;*(???a???b????g???c ← ok mais avec 29 caractères (au lieu de 22 max)
01g21d1ef;*(???a???b????g ← ok mais avec 25 caractères
g2c1d2e;*(????a????b?c ← 31 paquets distincts avec 22 caractères
cdefg;*(???a????b ← 45 paquets avec 17 caractères
cdefg;*(???a???b ← 40 paquets avec 16 caractères
cdefg;*(??a??b ← 30 paquets avec 14 caractères
cde6;*(???a??b ← 30 paquets
c6de6;*(?a?b?c ← 31 paquets
c6de;*(?a?b?c ← 36 paquets avec 13 caractères
d6e;*(?a?b?c?d ← 40 paquets
d61;*(?a?b?c?d ← 36 paquets
e3f6g;*(?a?b ← 30 paquets avec 12 caractères
e5f6g;*(?a?b ← 34 paquets
6;*(?a?b?c?d?e?f ← 36 paquets / 16 car
d6e6f6g6;*(???a???b ← 44 paquets
d6e6f6g6;*(???a???b??c ← 53 paquets / 22 car
d6e6f6;*(???a???b??c ← 51 paquets / 20 car
d6e6f6;*(???a???b???c ← 66 paquets / 21 car
d6e6f6;*(?a??b???c ← 47 paquets / 18 car
d6e6f6;*(???a???b ← 46 paquets / 17 car
d6e6f6;*(???a???b???c???g ← 89 paquets mais 25 car
d6e6f6;*(???a???bc ← 47 paquets / 18 car
cdefg;*(?????a?b ← 40 paquets / 16 car
c6d6e6f;*(??a???b ← 39 paquets / 17 car
cdef;*(????a???b ← 36 paquets / 16 car
cdef;*(??a???bc ← 32 paquets / 15 car
c6d6e;*(?a??bc ← 33 paquets / 14 car
g6d6e;*(?a??b??c ← 36 paquets / 16 car
6d6e6f6g;*(??a???b ← 31 paquets / 18 car
6d6e6f6g;*(????ab ← 34 paquets / 17 car
d6c6e6;*(?a?b???f ← 33 paquets / 17 car
cdef ; *(????a???b ← 36 paquets / 18 car
Énigme 6 : Toupie dans un labyrinthe (11/12)
*(hhddbd ← ok
Énigme 7 : Court-circuit (13/12)
aab cbb cbc cba
aac a abb bca ac ab bca abb c aac
aacaabbbcaacabbcaabbcaac
aacaabbbcaacabbcaabbcaaa
aa caa b bb caa c a bb caa bb caa c
2000101011001001001100011001 ?a?b?c?(bb)?(caa)
aaca abbb caac abbc aabb caac
aa ca ab bb ca ac ab bc aa bb ca ac
acabbbca ; *(a???a?bbcaac ← ok mais 23 caractères au lieu de 16 max
aacabbbc ; *(4?a8?0?5?3(0?
aacabbbc ; *(4?a8?0?5?3(0?
aa 1c aa 1b bb 1c aa 1c 1a bb 1c aa bb 1c aa 1c
a1a1b1a11b1ab1a1 ; abc
20123120112122121 abc
21020301021010201020201021 acb
20111311101102111211101 abca
02010210101102 babc
aa ca ab bbcaa ca bbcaa bbcaa c
caabb ; aa5?b3?c a2?5?3?c ← ok mais avec 22 caractères au lieu de 16 max
202320122220 ; *(?a?bc ← ok mais avec 20 caractères au lieu de 16 max
2023201222 ; *(?a?bc ← ok mais avec 18 caractères au lieu de 16 max
a0a3a01baba0 ; *(?a?bc ← ok mais avec 20 caractères au lieu de 16 max
a0a3a01bab ; *(?a?bc ← ok mais avec 18 caractères au lieu de 16 max
1013100b1b10 ; *(a?a?bc ← ok mais avec 21 caractères au lieu de 16 max
a0a3a01bab ; *(a??bc ← ok mais avec 18 caractères au lieu de 16 max
a0a3a0b1ab ; *(a??bc ← ok mais avec 18 caractères au lieu de 16 max
3aac3c10c021c21cc ; *(??aa?b ← ok mais avec 26 caractères
3aacbbc0c0b1cb1cc ; *(??aa?b ← ok mais avec 26 caractères
1013100212 ; *(?aa?bc ← ok mais avec 19 caractères
1013100b1b ; *(?aa?bc ← ok mais avec 19 caractères
1101c31c0c02c1
; *(??caa
1013100b1b ; *(a?a?bc ← ok mais avec 19 caractères au lieu de 16 max
a0a3 ; 3(a??bc
a1a0bba1; *(2(?)?c
caabb ; aa5?b3?ca25?c ← ok mais avec 19 caractères
caabb ; aa5?b2(3?ca7? ← ok mais avec 19 caractères
caabb ; aa5?b2(3?ca7?
aa3bbb4cabbbbc ; *(??caa ← ok mais avec 22 caractères
aa ca ab bbcaa ca bbcaa bbcaa c
aa)ca)ab1ca1111c ; *(???bbcaa ← ok mais avec 27 caractères
a)c)1bc101c ; *(?a?bbcaa ← ok mais avec 22 caractères
3aa0bb3cab1bc ; *(??bcaa ← ok mais 22 caractères
ab3acaa1ac ; aa*(ca??bb ← ok mais 21 caractères
ab3aca1aac ; aa*(ca??bb ← ok mais avec 21 caractères
aa caa b bb caa ca bb caa bb caa c
1bca11c ; aa*(caa??bb ← ok avec 19 caractères
4caabca11c ; *(aa??bbc ← ok avec 20 caractères
4caa33cab1bc ; *(aa??bc ← ok avec 21 caractères
10b23cab1bc ; *(aa??bc ← ok avec 20 caractères
10bb3ca2b1c ; *(aa??bc ← ok avec 20 caractères
10bb3ca21b ; *(aa??bc ← ok avec 19 caractères
c3aa3cab11bc ; *(aa???bc ← ok avec 22 caractères
; aa*(caa??b
caabbb ; a*(a9?c
bbcaa ; aacaab5?ca5?5?c ← ok mais avec 21 caractères
bbcaa ; aacaab5?ca25?c ← ok mais avec 20 caractères
caabb ; aa3?b5?ca25?c ← ok mais avec 19 caractères
aacaa bbb caa ca bbcaa bbcaa c
aac ; 5?3b5?0?2(2b3?)c ← ok mais avec 20 caractères
aac ; 5?3b5?0?2(2b3?)c
0bb1ab0121 ; aa*(caa?c??b ← ok mais avec 23 caractères
021a0111 ; aa*(caa?c?bb ← ok mais avec 21 caractères
a01abb ; *(?a?b?c
1011bb ; *(?aa?b?c
1c011bb ; *(?aa??b?
10a
5caabb ; aa??b0?3?ca5?5?c
6aacaabca11 ; 3(??bbcaa)c ← ok mais avec 23 caractères au lieu de 16 max
bb1bcabb1b1bc ; aa 4(caa???? ← ok mais avec 25 caractères
aa1a3bbb1a1111bb1abb1ac ; 6(??c??a ← ok mais avec 32 caractères
1a1a 1a1a bb1bcabb1b1bc ; 5(????c
ac12bb ; 2*(a3??a2?bc aaca???c
aabbc ; 2?0?0?5? b 3?0?0?2?0? 25?c ← ok mais 29 caractères
c2a2b ; aa5?b3?ca25?c
aa caabb b caa ca bb caabb caa c
6acaabbb3c ; a?????? 6?2?3?c
caabb1 ; a2(a6?b3?c a5?2?3?c
caabbb ; aa9? c a 2? 0?5?0? 3? c
aa ca ab bb c aa ca bb ca ab bc aa c
a a caa b bb caa c a bb caa bb caa c
;*(?a?c?b
11111001000101;*(?(aa)?(caabb)?b?(caac)?(ab) ← ok mais avec 44 caractères
1001 01 1001 1001 001 1 1001 011 1001 1 1001 1001 1 1001 01
201231201121221201;*(?a?b?c ← ok mais 27 caractères au lieu de 16
; ?a?b?c
1100;*(2?(?a?b?c
Nouvelle approche, après avoir compris cette notion de court-circuit (avec la ")" ):
aa caa b bbcaa ca bbcaa bbcaa c
131)02121) ; aa*(ca?a?b ← ok mais avec 21 caractères
a3a)1ba2ac ; aa*(ca??b ← ok mais avec 20 caractères
a3a)b1abac ; aa*(ca??b ← ok mais avec 20 caractères
aaabb)1ab11ab1)1a ; *(??ca?b ← ok mais avec 26 caractères
a0)11abb)1ab11ab1)ac ; *(??ca?b ← ok mais avec 29 caractères
0)0)1ab)0)111a1)a ; *(?ca?bb ← ok mais avec 26 caractères
a)cabca)c11ca1cac ; *(?a??bb ← ok avec 26 caractères
a)cabca)c11ca1c ; *(?a??bb ← ok avec 24 caractères
1)c3100b1b1c ; *(?aa?bc ← ok avec 21 caractères
1)c3100b1b ; *(?aa?bc ← ok avec 19 caractères
1013100b1b1c ; *(?aa?bc ← ok mais avec 21 caractères
3aacbbc0c0b1cb1cc ; *(??aa?b ← ok avec 26 caractères
3aacbbc0c01bc1bcc ; *(??aa?b ← ok avec 26 caractères
a0a3a01bab ; *(a??bc
aa caa b bbcaa ca bbcaa bbcaa c
11)1cbbc)c0b1cb1cc ; *(??aa?b ← ok avec 27 caractères
01)11311)10b11b11c ; *(?ca?a?b ← ok avec 28 caractères
2023201222 ; *(?aa?bc
a)c)1bc2c ; *(?a?(bbcaa ← ok avec 21 caractères
200bc101c ; *(?a?(bb)caa ← ok avec 22 caractères
a003cb0bc ; *(?a?bcaa ← ok avec 19 caractères
2003c20 ; *(?a?bcaa ← ok avec 17 caractères (!!)
20131002121c ; *(?a?bca
2003c20 ; *(?a?bcaa
a0 bb 3cab 1bc; *(a??bca ← ok avec 20 caractères
a0 13 3cab
a0 b2 3ca2
a0 31
a)a0bbc)a212c ; *(??bcaa ← ok avec 22 caractères
aa01bbcab11bc ; *(???bcaa
3aa0 13 3cab 1b c ; *(??bcaa ← ok avec 22 caractères
a)a0 bb 3ca2 b1
c)a2 12
c)ab
6aacaab 3ca2 c ; *(??(bbcaa ← ok avec 23 caractères
aa ca abb b ca ac abb ca abb ca ac
0aaba11011a ; *(?ca?c?abb ← ok avec 23 caractères
0a)00abaa10a1a ; *(?ca?c?bb ← ok avec 25 caractères
aa caa b bbcaa ca bbcaa bbcaa c
; *(?a?bca
0a)1ab1a)1111a11ac ; *(?ca??bb ← ok avec 28 caractères
; *(a?(bb)caa
0003cb0b ; *(aa?a?bc ← ok avec 18 caractères
1013)cb1b ; *(a?a?bc ← ok avec 18 caractères
)c)03)c2121c ; *(a?a?bc ← ok avec 21 caractères
20131002121c ; *(?a?bca ← ok avec 21 caractères
1013100b1b10 ; *(a?a?bc ← ok mais avec 21 caractères
1013100b1b ; *(a?a?bc ← ok mais avec 19 caractères
2023201222 ; *(?a?bc
aab ; aa*(c???bb
aa2
3aab4aacaaa3aac ; aa*(c??bb ← ok avec 25 caractères
; *(ca??b
; bb aa
a ac a abbbc a ac abbc a abbc aac
)c))bb)c)1b)1b ; *(a??bc ← ok avec 22 caractères
)0)3)0b)b)c ; *(a?bc ← ok avec 18 caractères
)0)3)0b)b ; *(a?bc ← ok avec 16 caractères (!!!)
a03abba01b)1bac ; *(a??bc ← ok avec 23 caractères
Énigme 8 : Aux limites de la légalité (15/12)
32650
Énigme 9 : Tri-formule (17/12)
*(a??2b)
*(?a?2b)
aabbbbbbbabbbbaaaaaa ← formule 3
aabbabbaabbbbabbbbbb ← formule 1
aabbbbbbabbbbbaabbbb ← formule 2
a3b25abbb6 ← ok
Énigme 10 : Complément à b (19/12)
01 0) ; *(!(?a)?b?a?) ← ok avec 18 caractères (comme la solution de Lephe)
01 0) ; *(!?a?b?a?) ← ok avec 16 caractères (moins que la solution de Lephe !)
01) ; *(!?a?b?) ← ok avec 13 caractères (moins que la solution de Lephe !)
01) ; *(!?a?b? ← ok avec 12 caractères (moins que la solution de Lephe !)
Énigme 11 : Derniers ajouts (21/12)
01! ; *((!?a?b)??a?b
01) ; *(!!?a?b
; *(!?
01 0) ; *(!(?a)!?b?a?)
01) ; *(!!?b?a?b?
01 010) ; *(!?(!?a?b)?(!?b?a)?b?b?b?)
00 00010) ; *(!(?a?b)!(?a?b)?d?a?c?) ← fonctionne pour 0+0, pour 0+1 et pour 1+0 (manque 1+1)
00 000001) ; *(!(?a?b)!(?b?a)?d?b?d?a?) ← fonctionne pour 0+0, 0+1, 1+0 et 1+1 mais ne gère pas la retenue
0 001) ; *(!(?a)!(?a)?b?a?) ← fonctionne pour 0+0, 0+1, 1+0 et 1+1 mais ne gère pas la retenue
0 001) ; *(!?a!?a?b?a? ← fonctionne pour 0+0, 0+1, 1+0 et 1+1 mais ne gère pas la retenue
0 001001 ; *(!?c!?a?b?a*(?) si c'est un 0, alors on avance de 2 ou 3, si c'est un 1, on avance de 2
0000010003221 ; *(!(?0c)!(?0c)?b?a?b?a3(?0c)?(?0d ← solution correcte en 47 caractères !
0000010003221 ; *(!?0c!?0c?b?a?b?a3?0c?(?0d ← solution correcte en 41 caractères !
0000010003221 ; *(!?c!?c?b?a?b?a3?0c?(?0d ← solution correcte en 39 caractères !
0000010003221 ; *(!?c!?c?b?a?b?a3?0c??0d ← solution correcte en 38 caractères !
Énigme 12 : Castor affairé (23/12)
a;(9?(9?(9?(9?(9?(9?(9?(9?(9?(9?(9?(9?(9?(9?(9?(9?(9?(9?(9?(9?(9?(9?(9?(9?(9 ← pas la bonne réponse
);(*(9a?(9a?
abcdefghijklmnopqrstuvwxyz;(?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?
898989898989898989898989898989898989898989898989898989898989a;9?9?9?9?9?9?9?
9;9?9?9?9?9?9?9?9?9?9?9?9?9?9?9?9?9?9?9?9?9?9?9?9?9?9?9?9?9?9?9?9?9?9?9?9?9?a ← solution pour 77 (!!)
989898989898989898989898989898989898989898989898989898989898989898989898989a ← solution pour 76 (!!)
9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9;?(?a
a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(9a;9?9?9?9?9a
9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(9a;9?9?9?9?9?a
a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(9a;9?9?9?9?9a
a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(9a;9?9?9?9?9?9?a
9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9;9?9?9?9?9?9?9a
a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9;9?9?9?a
9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9;9?9?a
9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(9a(9a;9?9?9?9a
9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9(a9;9?9?9?9?9?9?9a
9????????????????
a9;9?9?9?9?9?9?9?a
Le niveau de difficulté des énigmes était très variable, mais elles étaient toutes intéressantes !
Merci Lephe' pour cette forte stimulation des méninges
Et le puzzle est magnifique. Bravo Lephe' !
Citer : Posté le 16/01/2026 23:58 | #
Bonjour tout le monde !
Voici mes solutions :
Un monde de séquences :
Pour celle-ci pas grand-chose à dire, j’ai trouvé du premier coup la solution en 9 si je me souviens bien.
Théorème de factorisation :
Pour celui-ci, j’ai trouvé assez rapidement comment faire.
Prélude :
Sur celle-ci, je me suis d’abord cassé la tête a essayé de trouver comment mettre bien les notes dans la chaine d’entrée, avant de me rendre compte que ça passait en les mettant dans la formule directement.
Pavé César :
Pour celui-ci j’ai vite compris le principe et j’ai juste passé du temps avant de trouver comment écrire 26 caractères.
Un million de variations :
Pour ce problème, j’ai eu du mal au début car je n’avais pas compris que les lettres pouvaient se répéter dans un même paquet, du coup j’essayais de les faire apparaitre chacune une fois dans chaque groupe mais je ne voyais pas comment faire. Au bout d’un moment en regardant ce que me disait le programme de la page de test je me suis rendu compte qu’il n’y avait pas besoin de faire ça, et après ça j’ai trouvé rapidement en utilisant une méthode très complexe. (non en fait j’ai juste essayé des trucs au hasard jusqu’à ce que ça fonctionne
Toupie dans un labyrinthe :
Un de mes problèmes préférés ! C’était amusant d’essayer de trouver une solution au labyrinthe, même si au début j’ai passé longtemps à tenter de passer par la droite avant de trouver cette solution.
Court-circuit :
Ce problème a été mon préféré, j’ai tout de suite compris qu’il fallait utiliser la parenthèse dans la chaine d’entrée, et j’ai eu la bonne intuition directement pour la suite. D’ailleurs pour les problèmes suivants j’ai beaucoup utilisé les parenthèses fermantes alors qu’il n’y en avait pas toujours besoin...
Aux limites de la légalité :
Pour lui je n’étais pas sur qu’il y ait un moyen de le calculer facilement, donc je l’ai juste brute forcé avec un code en python. Le voici :
start = time.time()
av_char="abc()?*"
longueur_fixe = False
counter=0
length = 8
saves = []
if longueur_fixe:
curr=av_char[0]*length
else:
curr=av_char[0]
def add_char(string):
string = copy.deepcopy(string)
ind=av_char.index(string[-1])
if ind+1 >= len(av_char):
if string[0:-1].count(av_char[-1])>=len(string)-1:
if len(string)+1>length:
return False
return av_char[0]*(len(string)+1)
new = add_char(string[0:-1])
if new != False:
return new+av_char[0]
return False
else:
return string[0:-1]+av_char[ind+1]
if not longueur_fixe:
i = 0
while curr is not False:
result = dec15.generate("a3b2c;"+curr, outsize=10, timeout=100)
if (not result[1]) and result[0] not in saves:
saves.append(result[0])
counter += 1
curr = add_char(curr)
i+=1
print(curr, result, counter)
else:
import tqdm
for i in tqdm.tqdm(range(0, len(av_char)**length)):
result = dec15.generate("a3b2c;"+curr, outsize=10, timeout=100)
if (not result[1]) and result[0] not in saves:
saves.append(result[0])
counter += 1
curr = add_char(curr)
if not curr:
break
print(curr)
print(counter, i)
print(time.time()-start, start)
print(saves[-20:len(saves)])
Le code n’est pas très propre mais j’ai dû le faire sur téléphone sur Termux (Pydroid ne fonctionnait pas je ne sais pas pourquoi) dans nano et c’était... compliqué. En plus au début j’avais oublié de mettre l’étoile comme caractères possibles du coup le résultat était faux et j’ai dû le relancer pendant 1/4 d’heure.
Tri-formule :
Pour lui j’ai d’abord réfléchi un peu en essayant d’utiliser comme dans court-circuit des parenthèses dans la chaine d’entrée (cette phrase de Lephe’ m’a perturbé : « Ce problème n'est pas trop dur si vous gardez en tête qu'à peu près n'importe quoi peut aller dans une entrée. »), et j’ai fini par le brute forcer aussi avec le script précédent un peu modifier, qui m’a vite donné la solution :
start = time.time()
av_char="ab()0123456789"
entry = [";*(a?b2?)",";*(a??2b)",";*(?a?2b)"]
out=["aabbbbbbbabbbbaaaaaa",
"aabbabbaabbbbabbbbbb",
"aabbbbbbabbbbbaabbbb"]
out_save = out.copy()
longueur_fixe = False
counter=0
length = 7
saves = []
if longueur_fixe:
curr=av_char[0]*length
else:
curr=av_char[0]
def add_char(string):
string = copy.deepcopy(string)
ind=av_char.index(string[-1])
if ind+1 >= len(av_char):
if string[0:-1].count(av_char[-1])>=len(string)-1:
if len(string)+1>length:
return False
return av_char[0]*(len(string)+1)
new = add_char(string[0:-1])
if new != False:
return new+av_char[0]
return False
else:
return string[0:-1]+av_char[ind+1]
sol=[]
if not longueur_fixe:
i = 0
while curr is not False:
nb_in=0
for inp in entry:
result=dec15.generate(curr+inp, outsize=20)[0]
if result not in out:
break
del out[out.index(result)]
nb_in+=1
if nb_in>=3:
print(curr)
sol.append(curr)
out = out_save.copy()
curr = add_char(curr)
i+=1
print(curr, result, i, sol)
else:
import tqdm
for i in tqdm.tqdm(range(0, len(av_char)**length)):
result = dec15.generate("a3b2c;"+curr, outsize=10, timeout=100)
if (not result[1]) and result[0] not in saves:
saves.append(result[0])
counter += 1
curr = add_char(curr)
if not curr:
break
print(sol)
print(curr)
print(counter, i)
print(time.time()-start, start)
print(saves[-20:len(saves)])
Complément à b :
Lui a été un des plus compliqués pour moi. J’ai d’abord tâtonné un peu et trouvé cette solution : "01001);*(?b?!0?a?a" qui ressemble un peu à celle d’Afyu. (Par contre je ne saurai pas trop vous expliquer comment elle fonctionne). Ensuite je n’ai pas cherché à l’optimiser plus que ça, il ne me restait plus beaucoup de temps donc je suis passé à Derniers ajouts. Et après l’avoir, je me suis rendu compte qu’il y avait une manière bien plus simple de le faire en mettant les lettres dans la chaine d’entrée. Voici comment elle fonctionne :
Déjà, le caractère "c" est inutile et jamais affiché. La formule commence par lire silencieusement autant de caractères que le nombre fournit par "!", puis il affiche le suivant. Si !=1, il saute le c et affiche un "b", si !=2, il saute le c et le b et affiche un "a". Jusque-là c’est facile, mais après j’ai galéré pour trouver comment revenir au début de la chaine d’entrée. J’ai fini par trouver un moyen en utilisant une parenthèse fermante à la fin de la chaine d’entrée et ce bout de formule : "0(?)?". Si on a affiché un "b" le "0(?)" écrit silencieusement le "a" puis le dernier "?" écrit la parenthèse fermante et on retourne au début. Si on a affiché un "a", le "0(?" lit la parenthèse de la chaine d’entrée, qui ferme la parenthèse ouvrante à côté du zéro et ensuite la parenthèse fermante déjà présente dans la formule retourne au début de celle-ci et le dernier "?" n’est pas évalué.
Derniers ajouts :
Ce problème a été le plus compliqué pour moi, j’y ai passé 2 jours avant d’avoir un déclic. Là encore, le caractère "c" est inutile et jamais affiché. Cette partie : "2!0?" lis silencieusement des caractères de la chaine d’entrée, puis on affiche le suivant avec "?", puis cette partie "0(?)0(2?)0(?)0(?)60(?)" s’occupe de retourner au début de la chaine d’entrée et de la retenue (dans ce cas on ne retourne pas au début mais on se décale d’un caractère. Le "2" dans la chaine d’entrée sert aussi à la retenue. J’ai passé beaucoup de temps à trouver comment mettre une retenue, mes premiers essais ressemblaient un peu à ceux d’Afyu. Et honnêtement, quand j’ai essayé cette formule, je m’attendais à ce qu’elle fonctionne que jusqu’à la première retenue mais pour une raison inconnue ça a fonctionné pour tout.
Castor affairé :
- Longueur 76 :
- Longueur 77 :
Pour celui-ci pas grand-chose à dire, j’ai compris très rapidement comment faire.
Toutes ces énigmes étaient très intéressantes, et je ne pensais pas qu’on puisse faire autant de choses avec ses séquences !
Mes préférés ont été Derniers ajouts et Complément à b car ils nécessitaient de traiter des données inconnues et Court-circuit parce que... je ne sais pas, je l’ai trouvé fun.
Merci Lephe’ pour ce super puzzle de l’avent
Citer : Posté le 17/01/2026 00:50 | #
Court-circuit :
)0)3)02)2;*(a?bc
Ce problème a été mon préféré, j’ai tout de suite compris qu’il fallait utiliser la parenthèse dans la chaine d’entrée, et j’ai eu la bonne intuition directement pour la suite. D’ailleurs pour les problèmes suivants j’ai beaucoup utilisé les parenthèses fermantes alors qu’il n’y en avait pas toujours besoin...
*Gack*... how!?!?!?
Pour lui je n’étais pas sur qu’il y ait un moyen de le calculer facilement, donc je l’ai juste brute forcé avec un code en python.
...En plus au début j’avais oublié de mettre l’étoile comme caractères possibles du coup le résultat était faux et j’ai dû le relancer pendant 1/4 d’heure.
Honestly, it was the exact same for me! I wasn't sure whether brute-forcing it was allowed, but I thought "whatever, there's no way anyone could solve this. Plus, isn't making a brute-forcing program a challenge itself?" And I also ended up getting the wrong answer during the first real attempt, and realized I forgot to add the parentheses my list of characters. It took much longer on the re-running (somewhere between 20-30 minutes I think), but then I managed to get the right answer.
For Tri-formula, I think I considered brute-forcing that one with a modified program too, but decided to try to deduce it myself first. Probably would've been easier and faster had I just modified the program in the first place
Your solution to Complement to B is so beautiful and elegant. :')
Citer : Posté le 18/01/2026 19:53 | #
En effet, super la solution d'Earatozytet pour "Complément à b" ! Plein de surprises c'est vraiment cool comme résultat pour ce puzzle
Je m'occupe des lots, @Afyu et @Earatozytet voyez sur ce topic : https://www.planet-casio.com/Fr/forums/topic18513-1-lots-et-goodies-pour-les-evenements-planete-casio.html
Citer : Posté le 19/01/2026 02:31 | #
Perso, je n'avais tenté que les deux premiers, la vie s'étant mis dans le chemin (le taf, un déménagement dans une région différente, ma désorganisation ambiante, etc). Mais je publie ce que j'avais, histoire de
Pour Un monde de séquences, effectivement j'ai eu pas mal de fun, puisque j'avais trouvé les séquences suivantes, toutes faisant 9 caractères :
Pour Théorème de factorisation, j'avais les solutions suivantes :
Mes notes m'indiquent que je n'étais vraiment pas si loin de la solution, mais je n'ai pas réussi à voir le tableau plus large qui m'aurait permis de trouver la solution :
3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3 2 3
motif de base | motif inversé |
-> (ababa) 35735 puis 25825, total : 357375825
Bien joué aux gagnants ! Pour avoir mis un peu de jus de cerveau dedans, je dois dire que c'était vraiment pas facile. x_x
Citer : Posté le 19/01/2026 20:05 | #
Bonjour,
Je voudrais bien la Coque « Galaxie » pour Graph Math+ et si j'y ai droit en plus, alors je voudrais bien également le Cahier Numworks La Normandie, un Havre de mathématiques.
Citer : Posté le 19/01/2026 20:22 | #
Aucun souci ! J'avais mis "3-4 goodies" pour donner un ordre d'idée, hésite pas si autre chose attire ton regard. Je sais que tu gagnes souvent alors y'a peut-être pas beaucoup de nouveautés...
Citer : Posté le 25/01/2026 14:03 | #
Bonjour tout le monde,
Désolé pour mon manque de présence ces derniers jours, je suis bien occupé à me prendre la tête avec un truc du genre : projet de reconversion professionnelle vers un métier dans le monde de l'informatique (d'ailleurs si vous avez des conseils ou des idées, je suis preneur).
Je vais me contenter de la coque et du cahier et ça sera parfait. Merci beaucoup !
Ce n'est pas une question d'éventuelle absence de nouveauté mais plutôt d'utilisation concrète et d'accumulation. Depuis 2019, l'année où j'ai découvert les sites TI-Planet et Planète-Casio, je participe très régulièrement aux concours qui sont organisés et en ayant gagné plusieurs lots au fil du temps, je finis par avoir plein de goodies et de calculatrices et je n'envisage pas forcément de commencer une collection ou d'ouvrir un musée.
Par ailleurs, je suis bien content de pouvoir laisser le plus beau lot à quelqu'un à qui ça fait très plaisir
Ma plus belle récompense est d'avoir réussi à terminer le puzzle (et en étant 1er, qui plus est !) !!
Encore merci pour cette belle aventure !