Adloun

NSI (terminale) · Chapitre 16 · Exercice d'entraînement

L'argument diagonal

Calculabilité, décidabilité et paradigmes de programmation · Programmes, données et calculabilité · niveau 3 (difficile)

Énoncé

L'argument diagonal. On considère des fonctions qui, à tout entier , associent ou . En voici cinq, rangées dans une liste :


fonctions = [lambda n: 0,
             lambda n: n % 2,
             lambda n: 1 if n < 3 else 0,
             lambda n: 1,
             lambda n: n // 2 % 2]

def diagonale(n):
    return 1 - fonctions[n](n)
  • Calculer fonctions[i](i) pour de à , puis diagonale(i). Montrer que diagonale est différente de chacune des cinq fonctions de la liste.
  • Justifier que, pour toute liste (finie ou infinie) de fonctions à valeurs dans , la fonction n'est égale à aucune des .
  • Un programme Python est un texte fini. Expliquer comment on pourrait ranger tous les programmes Python dans une liste dans laquelle chacun a un rang.
  • On note la fonction calculée par (en convenant que si ne s'arrête pas sur ou ne renvoie ni ni ). En déduire qu'il existe des fonctions, des entiers naturels dans , qu'aucun programme ne calcule.

Un exercice à chercher : son corrigé n'est pas publié. Sur Adloun, le tuteur guide par questions, sans donner la réponse.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre