Fragments (2)

20 novembre 2018

On définit grossièrement la persistence multiplicative par le nombre de fois qu’on peut multiplier les chiffres d’un nombre entre eux jusqu’à ce que le résultat ne comporte qu’un seul chiffre.

Par exemple:

679 ->  6 * 7 * 9 = 378
378 ->  3 * 7 * 8 = 168
168 ->  1 * 6 * 8 = 48
48 ->  4 * 8 = 32
32 ->  3 * 2 = 6

On dira donc que le nombre 679 a une persistence multiplicative de 5.

Le code Pharo ci-bas sert à trouver la persistence multiplicative d’un nombre.

| persistence residu |

"Trouver la persistence multiplicative du nombre 277777788888899"
residu := 277777788888899.

persistence := 0.
[ residu > 9 ]
    whileTrue: [ residu := residu printString 
                               inject: 1 
                               into: [ :mul :each | mul * each digitValue ].
                 persistence := persistence + 1 ].
persistence inspect

Pour des méthodes plus performantes, il y a cet excellent papier (en anglais) qui explique quelques astuces et également celui-ci en français..

 


Fragments (1)

20 novembre 2018

Cliquez sur l’image pour agrandir

Enthousiasmé par cette idée géniale (Pharo Script of the Day), fournir des scripts simples pour montrer rapidement certains aspects de Pharo Smalltalk, j’ai décidé de reprendre l’idée et de, moi aussi, vous offrir quelques fragments de code Smalltalk.

Voici donc le premier de ces scripts, fragments de code.

Une idée toute simple qui vous permet d’itérer sur les éléments d’une collection avec une probabilité d’évaluer le block fourni.  C’est particulièrement utile si vous avez à écrire du code de simulation!

Vous n’avez qu’à implémenter la méthode qui suit dans la classe SequenceableCollection.


sometimes: aNumber do: aBlock 
	| rng |
	
	(aNumber between: 0 and: 1) 
            ifFalse: [self error: 'Argument <aNumber> must be between 0 and 1!'].
	rng := Random new.
	self do: [:each | (rng next < aNumber) ifTrue: [aBlock value: each]] 


 

 


What FP can learn from Smalltalk

20 novembre 2018

Pour ceux qui n’ont absolument aucune idée de la puissance et de la flexibilité phénoménales de Smalltalk (Pharo dans ce cas-ci), cette présentation, What FP can learn from Smalltalk, est pour vous!


Pharo Script of the Day

19 novembre 2018

Pharo Script of the Day sur le blogue de Hernán Morales Durand est une délicieuse série qui propose, quasi quotidiennement, un petit script montrant les étonnantes possibilités de Pharo!


Smalltalk en vrac (30)

27 septembre 2018

Les plus récents trucs qui m’intéressent en Smalltalk :


Guido van Rossum

27 juillet 2018

Il y a 27 ans, Python naissait…

Une excellente entrevue avec son créateur ici.


#printString vs #displayString

20 avril 2018

#printString ou #displayString ? C’est une des plus vieilles interrogations en Smalltalk!

Lequel utiliser?  Quand l’utiliser?  Comment l’implémenter? Un intéressant point de vue développé ici.