Skip to main content

Hey FME'ers,

It's been a while since we had an online challenge, so I thought I would throw out something to test you - especially now that we have FME home licenses available!

If you remember, in a previous challenge I gave some names (Alf, Max, Ben, Ann, etc) and challenged you to find the transformer that they represented. The solution is that Alf is the SpatialFilter (because it is the only transformer containing that name), Max is the RasterBandMinMaxExtractor, and so on.

Type Alf into the FME Workbench Quick Add to prove it:

See? There can be only one!

Well, today I was helping out on transformer documentation and wondered how many transformers in FME could be identified by a unique three-letter string in Quick Add. Not necessarily names, but any three-letter string; for example the Clipper could be "CLI" and the AttributeFileWriter could be AFW (because the search dialog allows Camel-Case entries).

But you can't have "EME" for the ListElementCounter, because it clashes with the FeatureMerger.

Challenge

You can probably guess where this is going...

of 480 transformers that I extracted from FME2017. The challenge is to scan that list and generate as many unique three-letter codes as you can.

Obviously I don't want you to just use your eyes, or spend hours typing combinations into Workbench to see what works. No, I want you to use FME. The challenge is to create a workspace that generates as many combinations as possible.

I don't think it's going to be as hard as I thought at first, but we'll see. I thought there would need to be iteration, but now I'm not so sure.

The winner will be the person who identifies the most unique codes. If you get the full 480 (I seriously doubt it) I'll push for the docs team to add them into the FME documentation, since that might be quite useful.

In the event of a tie I'll make a decision (or ask someone neutral at Safe to). You could try to impress me/us by calculating four-letter codes, five-letter codes, six-letter, etc. In fact, perhaps you could figure out the minimum number of letters to create a full set of unique codes? Or generate a set of mixed 3/4-letter codes? Once you have the basics done, I think these variations should be easy.

Some Rules:

I can only think of one rule: No Python. Or Tcl. Or any other scripting. Just pure FME transformers (you know what I mean). I think I will allow regular expressions... provided you don't just write one very, very long expression to do the whole thing.

Oh, actually, the second rule is just to use the attached list. Don't worry about hub transformers or formats that might come up if you type that string. And this list is the official one, even if I might have included a transformer that is now deprecated or missed a new one.

Prizes:

Knowledge centre reputation for sure. Probably a unique knowledge centre badge. And possibly some FME-branded swag, if I can persuade the marketing team to hand some over.

And obviously you win the admiration of your fellow FME users, which is not to be treated lightly.

So, go for it! You can post your solutions here (others should not cheat by peeking) and be sure to mention the number of unique strings you have identified.

And apologies in advance in case this challenge makes your entire office grind to a halt, or delays a family vacation, because you're all so busy trying to do it!

Regards

Mark

I was thinking about all the different numbers that people have found and decided to review my own Workspace. I found an error that create duplicate values for the same transformer and filtered those out, since it got a count of 2. Solved the problem and I got 734 unique results and 316 transformers that can be called through a unique three letter code.

 

 

As everyone is sharing the Workspaces, I also added my last version.

 

fme-find3letter-options-v002.fmw

 

I'd argue that you are using regex in your analysis, since the StringReplacer is in mode Replace Regular Expression.
I too now get 734 unique codes - but only 122 transformers. What am I doing!? Why did I make this challenge?!

 

Well unless you share, we can't help. ;)

 

 


I too now get 734 unique codes - but only 122 transformers. What am I doing!? Why did I make this challenge?!

 

I analyzed with some ways. "734 unique codes for 316 transformers" seems to be the correct answer. However the number could become slightly different a little depending on the rules about Camel-Case entries.

 


616 unique combinations to find 290 unique transformers

Both the MinimumSpanningCircleReplacer and the AutodeskA360Connector have 9 unique 3 letter combinations

spoiler.jpg

Edit: I missed the CamelCase comment but looks like I was in good company :-)

Including CamelCase

That's a clever way to get your 3 character strings.

 


@Mark2AtSafe, I thought camel-case three-letter should consist of consecutive capital characters or digits after removing every lower case character. It seems to fit to the behavior of the Quick Add in most cases, but it doesn't explain why A0C is also good.

 

 

Good point. I shall check with our developers. It looks like A0C should not work. Perhaps there is a new rule we don't know about!

 

 


Looks like a surprising number of transformers can be uniquely identifed by 2 characters - 58

There's at least one that can be uniquely identified by 1 character...
I'd argue that you are using regex in your analysis, since the StringReplacer is in mode Replace Regular Expression.
I am too - but as long as it's not too extensive (ie it's not doing most of the problem in one step) then I think it's OK.

 


I am too - but as long as it's not too extensive (ie it's not doing most of the problem in one step) then I think it's OK.

 

It's certainly OK, and a good expression. I'm just refering to the statement:

 

"The analysis was done with all unique transformers, except for one, and no ReGex is being used in the analysis."

 

 


I decided to attempt this with no explicit regex expressions.

I also determined 316 unique transformers and 734 codes.

Interestingly enough I got 10 unique combinations for the AutodeskA360Connector (all those that @egomm posted plus AA3.

uniquetransformername.fmwt

 

Yeah, the original 9 I mention was before I added in the CamelCase options
Well unless you share, we can't help. ;)

 

 

Lol (as the kids these days say). I have it now. 122 transformers with one (and only one) unique code, and 194 transformers with multiple unique codes (I was dropping them) makes 316. I must say, when I thought it might mess up people's work days, I didn't think it would include mine!

 


Edit - new answer https://knowledge.safe.com/answers/47549/view.html


Hmmm. I get 7337 three-letter codes, 974 unique codes, and only 123 transformers. I wonder why I have more unique codes than anyone, but way fewer transformers?! I thought I had a really good solution, but shall have to check my workspace. Something seems wrong.

OK, here's the workspace (fmw file attached here):

 

 


There's at least one that can be uniquely identified by 1 character...
I thought you were wrong... but you're right. There is one transformer that can be uniquely identified by a single character only! Who knew?

 

 


I thought you were wrong... but you're right. There is one transformer that can be uniquely identified by a single character only! Who knew?

 

 

Actually can be identified by two different single characters

 

 


Looks like a surprising number of transformers can be uniquely identifed by 2 characters - 58

hmm, I'm only getting 57 transformers with 2 character uniqueness.

 

 

Nevermind, that's 57 that require a minimum of 2 characters to be unique, it's not counting the the transformer that only requires 1.

Given any code length, there are 31,427 unique combinations, however those can only determine 451 transformers. There are 28 transformer that just plain are not unique.

This my minimum uniqueness breakdown chart.

Code LengthNumber of Transformers1125732584865346573819None10311112None132Not Unique28

The total results are transformercodes.csv

And the workspace is mimimumtransformercodes.fmw

 

I just want to go on record as saying subsetting a list without python is not pretty.
hmm, I'm only getting 57 transformers with 2 character uniqueness.

 

 

Nevermind, that's 57 that require a minimum of 2 characters to be unique, it's not counting the the transformer that only requires 1.
57 for 2 letters, 58 if you allow numbers to count as well

 

 


Removed

Have improved on mine slightly, can now choose the length and whether to allow numbers to be counted as characters (715 letter combinations across 310 transformers if excluding numbers)

tripletfinder.fmw


This is great work from everyone. I wish I'd thought of this for the FMEUC hackathon!

Here's some extended info that I created. The string length with the most transformers is 6 characters. There are 433 transformers that can be identified by a six-character string.

Since the shortest transformer (that I can think of) is the six-character Sorter, it means there is no set of fixed-length unique characters that can identify all transformers.

After six-characters the count begins to decline... but not as quickly as you'd expect. For example, there are still 285 transformers that can be identified by a 15-character string!

I made a quick and dirty graph of it:

At 36 characters there is only one transformer. That would be the "CoordinateSystemDescriptionConverter". Unsurprisingly at that point its unique string is the full transformer name!

If anyone hasn't tried the challenge yet, please don't be put off by all the other answers! I'd be interested to see the different ways you achieve a solution (and you'll still earn some extensive reputation points).


This is great work from everyone. I wish I'd thought of this for the FMEUC hackathon!

Here's some extended info that I created. The string length with the most transformers is 6 characters. There are 433 transformers that can be identified by a six-character string.

Since the shortest transformer (that I can think of) is the six-character Sorter, it means there is no set of fixed-length unique characters that can identify all transformers.

After six-characters the count begins to decline... but not as quickly as you'd expect. For example, there are still 285 transformers that can be identified by a 15-character string!

I made a quick and dirty graph of it:

At 36 characters there is only one transformer. That would be the "CoordinateSystemDescriptionConverter". Unsurprisingly at that point its unique string is the full transformer name!

If anyone hasn't tried the challenge yet, please don't be put off by all the other answers! I'd be interested to see the different ways you achieve a solution (and you'll still earn some extensive reputation points).

There is no set (fixed length or otherwise) that can uniquely identify all the transformers, as we have dozens that are entirely within another transformer.

 

 

Snapper ->AnchoredSnapper

 

Generalizer-> SherbendGeneralizer

 

Affiner -> 3DAffiner (Why aren't these consolidated btw?)

 

Aggregator ->Deaggregator

 

Counter -> 6 other transformers

 

Creator -> 10 other transformers

 

etc.

 


 

Clearly my approach was flawed from outset. Need to see how it should be done!

So a late Saturday evening revision because I just couldn't let it go! I re-read some of the comments and realised I wasn't accounting for numeric values in the unique values. But I had read the following:

 

 

"The challenge is to scan that list and generate as many unique three-letter codes as you can."

 

 

Letters not number otherwise it might have said characters ;)

So my revised new total is 735 unique values containing a mix of numbers and letters, for 316 Transformers @Mark2AtSafe


This is great work from everyone. I wish I'd thought of this for the FMEUC hackathon!

Here's some extended info that I created. The string length with the most transformers is 6 characters. There are 433 transformers that can be identified by a six-character string.

Since the shortest transformer (that I can think of) is the six-character Sorter, it means there is no set of fixed-length unique characters that can identify all transformers.

After six-characters the count begins to decline... but not as quickly as you'd expect. For example, there are still 285 transformers that can be identified by a 15-character string!

I made a quick and dirty graph of it:

At 36 characters there is only one transformer. That would be the "CoordinateSystemDescriptionConverter". Unsurprisingly at that point its unique string is the full transformer name!

If anyone hasn't tried the challenge yet, please don't be put off by all the other answers! I'd be interested to see the different ways you achieve a solution (and you'll still earn some extensive reputation points).

I think the Tiler is the shortest transformer at 5.

Ok, first try at one of these challenges.

I get 424 unique three letter codes for all 479 unique transformers in the list using sequential three letter sequences from the transformer names.

Been toying around some more. 361 transformers uniquely identified by a three charactercode (three sequential characters from the transformer name) with a total of 966 unique codes

 

9235-challenge3lettercodesv2.fmw

 

 


Reply