?

Log in

Previous Entry | Next Entry




Short Description:

I am in need of a C++ programmer to create a quicksort program for a task list.

The program would take a simple list of 200 to 300 items and taking each one seperately, using the quicksort algorithm to ask the user which of the two is the most important (or urgent). When complete, the program would then list the 200 items from the most importanrt (or urgent) to the least important (or urgent).

You would think a program like this would already exist. Trust me. It doesn't.

Longer Description:

My dilemma is that unlike most people I am not time-oriented, but project-oriented. With that in mind, it is not unusual for me to have a list of 200 to 300 projects. Sadly, I do not share your father's knack for prioritization and therefore I need a gimmick to help me as looking at a list of 200-300 projects can put me in a form of paralyzed stasis.

Quite simply, what I'm looking for is a simple program that will allow me to take a list of 200 to 300 projects, compare them one by one answering the question "what is most important\urgent\profitable?", and then using a quicksort come up with an ordered list that is logically ordered from the most important, etc. to the least important.

https://en.wikipedia.org/wiki/Quicksort (there is already code available on that site)

That quite frankly that is all I need. However, if somebody has time and interest, there might be some bells and whistles I would ask them to consider:

  • Allow me to assign groups to each individual project. For instance, my groups personally would be Work, Financial, Personal, Bucket List, Family and a host of others. Assigning groups would allow me to work only on church projects within the church office, and other projects when I am in other circumstances.
  • Allow me to import and export the list to and from Microsoft Word.
  • Allow me to insert projects into the list without the necessity of having to go through the quicksort program again. By the by, the first time one would do a quicksort with 200 to 300 projects it will probably take anywhere from one to two hours.
  • Actually allow me to ask ALL THREE criteria (important\urgent\profitable) and allow me to print out lists with that critieria as well.
  • Even though I am not time oriented, some of the projects I do are and it would be nice to assign a complete by date to some individual projects.


Again, these are what I consider bells and whistles. Whatever anybody can do would be deeply appreciated.

By the bye, I would suggest any volunteer to seriously consider selling this program through some type of shareware program as there is no other to do list on the market that does this.

When I used this type of program for the Macintosh many years ago my level of productivity was dramatic. I hope that having access to similar tool will bring back that level of productivity.

One other favor. I would love to see what the program code looks like. Sending me the code along with the program would be most appreciated.

Any interest?

Comments

( 15 comments — Leave a comment )
vickimfox
Jun. 1st, 2012 02:15 pm (UTC)
Done - Microsoft Excel

Import your list, I'm assuming it is in a text file, into Excel. It will create a row for each line in the text file.

Add a column for priority
Add a column for group
Add a column for status/completion

Then use the sort function to sort the list any way you want. There is also a filter function that will allow you to drop completed projects from the sorted view.

And, Excel plays nicely with Word
literary_equine
Jun. 1st, 2012 02:33 pm (UTC)
Any to do list does the exact same thing. I need the ability to consider two items against each other one at a time without the distraction of a 200 item list.

Sorry. That's the way I'm wired.
vickimfox
Jun. 1st, 2012 03:07 pm (UTC)
Again, not a problem for Excel.
Excel has column autoFilter
http://www.microsoft.com/business/smb/en-ca/smallbiz/products/howto/use-excel-filtering-to-find-data-fast.mspx

Now, you can take your list, click on the autofilter for the urgency column to only display the urgent projects. Then you can fine tune the priority for just those projects. With autoFilter, Excel will hide rows you are not interested in. When done, clear the autoFilter and all the rows will appear again.
tuftears
Jun. 1st, 2012 06:59 pm (UTC)
Or maybe just have a checkbox column for the projects that need to be compared, and filter to checked projects only?
dajagr
Jun. 1st, 2012 03:53 pm (UTC)
Let me put on my programmer hat for a moment, not to volunteer (necessarily), but to make some observations and ask some questions about what you're looking for:
  • It is important to know what platform you need the program to run on. I would assume a Windows machine, but even knowing the flavor of Windows (XP, Vista, 7...) would be useful.
  • Would this need to have a particular form of graphical user interface?
  • Are you wedded to the particulars of C++ and quicksort? There is a variety of sorting algorithms extant, and while quicksort is generically good, a programmer might choose a different algorithm. Similarly, I could see a programmer choosing to use something such as Java for this. (My C++ is quite rusty, but I could possibly hammer something out in Perl, given enough free time. However, Perl would have its own particular limitations to work with, particularly in the interface department.)
  • What sort of input does the program need? I would assume a text file with one item per line, but this is not a given.
  • Are you aware of the scope of what you're asking—not only on the coder's part, but on yours? For a list of 200 items, comparing each pair of items individually will require the program to ask you 200C2 (which is 19,900) questions. For 300 items, this increases to 300C2, or 29,850 questions. That is a lot of questions to answer. You could shortcut this somewhat by making some assumptions, such as "if the user has said that A is lower priority than B, but higher priority than C, then B must be higher priority than C"—however, this may also undermine what you are looking for by never directly comparing B to C. On the other hand, this also avoids having to figure out what to do in the situation where you say that A is higher priority than B, B higher than C, and C higher than A.
I don't mean to undermine your request at all—it does sound like it could be a useful program. But these are some things that potential programmers would need to know before making a decision.
literary_equine
Jun. 2nd, 2012 01:02 pm (UTC)
Thanks for the reality check. These are excellent questions that never entered my mind.

To answer your questions:

1) Windows XP.
2) No. Just the ability to compare two items and check which one is more important (or urgent, etc.)
3) I don't care what language it is written in as long as it gets the job done.
4) I would also assume a text file with one item per line, but the ability to enter data one line at a time into the list could also be an option.
5) You hit the nail on the head as this is the main problem with what I am asking. Running the program takes time and the more data, the longer it takes.

When this ran on my very old Mac, I dedicated an entire day to sorting the list, and then would save it as a text file and as new projects came up, at that time I could easily insert them manually. I would do this every six months.

My productivity went through the roof as I was no longer paralyzed by looking at the list.

Again, thanks for asking some very good questions I had no understanding to ask.
actonrf
Jun. 2nd, 2012 03:56 am (UTC)
I say using c++ would be overkill. I only us see for lo level application like games or device drivers. If I was doing this project I use Visual Basic of C# The problem here You still need to assign criteria to each item for a search to work. Furthermore a quick sort only work on simple and small data structures like an array of names. It cannot do complex searches on record with multiple fields. Finally the problem of adding more records. it going to get slow as each record has to be compared to each record to find were to insert it.
What you need is a database application, the express edition Microsoft Visual development tools come with a version of SQL server to create and manipulate databases.
One can output a search in Word but importing from Word will be much more difficult.

I really need more information. I am a hobbyist C# and VB programmer.
If you try your hand. http://www.microsoft.com/visualstudio/en-us/products/2010-editions/express
literary_equine
Jun. 2nd, 2012 01:03 pm (UTC)
Thanks for the input, but alas, I am no programmer at all.

I'm not really dedicated to any specific computer programming language, just anything that gets the job done.

Nonetheless, thanks for the input.
annvole
Jun. 2nd, 2012 04:16 pm (UTC)
This is exactly what the founder of Facebook did called Facemash where photos of college girls were compared at random, two at a time, and the results were used to grade the list to find the most beautiful and most ugly college girls in the campuses where their "facebooks" were used for the photos. You will need the added element only asking you each combination only once. I want this very program to sort every animated feature film from my favorite to least-liked to study what elements I need to concentrate on to make my own stories the ones that would become my favorite films if made. I figure I can make it using simple HTML commands and maybe a couple lines of javascript. I will see if I can make something for myself in the next couple weeks. I also want to do the facemash concept using animals to do the choosing but the contents of the image being a number of possibilities (other animals, humans, foods, artwork).
annvole
Jun. 2nd, 2012 04:31 pm (UTC)
Just for your information, I created such a list (favorite to least-liked animated features) by assigning a number to each film, sorting that list using a word processing program that was able to sort tab-separated elements on a list. This got the films into groups and I just changed the numbers in groups of 10 (easy to just leave out the second digit so there are ten numbered "1", ten numbered "2") then sorted alphabetically for title and numerically so I could easily spot duplicates. I would then look at those groups of 10 and add a second digit (my list started at 11 for my all-time favorite film "Bambi"). Once done my list, I replaced all the "0[tab]" and "1[tab]"... with [tab] until my list lacked a number field then erased all tabs.
annvole
Jun. 2nd, 2012 04:42 pm (UTC)
sorry for thinking out loud here but I just realized that the system does NOT need to ask every combination. It could first ask every pair randomly (an odd numbered item with an even numbered item) until the list was finished. Then one of the two items already compared is compared with one from a different pair. This would create a tree much like winner and loser team trees in bonspiels (word for curling championships).
annvole
Jun. 3rd, 2012 06:58 am (UTC)
New format proposed: the choice will be between 3 items with two rows of check box options... the lowest and the highest. This makes 3 comparisons with one page and still provides a rather binary set of thinking when choosing the highest of the three and the lowest of the three. The program will also time the responses and assign the gap on an inversely proportional nature (a quick response means the gap is wide and a long response means the items are close to each other in the final list). An unusually long response will assume a distraction and assign an average response time. The 2 pairs of extremes with the middle choice will be used to create a winner and loser list for deciding which combination to ask next. The gap size will help locate the winner and loser items in the respective lists. This means that after the initial survey (each item only used once for this first round of sets of 3), these two lists can be shuffled together and use the known comparisons to decide when to switch lists it is taking the items from as it goes from one extreme to the other. This newly ordered list can then be used as is to do a second survey with some items reserved for later choices if one of the three pairings has already been included in a previous group of three. Because they are already somewhat sorted, the choices will already be closer and the results of choosing more informative in location. It will still need to assess the NEW response time bell curve as this second survey is already closer. This can go on until all possible pairings have been asked but the user may decide the list is close enough by seeing that the three choices are usually in the right order already.
literary_equine
Jun. 4th, 2012 01:11 am (UTC)
Sounds intriguing and very different from what I originally envisioned.
annvole
Jun. 5th, 2012 02:30 pm (UTC)
same here but I was realizing that 2 at a time is like doing math in binary... tedious. When doing my sorting in groups of 10, I would often pick the three favorite and three worst out of the list first then decide among the 3 or 4 of the newly created 3 groups. This made sorting a bit easier as 3 seemed to be the magic number. Sorting was also a matter of some things being obviously close to the top or bottom of the list and were easy and quick to pull them out from the rest. This is where a time-based thing (or alternatively adding a qualifier of how much better or worse the best and worst are) would do much of the work sorting the list. I also just thought of a better way of choosing between the three... three possible changes in order. If the three are in the right order, just go to the next three but otherwise you click a switching option. The only problem is the timing is lost as a single decision accounts for all three pairs.
actonrf
Jun. 8th, 2012 04:38 pm (UTC)
As I think about it the problem is you are putting the cart before the horse; worst you are reinventing the wheel, the sot algorithms already imbedded in any application you want to use. we need to define the application before selecting the right application or algorithm.
With this in mind.

The program would take a simple list of 200 to 300 items and taking each one separately[snip]

We need to define these items

each item I will call a singe line items a recoded. Each record will contain field with the information of each task record.

Next we need to define the criteria for the sort.

fore example

Task Record
Field 1: Task Name
Field 2: Task Date
Field 3: Task Text
Filed 4: Task group
Filed 4: Priority
Now we need to define how to criteria for example sort by group then by name or date.
So you homework assignment is let is know what are we looking for.

Record
field #:
....






Edited at 2012-06-08 04:45 pm (UTC)
( 15 comments — Leave a comment )