Page 1 of 1

Tour de Magie n°01 en Python

Unread postPosted: 03 Jan 2020, 10:15
by cent20
Parce qu'il n'y a pas que les hommes politiques qui sont capable de prestidigitation, je vous propose un petit script en python qui fait un tour de magie, certes très connu, mais qui fait quand même son effet ...

Code: Select all
# https://nsi.xyz Vincent ROBERT aka cent20

# Livre des Ombres
grimoire = ["1. Pense à un nombre.", "2. Double ce nombre", "3. Ajoute 10", "4. Divise par 2", "5. Retranche le nombre du\n   départ", "6. Le résultat de ton calcul"]
manuscrit = ["Ne me dit rien,", "je ne veux rien savoir, mais","je vais lire tes pensées", "par ce que je lis en toi", "comme dans un livre ouvert", "" ]
medium = ["Je suis un algorithme doté", "d'un don magique et je vais"," deviner ce que tu penses !", "Es-tu prêt ?"]
chaman = "cent20"
runes = "Tour de magie n°01 par "+chaman

# Incantation magique
ouvrir, sommaire, memoire = range, len, len
apparition = boniment = print
incantation, baguette, talisman  = input, chr, int

def chapeau():
  global runes
  illusion = 0 # Pour l'instant aucune magie !
  while illusion < talisman(runes[-2]):
    illusion+=1
    lapin=foulard=illusion
  for illusion in range(42,120,talisman(chaman[4])**4):
    lapin+=1
  return lapin**foulard+foulard+foulard
  # Beaucoup de lapin et de foulard pour un seul chapeau !

def magie(couleur):
  # Magie blanche ou noire ?
  apparition("\n"+"\n"*9*(couleur=="blanche")+"-"*27*(couleur=="noire")+"\n")

def pentacle():
  # Nécessaire pour un bon tour de magie
  for souvenir in ouvrir(memoire(medium)-1):
    apparition(medium[souvenir])
  magie("noire")
  boniment(medium[souvenir+1])

def sorcellerie():
  # Diablerie ! Que fait ce code !
  magie("blanche")
  apparition(runes)
  magie("noire")
  pentacle()
  incantation()   
  for page in ouvrir(sommaire(grimoire)):
    magie("blanche")
    apparition(grimoire[page])
    if page != memoire(chaman)-1 :
        magie("noire")
        boniment(manuscrit[page])
    incantation()
  detournement()
  magie("noire")

def detournement():
  # Que se cache t'il dans la boîte ?
  magie("noire")
  apparition("est : \t",baguette(chapeau()))
  #  Toi aussi, deviens théurge ! 

sorcellerie()


Vous pouvez le tester ici : https://workshop.numworks.com/python/cent20/magie01

Fait extraordinaire, ce script arrive à tourner sur une Numworks avec la ROM Stock, c'est à dire en dépit d'une mémoire d'éxécution des scripts python ridiculement faible. Et faire tourner un script python sur une numworks, c'est déjà en soit un sacré tour de magie !

Soutenez la demande pour obtenir 32kB pour le tas python
en approuvant cette demande : https://github.com/numworks/epsilon/pull/1064
> Il suffit de cliquer sur les différentes émoticônes sous le message de debrouxl .
Le pouce pour soutenir, le coeur parce que vous aimez, et la fusée car il faut que ça avance vite !

Bonne année à tous !

Re: Tour de Magie n°01 en Python

Unread postPosted: 03 Jan 2020, 10:35
by Larwive
L'explication du tour de magie est cryptée ici, mais je ne vous dirai pas de quelle manière :
PLFQK IBKLJ YOBAB ABMXO QKLKZ ELFPF QIBKL JYOBA BABMX OQKMI RPKLK IBALR YIBKM IRPKM IRPAF ULKXG LRQBA FULKA FSFPB MXOAB RULKO BQOXK ZEBIB KLJYO BABAB MXOQ
À vous de le décrypter !

J'ai un autre tour de magie ici : archives_voir.php?id=2510854

Re: Tour de Magie n°01 en Python

Unread postPosted: 03 Jan 2020, 12:42
by Bisam
Franchement, j'adore ce script ! Une obfuscation parfaitement lisible, cela relève de la magie !
Certains trucs pourraient être simplifiés en utilisant la magie de Python lui-même... mais est-ce vraiment important ?
Par exemple, on pourrait écrire :
Code: Select all
for page in grimoire:
    magie("blanche")
    apparition(page)

Re: Tour de Magie n°01 en Python

Unread postPosted: 03 Jan 2020, 14:03
by cent20
Bisam wrote:Franchement, j'adore ce script ! Une obfuscation parfaitement lisible, cela relève de la magie !
Certains trucs pourraient être simplifiés en utilisant la magie de Python lui-même... mais est-ce vraiment important ?
Par exemple, on pourrait écrire :
Code: Select all
for page in grimoire:
    magie("blanche")
    apparition(page)


J'adore ! :favorite: :favorite: :favorite:

Je ne connais python que depuis Juin dernier, je suis preneur de toutes les bonnes astuces.
Le seul soucis c'est que du coup
Code: Select all
if page !=
risque de ne plus marcher vu que page n'est plus un nombre ...

Re: Tour de Magie n°01 en Python

Unread postPosted: 03 Jan 2020, 16:16
by cent20
LePetitMage wrote:L'explication du tour de magie est cryptée ici, mais je ne vous dirai pas de quelle manière :
PLFQK IBKLJ YOBAB ABMXO QKLKZ ELFPF QIBKL JYOBA BABMX OQKMI RPKLK IBALR YIBKM IRPKM IRPAF ULKXG LRQBA FULKA FSFPB MXOAB RULKO BQOXK ZEBIB KLJYO BABAB MXOQ
À vous de le décrypter !

J'ai un autre tour de magie ici : archives_voir.php?id=2510854


:D

Il ne faut jamais dévoiler les tours de magie d'un magicien, ou alors en faisant soit même un tour de magie !

Je vais en coder d'autre mais il me faut du temps, j'ai deux projets magique compatibles numworks sur le feu. Pour l'instant, je retourne sur mon cours "Interaction client-serveur".

Re: Tour de Magie n°01 en Python

Unread postPosted: 03 Jan 2020, 18:31
by Extra44
cent20 wrote:
Bisam wrote:Franchement, j'adore ce script ! Une obfuscation parfaitement lisible, cela relève de la magie !
Certains trucs pourraient être simplifiés en utilisant la magie de Python lui-même... mais est-ce vraiment important ?
Par exemple, on pourrait écrire :
Code: Select all
for page in grimoire:
    magie("blanche")
    apparition(page)


J'adore ! :favorite: :favorite: :favorite:

Je ne connais python que depuis Juin dernier, je suis preneur de toutes les bonnes astuces.
Le seul soucis c'est que du coup
Code: Select all
if page !=
risque de ne plus marcher vu que page n'est plus un nombre ...

C'est vrai que pour un programmeur...c'est marrant ton code !! :favorite:

Pour ta page qui n'est plus un nombre tu n'as qu'à créer une fonction dernierepage() qui te renvoie la page demandée et donc a faire
If page !=dernierepage() ....
Bon reste ptet a adapter le nom de la fonction ( avec/sans paramètre?)