Jump to content

2nd LAVA Coding Challenge


i2dx

Recommended Posts

Greetings LAVA members

the coding challenge committee:...

post-584-1150261770.png?width=400

post-584-1150261783.png?width=400

post-584-1150261703.png?width=400

post-584-1150261713.png?width=400

post-584-1150261729.png?width=400

post-584-1150261743.png?width=400

post-584-1150261754.png?width=400

post-584-1150261795.png?width=400

...would like to announce the next LAVA coding challenge.

We are going to change things around for this challenge. Instead of having judges choose a final winner we are going to ask the LAVA members to vote on the final choice.

Review Format:

Here is how the coding challenge format will work.

  • All submissions must meet a set of minimum requirements defined by the committee.
  • Every submission that passes the minimum requirements will be evaluated by the challenge committee and the top 5 will be selected.
  • The top 5 will be posted publiclly to all the LAVA members and a winner will be chosen by popular vote.

Challenge Definition:

The challenge that the committee has selected is called "Mouse Gestures". A mouse gesture is a technique used in a user interface that combines mouse movements and clicks. The software interprets these actions into application commands. Mouse Gestures allow quick access to programmable commands without the need for keyboard strokes or menus. The task of the Mouse Gesture Application Interface (MGAPI) is to return to its calling application the detected gesture string. It does this by tracking the mouse trajectory on the caller's front panel between the mouse down and up events. It translates the trajectory into a series of string characters to be returned to the application.

The string characters are identified as follows;

U for Up

D for Down

R for Right

L for Left,

The 4 diagonal directions are identified by the corresponding numbers on the numeric keypad.

1 for Down Left

3 for Down Right

7 for Up Left

9 for Up Right

For example, if the users presses the Mouse button and draws a "Z" on screen and then releases the button, the MGAPI returns the final string of "R1R".

Note: Mouse Gestures are not about pattern recognition but about mapping the mouse movements to a simple set of string characters. Install the Firefox Mouse Gestures extension to see it at work.

Challenge Framwork:

The Mouse Gestures challenge will consist of two parts a technical part and a creative part.

1:MGAPI:(MG Test vi)

The first part will be to create a MGAPI and place it inside a Test VI supplied by the committee. This will give the committee a standard platform to test all submissions fairly. The committee will use the test VI along with other tools to evaluate the MGAPI to the following criteria.

  • Ease of portability,
  • Performance,
  • Scalability and Adjustability,
  • Coding Style

Download File:post-584-1150435290.zip

2:Application of MGAPI(MG Application vi)

The second or creative part will be to build a LabVIEW application that makes the best use of the MGAPI. This could be anything that you can think of as long as it uses the same MGAPI as was used in the test vi. Remember you are trying to impress your LAVA peers so the cooler the better.

Both the MGAPI and final application will be evaluated by the committee when selecting the top 5.

Minimum Requirements:

For the Mouse Gesture challenge, the minimum requirements are as follows:

  • The MGAPI must intercept mouse movements from the calling vi's front panel between mouse down and mouse up.
  • The MGAPI must produce two string outputs that use the 8 direction string characters UDLR1379.
  • The First string indicator Labeled (MG Process) will display the direction characters as they occur in process or while the mouse button is pressed.
  • The Second string indicator Labeled (MG Final) will remain empty until the mouse button is released and then display the final character string.
    Example:
    Referring to the Z example, when the mouse button is pressed both the (MG Process) and (MG Final) will display an empty string. After the first detected motion (MG Process) would display a "R" then a "R1" after the second and a "R1R" after the third.
    When the mouse button is released (MG Final) will then display "R1R".
  • Standard LabView Coding Challenge rules apply.

    All coding must be done in LabVIEW (any version is acceptable).

    No external code, DLLs, CINs, exes, ActiveX, .NET, etc

    DLL's or libraries that are part of the core
    LV
    are allowed.

    OpenG code is allowed. Please include this code in the ZIP file.


  • The same MGAPI code from the MG Test vi must also be use in the MG Application vi.

Considerations:

These Items although not mandatory should be considered when developing the MGAPI

  • Minimum segment length
  • Angle tolerance
  • Timeout when mouse is idle.

Prize:

post-2-1150393383.jpg?width=400

The Winner will receive a NI USB-6008 Multifunction I/O worth $159.

Submissions:

The deadline for all submissions is Aug-20-2006.

The final submission should consist of a ZIP file containing the two main vis (MG Test vi and MG Application vi) along with all of the support files and VI's. Warning, ONLY ZIP files will be acceptable as attachments.

Please e-mail the final ZIP file to: codingchallenge@lavag.org. Multiple submissions are acceptable.

In the subject of the email please write MG Challenge followed by your LAVA user name.

Example: MG Challenge joe_user

Please Do not post submissions to this thread. Please use a valid email address that you check often so we can contact you for possible missing VI's or questions.

You CAN post questions to this thread.

Finally, My thanks to the committee for all there past, present and future help.

mballa

Link to comment
  • 2 weeks later...

Great challenge, and I'm happy to say that I've completed the basic part of my API and am thinking of some cool apps, but I do have a couple of questions.

1. The challenge states that my application HAS to use the same API as the test VI. This strikes me as very limited. I would much rather extend my API and use more powerful features in my application. Is this not a possiblity?

2. Both dynamic events and the mouse input VIs were not available in 6.1, so obviously there's no way to make it really portable in 6.1 without writing some external code (which is not allowed by the rules :nono: :laugh: ). Did you include the 6.1 template on purpose or was that just an oversight?

Link to comment
Great challenge, and I'm happy to say that I've completed the basic part of my API and am thinking of some cool apps

That's what we like to hear - glad that it's stimulating your mind :)

The challenge states that my application HAS to use the same API as the test VI.

The reason we chose a simgle API for all entries is that of a level playing field - as you can see from the announcement positing, there are a number of judges involved in selecting the final five, and we felt that placing this limit on entries allows us all to have a baseline - a frame of reference - to assess your entries on. For your entry to be valid, it must work with the template API, although once this is all over and the winners announced, by all means: go nuts! You might even find someone else's submission better than yours, which will give you an even better platform to create a new version from.

Both dynamic events and the mouse input VIs were not available in 6.1, so obviously there's no way to make it really portable in 6.1 without writing some external code.

Although using the event structure and mouse input VIs are native to versions above 6.1, there may be methods that you can use to complete the tasks with 6.1 (I'm not saying there are, nor am I saying there aren't ;) ). There are still plenty of people out there that are still using 6.1 (it is a pretty stable and functional version), and we didn't want to exclude those folks from entering the challenge.

Link to comment
...we felt that placing this limit on entries allows us all to have a baseline - a frame of reference - to assess your entries on. For your entry to be valid, it must work with the template API...
Does that mean that the only way for me to output the results to my application (not to the test VI) is through those 2 strings? Can't I use anything else?

I suppose I could output those strings to a mediator and use that to generate what I want, but that seems rather ridiculous. I would really rather add more options into my interface now (while still keeping the stings, of course) because I haven't managed to find an application where this will really be useful yet and I don't know if I'll use this after the challenge.

Link to comment
Great challenge,

Thank you.

1. The challenge states that my application HAS to use the same API as the test VI. This strikes me as very limited. I would much rather extend my API and use more powerful features in my application. Is this not a possiblity?

One of The reasons why we want the same API used in the test vi as in the application is to help show Ease of portability. One of the attributes that we feel makes a good API is how easy it is to insert into another application. Adding additional functionality beyond the requirements is fine but the API as a whole should be transportable to other applications.

2. Both dynamic events and the mouse input VIs were not available in 6.1, so obviously there's no way to make it really portable in 6.1 without writing some external code (which is not allowed by the rules :nono: :laugh: ). Did you include the 6.1 template on purpose or was that just an oversight?

We wanted to let anyone with version 6.1 or greater be able to participate if they wished. A submission written in any of these Version is acceptable.

Does that mean that the only way for me to output the results to my application (not to the test VI) is through those 2 strings? Can't I use anything else?
I suppose I could output those strings to a mediator and use that to generate what I want, but that seems rather ridiculous. I would really rather add more options into my interface now (while still keeping the stings, of course)

The strings are to insure a minimum requirement and give the committee a standard interface to use for testing. They do not have to define the Functionality of the API. It is not required that the string outputs be the only way that the API transmits it's information. The string outputs must be a part of the API.

Link to comment
The strings are to insure a minimum requirement and give the committee a standard interface to use for testing. They do not have to define the Functionality of the API. It is not required that the string outputs be the only way that the API transmits it's information. The string outputs must be a part of the API.
That's what I wanted to hear. Thanks.

P.S. I missed some words in my reference to 6.1 - I meant to say that there is no way to make it truly independent from the calling VI and portable without writing external code and compiling it for every target (at least none that I could think of, which isn't to say that there isn't).

Link to comment
  • 4 weeks later...
what do you mean by "Timeout when mouse is idle" :question:

the timeout will stop the mouse tracking by starting the application VI or it will clear it and restart the registration :question:

Since this isn't a mandatory requirement, that would be up to you. The way I understand it (or at least what I thought before I read that line) is how long does the cursor have to stay in one place before you stop calculating a movement.
Link to comment
  • 4 weeks later...
When the mouse button is released (MG Final) will then display "R1R".

I assume that MG Final indicator displays empty string in the very next loop after the mouse button is released. Is that right? Or MG Final should keep displaying the "R1R" in the following loops?

Zen

Link to comment
I assume that MG Final indicator displays empty string in the very next loop after the mouse button is released. Is that right? Or MG Final should keep displaying the "R1R" in the following loops?

Zen

MG Final should retain the last MG sequence ("R1R") until the mouse button is pressed again.

Link to comment

Hi Folks,

Thanks for the challenge! (you've lured me away from the NI LV Forum)

Any way, it seems obvious (now :headbang: ) that the VI is supposed to execute immediately, but as it's not explicitly stated anywhere, I thought I'd ask!(?)

I'm about to trash a VI that was designed to return a completed "Final" string - wouldn't terminate until a mouse-up or mouse-leave (or caller "Stop"). But the requirement as to the empty-state of Final, while mouse is down, implies that our VI executes immediately, so it seems our VI shouldn't wait for mouse events...

Thanks!

Link to comment
How about sending confirmation emails or publishing the names and dates of the submitted entries so that we know that our submissions got through alright (or didn't)?

all submissions are collected by mark ("mballa") and posted in a forum, which is not public. I do not assume that mark holds back any submissions ;) , so I can state that - if you did not get email yet, that your submission does not meet the minimum requirements - your submission is in the reviewing process and - if it's among the top 5 - put on the list for the public election

Link to comment
...I can state that - if you did not get email yet, that your submission does not meet the minimum requirements - your submission is in the reviewing process...
What I actually wanted was a confirmation that my submission was received, not that it was among the top 5. It also wouldn't hurt to know whether the entry meets the minimum requirements, so that it could be fixed.

In any case, this quote is unclear. I didn't receive an email, so does that mean that my submission does not meet the requirements or that it is in the reviewing process? :blink:

Link to comment
What I actually wanted was a confirmation that my submission was received, not that it was among the top 5. It also wouldn't hurt to know whether the entry meets the minimum requirements, so that it could be fixed.

In any case, this quote is unclear. I didn't receive an email, so does that mean that my submission does not meet the requirements or that it is in the reviewing process? :blink:

it is in the reviewing process, your submission did meet the minimum requirements.

until now we olny informed those who did NOT meet the minimum requirements, maybe we should change that? mark, michael? what's your oppinion?

Link to comment

OK, I understand the structure of your sentence now. Thanks. :)

In general, I think that ambiguity is bad. Think about this from the user's point of view. You send an email with your code and then nothing happens. Does this mean that your code is OK? Does it mean that it wasn't accepted? Maybe the server crashed and your message was simply lost? Or maybe the person in charge is just out in the field for a few days and no one saw your message?

That's why I think it would be best to do something like this - when someone sends a submission they get a reply within a day or so telling them that their submission was received, that it can be opened without a problem (or not) and that it conforms to the minimum requirements. Of course, this can be split into several emails, depending on the time it takes to review such submissions, but the point is the user will know what state their submission is in and if they get no reply at all within 2 to 3 days they can assume that there was a problem in the reception of their submission.

Link to comment
What I actually wanted was a confirmation that my submission was received, not that it was among the top 5. It also wouldn't hurt to know whether the entry meets the minimum requirements, so that it could be fixed.

In any case, this quote is unclear. I didn't receive an email, so does that mean that my submission does not meet the requirements or that it is in the reviewing process? :blink:

As you requested I have emailed all particitants stating the committee has received their submissions.

We will put this on our list of "Things to do better next time."

If anyone who submitted a MG Codding challenge did not get a reponce email please PM me to discuss.

mballa

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.