Annonce

Bienvenue sur le site support de mes ouvrages d'introduction à SAS

La 4ème édition de mon ouvrage est disponible depuis le 11 avril 2019 !

Où trouver cet ouvrage ?


#1 18-02-2015 08:23:18

SAS-SR
Administrateur
Lieu: Université d'Orléans
Date d'inscription: 01-09-2008
Site web

[archive] Chuck Norris a compté jusqu'à l'infini... deux fois

Il y a quelques temps, j’ai vu, à l’invitation d’un de mes étudiants, une vidéo amusante qui explique ce qu’est l’infini.

https://www.youtube.com/watch?v=4U6H96VU-Vg

Je vous invite à regarder cette vidéo et vous vous rendrez compte que l’infini, c’est long, surtout vers la fin…

Parmi les exemples que donne cette vidéo pour faire comprendre ce qu’est l’infini, il y a l’exemple suivant : le paradoxe sur singe savant.

Prenez un singe, mettez le devant une machine à écrire. Si vous le faites taper sur cette machine suffisamment longtemps, il finira par taper l’intégralité d’Hamlet, la pièce de Shakespeare, du premier mot au dernier mot.

Ça risque d’être un peu long… mais l’infini étant l’infini, il finira par le faire…

Parlons maintenant de Chuck Norris. Parmi les choses ordinaires que Chuck Norris a faites, on dit qu’il aurait compté jusqu’à l’infini, deux fois.

On le dit sur Internet, c’est donc que c’est vrai :

http://www.chucknorrisfacts.fr/

On dit aussi que lorsque Chuck Norris va chez Mac Donald, son hamburger est plus beau que celui sur la photo mais, là, j’ai du mal à le croire…

Mais si Chuck Norris a compté jusqu’à l’infini, deux fois, il est certain qu’il a marqué de son emprunte (de pied) l’infini et nous allons tenter, au moyen d’un petit exercice, de le vérifier.

Imaginons que nous ayons à notre disposition une suite de 100 000 000 de lettres. Combien de fois allons-nous voir la séquence CHUCK et combien de fois allons nous voir la séquence NORRIS ?

Pour la semaine prochaine, vous allez rédiger un petit programme SAS qui permet de compter le nombre de CHUCK et le nombre de NORRIS dans une série de 100 000 000 de lettres tirées au hasard. Bien entendu, il ne s’agit pas de construire une table de 100 000 000 de variables contenant tous une lettre, ni de construire une variable d’une longueur égale à 100 000 000 (simplement parce que c’est impossible avec SAS… une variable caractère ne contient au maximum que 32767 caractères…), ni de construire 3052 variables caractères d’une longueur égale à 32767 (3052*32767=100 004 884).

Vous devez au maximum économiser vos ressources (parce que c’est une très bonne habitude à prendre…).

Une dernière chose : vous ne savez pas comment tirer une lettre au hasard parmi les 26 lettres de l’alphabet ? C’est que vous ne connaissez pas la fonction BYTE.

L’argument de cette fonction doit être un chiffre compris entre 0 et 255 et vous renvoie le caractère (normalement ASCII) correspondant dans la table des caractères ASCII (si vous êtes sous Windows).

Voici un petit programme qui vous permet de voir les 256 caractères ASCII :

Code:

data _null_;
   do n=0 to 255;
      caractere=byte(n);
      put "le caractère " n " de la table ASCII est " caractere ;
   end;
run;

Vous constaterez dans votre JOURNAL que les caractères A à Z occupent les positions 65 à 90 dans la table ASCII.

Pour tirer une lettre au hasard, il vous suffit alors de tirer un nombre au hasard entre 65 et 90 :

Code:

Data lettre ;
   lettre=byte(floor(65+26*ranuni(0)));
run ;

Et vous obtenez une lettre… (vous n’avez plus qu’à trouver les 99 999 999 autres).

Sur mon vieux PC (32 bits - Windows XP…), avec SAS 9.3, le programme que je vous proposerai la semaine prochaine s’exécute en 40 secondes… CHUCK est apparu 8 fois et NORRIS qu’une seule fois.

Amusez vous bien…

Ce sujet est maintenant archivé - seuls les utilisateurs inscrits de www.sas-sr.com peuvent consulter l'intégralité du sujet et les programmes qui répondent à la question posée.
pour vous identifier, suivez ce lien
pour vous inscrire, suivez ce lien

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB
Traduction par FluxBB.fr
Flux RSS