Le 11/11/16 à 01:09, Ben Coman a écrit :
First I've heard of an isogram. Wikipedia [1] is ambiguous. Are you
considering only single occurrence of letters, or also equal
occurrence of letters.
I like Sven's answer best, but just as an exercise I thought of an alternative.
String>>#isIsogram
| letters |
letters := Dictionary new.
self do: [ :x | letters at: x ifAbsent: [] ifPresent: [ ^false ].
Yes I did that one too and I was surprised because it was as slow as the
bag implementation.
On Fri, Nov 11, 2016 at 6:19 AM, Sven Van Caekenberghe <s...@stfx.eu> wrote:
you're right, should probably be case insensitive.
Or maybe that is overly restrictive. A case sensitive #isogram would
have the flexibility to used both ways...
'Pharop' isogram
'Pharop' asLowercase isogram
Now a philosophical question (not that its practical to change anything),
but intuitively I tried using #lowercase before searching and finding
#asLowercase,
so I am wondering...
I feel #asXXX methods are there to change the 'type' of an object,
while #asLowercase isn't changing the type, but returning a
transformation much like...
'Pharop' sorted
We don't say 'Pharop' asSorted
cheers -ben
On 10 Nov 2016, at 23:14, Cyril Ferlicot D. <cyril.ferli...@gmail.com> wrote:
Le 10/11/2016 à 23:09, Sven Van Caekenberghe a écrit :
[ :string | string size = string asSet size ] value: 'Pharo'.
true
[ :string | string size = string asSet size ] value: 'Pharoo'.
false
String>>#isIsogram
^ self size = self asSet size
?
'Pharop' size = 'Pharop' asSet size
true
Does it count? If upper-case counts you will need to do `^ self size =
self asLowercase asSet size` :)