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 created a custom transformer to do that: [2017-07-08 Update: Please see the latest comment]


I get 734 unique values of 316 transformers.


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


Brilliant challenge as always. Definitely ground things to a halt for me, better sacrifice some lunch time.

I ended up with 731 distinct codes for 315 Transformers. Really close to @Endest, so I

 

wonder where we differ.

Attached is my solution as a template file. Biggest issue for me was finding a way to split the string into single characters. Can't tell the AttributeSplitter to split at everything.


According to my analysis, @Mark2AtSafe has the Workspace in his mailbox, their are 673 unique three letter combinations to call a transformer and 293 transformers have the option to be directly called with a three letter code.

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

Great fun to see the many different results. Really curious towards the correct answer.


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.


I created a custom transformer to do that: [2017-07-08 Update: Please see the latest comment]

If you allow Camel-Case entries (e.g. AFW for AttributeFileWriter), set "Yes" to the "Include Three-Letter Acronyms" parameter in the transformer. I got 733 unique three-letter entries for 316 transformers.

 

>2017-07-08: The updated custom transformer detects 734 unique three-letter entries for 316 transformers.]

 

 

 

 


I created a custom transformer to do that: [2017-07-08 Update: Please see the latest comment]

[Addition] This edition allows you to specify the number of characters per entry (2 or more) via a parameter.

 

>2017-07-08 Update: Please see the latest comment]

 


If you allow Camel-Case entries (e.g. AFW for AttributeFileWriter), set "Yes" to the "Include Three-Letter Acronyms" parameter in the transformer. I got 733 unique three-letter entries for 316 transformers.

 

>2017-07-08: The updated custom transformer detects 734 unique three-letter entries for 316 transformers.]

 

 

 

 

 

Hmm, how does CamelCase work for the AutodeskA360Connector?

 

 

Does AA3 work? I don't have 2017

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


 

Hmm, how does CamelCase work for the AutodeskA360Connector?

 

 

Does AA3 work? I don't have 2017
Yes, Quick Add in FME 2017 allows AA3 etc.

 

I noticed that my solution was not perfect. The Quick Add in FME 2017 detects the transformer with "A0C", but my custom transformer won't. However, "A3C", "A6C" don't hit with the Quick Add. I don't know the exact rules for the behavior.

 


Yes, Quick Add in FME 2017 allows AA3 etc.

 

I noticed that my solution was not perfect. The Quick Add in FME 2017 detects the transformer with "A0C", but my custom transformer won't. However, "A3C", "A6C" don't hit with the Quick Add. I don't know the exact rules for the behavior.

 

It looks to me like each number is counted for camel case, because A3C won't work. So AA3, A36, 360, 60C are all good.

 

 


Glad to see so many folk take up the challenge. Reading the comments I think so far we have:

 

 

NameUnique

 

TransformersUnique

 

Codes

 

Endest316734Takashi316Egomm316733JDH316734Mark2AtSafe316734Lars316734Kim

 

315731mark_1spatial291667

 

esietinga reports 424, but I'm not sure if this is unique transformers or unique codes. To be clear, I was looking for the number of transformers that could be given a unique code (but the total number of unique codes is interesting too. I'll check out your solutions soon - but I want to make one of my own first!

 


Glad to see so many folk take up the challenge. Reading the comments I think so far we have:

 

 

NameUnique

 

TransformersUnique

 

Codes

 

Endest316734Takashi316Egomm316733JDH316734Mark2AtSafe316734Lars316734Kim

 

315731mark_1spatial291667

 

esietinga reports 424, but I'm not sure if this is unique transformers or unique codes. To be clear, I was looking for the number of transformers that could be given a unique code (but the total number of unique codes is interesting too. I'll check out your solutions soon - but I want to make one of my own first!

 

I didn't read the question properly the first time 🙂 and have updated my answer...

 

 


Just saw this, i'll take a gander at it during lunch, but is there any particular reason

 

the RasterCellCoercer is listed twice in the list?
Just saw this, i'll take a gander at it during lunch, but is there any particular reason

 

the RasterCellCoercer is listed twice in the list?
So Mark can award a spot prize for the first person to notice?

According to my analysis, @Mark2AtSafe has the Workspace in his mailbox, their are 673 unique three letter combinations to call a transformer and 293 transformers have the option to be directly called with a three letter code.

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

Great fun to see the many different results. Really curious towards the correct answer.

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

 


Yes, Quick Add in FME 2017 allows AA3 etc.

 

I noticed that my solution was not perfect. The Quick Add in FME 2017 detects the transformer with "A0C", but my custom transformer won't. However, "A3C", "A6C" don't hit with the Quick Add. I don't know the exact rules for the behavior.

 

@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.

 

 


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.


Just saw this, i'll take a gander at it during lunch, but is there any particular reason

 

the RasterCellCoercer is listed twice in the list?
Really? Oops! My bad. Didn't notice that one.

 

 


Just saw this, i'll take a gander at it during lunch, but is there any particular reason

 

the RasterCellCoercer is listed twice in the list?
Yes, that's true. My custom transformer outputs the duplicate RasterCellCoercer via the <Rejected> port 😉

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.

Ah the Matcher is not case sensitive. That's problem 1. Problem 2 is that I reject 2DF because it is both a consecutive string and camel-case (therefore a duplicate). Gotta fix those.

 

 


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


I created a custom transformer to do that: [2017-07-08 Update: Please see the latest comment]

Oops, I was wrong. My custom transformer does not consider digit characters as elements of a camel-case entry. There is a mistake in the relevant regular expression. Please modify the implementation properly.

 


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.

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

 


Reply