KITT wrote:Je suis KITT, la voiture de la série K2000 (ou Knight Rider en anglais) :
Dans ma série apparaissait également régulièrement un ordinateur TIPC (Texas Instruments Professional Computer), sur lequel on avait rajouté quelques autocollants avec le logo Texas Intruments afin de bien mettre en valeur ce constructeur.
Notre énigme de l'Avent 2019 que nous te proposions depuis le 1er décembre avec des indices et morceaux de Python quotidiens est maintenant terminée.
La réponse était donc KITT.
En effet, dans l'épisode 2 de la saison 3 de K2000, Le Roi des robots - 2/2, KITT affiche une première version d'un code source en langage BASIC Applesoft, reconnaissable à ses instructions HTAB et VTAB :
Dans l'épisode 11, Le Caméléon, on voit KITT enfin exécuter ce code, dans une version corrigée et complétée.
Voici le code final en question, que tu pourras par exemple coller et lancer sur un émulateur d'Applesoft BASIC en ligne :
Nous t'avions fort fidèlement adapté ce code en Python, mais en y rajoutant un codage affine (Terminale S Spécialité Mathématiques) des chaînes de caractères affichées :
Le décodage d'une seule de ces chaînes permettait de trouver la réponse via une simple recherche Google.
La réponse était donc KITT.
En effet, dans l'épisode 2 de la saison 3 de K2000, Le Roi des robots - 2/2, KITT affiche une première version d'un code source en langage BASIC Applesoft, reconnaissable à ses instructions HTAB et VTAB :
Dans l'épisode 11, Le Caméléon, on voit KITT enfin exécuter ce code, dans une version corrigée et complétée.
Voici le code final en question, que tu pourras par exemple coller et lancer sur un émulateur d'Applesoft BASIC en ligne :
- Code: Select all
1 SPEED= 240
50 HOME
55 INPUT "";W$
70 HTAB 9
82 HTAB 9
85 PRINT
90 FOR A = 1 TO 30
100 R = RND (9)
140 HTAB 1
150 PRINT SIN (R),
151 HTAB 7: PRINT " ",
155 HTAB 12
160 PRINT COS (R),
161 HTAB 19: PRINT " ",
165 HTAB 24
170 PRINT TAN (R),
171 HTAB 28: PRINT " ",
200 NEXT A
300 HOME
350 FOR G = 1 TO 3
400 PRINT "MARK MARSHALL 3526-3782"
410 PRINT "DON SHARP 2415-3816"
420 PRINT "BILL STARK 3454-3921"
430 PRINT "KURT BORG 5647-2931"
440 PRINT "LEROY JOESEPH 5473-3333"
450 PRINT "KEVIN DOWNEY 9990-6969"
460 PRINT "ERIC VESPER 2738-4628"
470 PRINT "MIMI SOUDAN 3425-2837"
480 PRINT "C. GIBSON 3516-9827"
490 PRINT "CHRIS MILLER 4622-2819"
500 PRINT "JOHN SITCOM 2516-3981"
510 PRINT "STEVE PENCE 3617-2938"
520 PRINT "PHIL MORITS 5783-4720"
530 PRINT "MARK FOSTER 4537-1984"
540 PRINT "DEKE MILLER 4527-4729"
550 PRINT "BRAD REYZE 3541-3721"
560 PRINT "RANDY RODGERS 4627-4478"
570 PRINT "DENNIS PARR 3621-2836"
590 PRINT "DAN BUCK 4526-4627"
600 PRINT "A.J. MCDONALD 3619-8972"
610 PRINT "IAN WAYNE 3276-8567"
620 PRINT "JIM DAWSON 4562-4362"
630 PRINT "JUDY ALLEN 5171-9292"
640 PRINT "DAVID CAZARUS 9475-4627"
650 PRINT "MIKE CRAVEN 4562-7829"
660 PRINT "BILL BUSAK 3546-3719"
670 PRINT "HELEN DAVIS 5632-1938"
680 PRINT "CHRIS ALSIP 1113-7858"
690 PRINT "BRUCE GOLSKI 4451-1031"
695 PRINT "DAVE DEVLIN 2541-5463"
700 NEXT G
800 HOME
850 FLASH
875 HTAB 7
880 VTAB 3
900 PRINT "SYSTEMS DEVICE LOADING 5.2"
950 NORMAL
960 FOR G = 1 TO 3
975 PRINT : PRINT : PRINT : PRINT : PRINT : PRINT : PRINT : PRINT : PRINT : PRINT
990 PRINT : PRINT : PRINT : PRINT : PRINT
1000 PRINT " WHAT THE HECK"
1100 PRINT " THE JURY DECISION"
1200 PRINT " TO DENY MAYOR SMITH"
1300 PRINT " HIS CHOICE OF"
1400 PRINT : PRINT : PRINT : PRINT : PRINT : PRINT : PRINT : PRINT : PRINT : PRINT
1500 PRINT " THESE AND OTHER"
1600 PRINT " STORIES CAN BE SEEN"
1700 PRINT " ON THE AMAZING"
1800 PRINT " CANTERBURY STORIES"
1900 PRINT : PRINT : PRINT : PRINT : PRINT : PRINT : PRINT : PRINT : PRINT : PRINT
2000 PRINT " KNIGHT INDUSTRIES"
2100 PRINT " TWO THOUSAND"
2200 PRINT " LOADED AND READY"
2300 NEXT G
Nous t'avions fort fidèlement adapté ce code en Python, mais en y rajoutant un codage affine (Terminale S Spécialité Mathématiques) des chaînes de caractères affichées :
- Code: Select all
from random import *
from math import *
from sys import *
ml=11
def htab(n,s=""):
while(len(s)<n):s+=" "
return s[:n]
def vtab(n):return "\n"*n
def home():print(vtab(ml))
def main(p1=0,p2=2,p3=0,p4=0,p5=1):
home()
for a in range(30):
r=randint(0,9)
t=str(sin(r))
t=htab(6,t)
t+=" "*6
t=htab(11,t)
t+=str(cos(r))
t=htab(18,t)
t+=" "*6
t=htab(23,t)
t+=str(tan(r))
print(t)
home()
l=[]
l.append('qlxzmqlxVjlXXpgWEPp^wW')
l.append('AhOmVjlxFWNygPpwyE')
l.append('JHXXmVolxzpNgNPpUWy')
l.append('zMxomJhxQgEN^PWUpy')
l.append('XZxhvmahZVZFjgN^pPpppp')
l.append('zZfHOmAhDOZvUUU`PEUEU')
l.append('ZxHcmfZVFZxW^pwPNEWw')
l.append('qHqHmVhMAlOpNWgPWwp^')
l.append('cimQHJVhOpgyEPUwW^')
l.append('cjxHVmqHXXZxNEWWPWwyU')
l.append('ahjOmVHochqWgyEPpUwy')
l.append('VoZfZmFZOcZpEy^PWUpw')
l.append('FjHXmqhxHoVg^wpPN^W`')
l.append('qlxzmshVoZxNgp^PyUwN')
l.append('AZzZmqHXXZxNgW^PN^WU')
l.append('JxlAmxZvTZpgNyPp^Wy')
l.append('xlOAvmxhAQZxVNEW^PNN^w')
l.append('AZOOHVmFlxxEWyPWwpE')
l.append('AlOmJMczNgWEPNEW^')
l.append('liaimqcAhOlXApEyUPwU^W')
l.append('HlOmDlvOZpW^EPwgE^')
l.append('aHqmAlDVhONgEWPNpEW')
l.append('aMAvmlXXZOgy^yPUWUW')
l.append('AlfHAmclTlxMVUN^gPNEW^')
l.append('qHzZmcxlfZOgEWP^wWU')
l.append('JHXXmJMVlzpgNEPp^yU')
l.append('jZXZOmAlfHVgEpWPyUpw')
l.append('cjxHVmlXVHFyyypP^wgw')
l.append('JxMcZmQhXVzHNNgyPy`py')
l.append('AlfZmAZfXHOWgNyPgNEp')
t=len(l)
l.append('VvVmAZfHcZmXhlAHOQmgiW')
l.append('DjlomojZmjZcz')
l.append('ojZmaMxvmAZcHVHhO')
l.append('ohmAZOvmqlvhxmVqHoj')
l.append('jHVmcjhHcZmhs')
l.append('ojZVZmlOAmhojZx')
l.append('VohxHZVmclOmJZmVZZO')
l.append('hOmojZmlqlTHOQ')
l.append('clOoZxJMxvmVohxHZV')
l.append('zOHQjomHOAMVoxHZV')
l.append('oDhmojhMVlOA')
l.append('XhlAZAmlOAmxZlAv')
l.append('BmlHOVHmlssHcjZmqhOmchAZi')
l.append('_MHmVMHVPaZmu')
for k in range(len(l)):l[k]=da(l[k],p1,p2,p3,p4,p5)
for k in range(t):l[k]=htab(14,l[k][:-9])+l[k][-9:]
for g in range(3):
for k in range(t):print(l[k])
home()
print(vtab(2),htab(6)+l[k+1])
t=k+2
for g in range(3):
print(vtab(ml-12))
u=t
for f in range(3):
print(vtab(ml-10))
for k in range(u,u+4-(f==2)):print(htab(4)+l[k])
u=k+1
def da(a,b,c,d,e,f):
g,h=0,""
while f*g%c!=1:g+=1
for k in range(len(a)):h+=chr(g*(ord(a[k])-d-e)%c+b)
return h
Le décodage d'une seule de ces chaînes permettait de trouver la réponse via une simple recherche Google.
La réponse a été trouvée et formulée :
Félicitations, vous gagnez donc tous les deux les 2 superbes calculatrices TI-Nspire CX II-T mises en jeu !
- dès le 20 décembre par RdB qui a tilté sur les 125 Mo de mémoire de KITT (ou plus précisément dans la série 1000 Mbits), capacité peu usuelle en informatique où tout se chiffre normalement en puissances de 2
- puis le 24 décembre par Pavel qui quant à lui s'est appuyé sur le script Python fourni et en a cassé le codage affine
Félicitations, vous gagnez donc tous les deux les 2 superbes calculatrices TI-Nspire CX II-T mises en jeu !
Téléchargement : KITT animation
(pour TI-83 Premium CE connectée à un TI-RGB Array via un TI-Innovator Hub)