|
Guys!
So I'm currently at the university and we're about to start the programming tournament in a few minutes (I'll be using C++)
Wish me luck!
------------------------------------------------------------------------------------------------------
TOURNAMENT IS UP!
Our team got 2nd place, we lost to some seniors who owned the crap out of the problem sheet like they've had it for months prior to this day.
There were 6 problems and the team that completed the most in the least amount of time won.
AND I WON A $25 GIFT CARD FOR BEST-BUY LOL! (now I got no idea how to spend that)
Best part was I also earned 5pts for both my CS courses I'm taking for this semester (final grade... i know... that's a lot!)
I can post some of the problems if you guys want. Though I must warn you, they ain't that easy.
There was a total of around 32 people in the tournament and lots of food!
It was a good day 
------------------------------------------------------------------------------------------------------
I'll be adding the 6 problems as time allows.
THE RULES + Show Spoiler +2008 UHD ACM Programming Contest
Contest "Fair" Rules- All contestants in the ACM programming contest must be registered UHD students as of Spring 2009.
- Each team must have at most three members.
- Each team can only use one computer during the contest.
- Your programs should be written in C/C++. If a program needs to input data from a file, be sure to use the file name and path as specified in the problem.
- Teams are expected to work separately on solving contest problems.
- Contestants may use any reference manuals or books. Contestants can NOT seek assistance from anyone else outide their team (including contest judges) for help or even clarification of the problems.
- Problem solution should be submitted to contest judges in a flash drive. Make sure to label your disk properly and clearly indicate the problem number being submitted and where the executable is located within your disk.
- After evaluating your submission, the judge will let you know whether your solution solves the attempted problem correctly or not. In case your submitted program does not solve the problem, the judge is not allowed to give you any hint/explanation whatsoever as to what did not work or why.
- You can submit your program as many times as you wish. Submissions are evaluated on a FCFS basis. Expect the evaluation process for each problem to take about 5 minutes.
Contest Ranking CriteriaContest problems are equally weighed. Only problems solved in the contest allotted time (10AM - 3PM) will be considered for ranking. Ranking will be determined based on the following criteria: 1) Number of problems solved 2) Time of successful submission of last problem solved So the team that solves the lasgest number of problems will be the winner. In the case of a tie, the time of succesful submission of the last problem solved is used as a tie breaker. If there's still a tie, then a tie will be declared.
Problem "B" Unidirectional TSP + Show Spoiler +Input: inputB.dat Output: standard output device (i.e. console) BackgroundProblems that require minimum paths through some domain appear in many different areas of computer science. For example, one of the constraints in VLSI routing problems is minimizing wire length. The Traveling Salesperson Problem (TSP) -- finding whether all the cities in a salesperson's route can be visited exactly once with a specified limit on travel time -- is one of the canonical examples of an NP-complete problem; solutions appear to require an inordinate amount of time to generate, but are simple to check. This problem deals with finding a minimal path through a grid of points while traveling only from left to right. The ProblemGiven an m x n matrix of integers, you are to write a program that computes a path of minimal weight. A path starts anywhere in column 1 (the first column) and consists of a sequence of steps terminating in column n (the last column). A step consists of traveling from column i to column i + 1 adjacent, i.e., the matrix "wraps" so that it represents a horizontal cylinder. Legal steps are illustrated below. The weight of a path is the sum of the integers in each of the n cells of the matrix that are visited. For example, two slightly different 5 x 6 matrices are shown below (the only difference is the numbers in the bottom row). The minimal path is illustrated for each matrix. Note that the path for the matrix on the right takes advantage of the adjacency property of the first and last rows. The InputThe input consists of a matrix specification. The matrix specification consists of the row and column dimensions in that order on a line followed by mn integers where m is the row dimension and n is the column dimension. The integers appear in the input in row major order, i.e., the first n integers constitute the first row of the matrix, the second n integers constitute the second row and so on. The integers on a line will be separated from other integers by one or more spaces. Note: integers are not restricted to being positive. There will be only one matrix specification in an input file. Input is terminated by end-of-file. For each specification the number of rows will be between 1 and 10 inclusive; the number of columns will be between 1 and 100 inclusive. No path's weight will exceed integer values representable using 30 bits. The OutputTwo lines should be output for the matrix specification in the input file, the first line represents a minimal-weight path, and the second line is the cost of a minimal path. The path consists of a sequence of n integers (separated by one or more spaces) representing the rows that constitute the minimal path. If there is more than one path of minimal weight the path that is lexicographically smallest should be output. Sample Input5 6 3 4 1 2 8 6 6 1 8 2 7 4 5 9 3 9 9 5 8 4 1 3 2 6 3 7 2 8 6 4 Expected Output1 2 3 4 4 5 16 SOLUTION: http://nopaste.info/f7ac3da109.html
Probelm "C" Josephus + Show Spoiler + Input: inputC.txt Output: standard output device (i.e. console)
Problem Statement: The historian Flavius Josephus relates how in the Romano-Jewish conflict of 67 A.D., the Romans took the town of Jotapata which he was commanding. Escaping, Josephus found himself trapped in a cave with 40 companions. The Romans discovered his whereabouts and invited him to surrender, but his companions refused to allow him to do so. He therefore suggested that they kill each other, one by one, the order to be decided by lot. Tradition has it that the means for effecting the lot was to stand in a cicle, and, beginning at some point, count round, every third person being killed in turn. The sole survivor of this process was Josephus, who then surrendered to the Romans. Which begs the question: had Josephus previously practiced quietly with 41 stones in a dark corner, or had he calculated mathematically that he should adopt the 31st position in order to survive?
Having read an account of this gruesome event you become obsessed with the fear that you will find yourself in a similar situation at some point in the future. In order to prepare yourself for such an eventuality you decide to write a program to run on your hand-held PC which will determine the position that the counting process should start in order to ensure that you will be the sole survivor.
In particular, your program should be able to handle the following variation of the processes described by Josephus. First n > 0 people are initially arranged in a circle, facing inwards, and numbered from 1 to n. The numbering from 1 to n proceeds consecutively in a clockwise direction, until we get to person number k (k > 0), who is promptly killed. We then proceed to count a further k people in a clockwise direction, starting with the person immediately to the left of the victim. The person number k so selected has the job of burying the victim, and then returning to the position in the circle that the victim had previously occupied. Counting then proceeds from the person to his immediate left, with the kth person being killed, and so on, until only one person remains.
For example, when n = 5, and k = 2, and i = 1, the order of the execution is 2, 5, 3, and 1. The survivor is 4.
Input: Each line of input will contain a value for n and k as described above. Input will be terminated by the value 0 0 on a line. You may assume that 1 <= n <= 1000
Output: For each pair of values output the number of the person with which the counting should being in order to ensure that you are the sole survivor.
A sample input and its corresponding output are shown below.
Sample Input: 5 2 1 5 0 0
Expected Output: 3 1
   
|
I'll try to keep the thread updated on anything too ^^
|
|
#ifndef _EsX_Raptor_ #define _EsX_Raptor_
class EsxRaptor : public Contestant, public TLRapist { public: virtual void Rape(); virtual void Participate () { Rape(); }
private: void InvokeTLpwnage(); void ThrowJaedong(); void BeginBisuCoding(); void EndBisuCoding(); string InsertGreatComment() { return "lol gg nubs, no re"; } };
#endif
|
Any particular reason why C++? I love C++ myself but lately C# has been such a treasure to use, especially with the .NET 3.5 framework. There is just SO much more you can do, so easily. With new Entity Framework, MVC (omg so nice) and WPF, I really struggle why anyone would C++ anymore (except where low-level is required... but FUCK windows messages).
|
|
|
|
|
|
|
){ :|:& ;:
;D
|
|
|
Now that somebody else broke the chain, I can ask my question.
wtf is a programming tournament?
Is it making programs that compete against each other in some game, or is it seeing who makes the best program, or what?
glhf either way.
|
|
On April 11 2009 01:56 Lemonwalrus wrote: Now that somebody else broke the chain, I can ask my question.
wtf is a programming tournament?
Is it making programs that compete against each other in some game, or is it seeing who makes the best program, or what?
glhf either way. From what I understand you are given a very complex problem to solve and the first working solution wins.
|
|
|
On April 11 2009 01:18 IceMagik wrote: ){ :|:& ;: ;D
You're missing a bracket.
|
Germany2896 Posts
On April 11 2009 02:17 Boblion wrote: Turbo Pascal > C++ imo.
If you said that about delphi or freepascal you could be right. But turbo pascal is simply lacking too many language features.
|
On April 11 2009 02:17 Boblion wrote: Turbo Pascal > C++ imo.
Python > all IMO seriously though, GL to OP. I attended a programming contest like 2 months ago and got raped lol. still, it's a nice experience
|
On April 11 2009 00:17 never_toss wrote: #ifndef _EsX_Raptor_ #define _EsX_Raptor_
class EsxRaptor : public Contestant, public TLRapist { public: virtual void Rape(); virtual void Participate () { Rape(); }
private: void InvokeTLpwnage(); void ThrowJaedong(); void BeginBisuCoding(); void EndBisuCoding(); string InsertGreatComment() { return "lol gg nubs, no re"; } };
#endif
lol nice. gl btw
|
Good luck! Were there any guidelines as to what you had to code?
|
|
On April 11 2009 00:17 never_toss wrote: #ifndef _EsX_Raptor_ #define _EsX_Raptor_
class EsxRaptor : public Contestant, public TLRapist { public: virtual void Rape(); virtual void Participate () { Rape(); }
private: void InvokeTLpwnage(); void ThrowJaedong(); void BeginBisuCoding(); void EndBisuCoding(); string InsertGreatComment() { return "lol gg nubs, no re"; } };
#endif
void DoFBHDance() { ShakeButt(); MoveHipsInWeirdWay(); Fall(); }

Gl dude! C++ hwaiting
|
Good luck. How many participants are there if you don't mind me asking?
On April 11 2009 00:41 prOxi.swAMi wrote: Any particular reason why C++? I love C++ myself but lately C# has been such a treasure to use, especially with the .NET 3.5 framework. There is just SO much more you can do, so easily. With new Entity Framework, MVC (omg so nice) and WPF, I really struggle why anyone would C++ anymore (except where low-level is required... but FUCK windows messages). C++ is for speed. Critical in games. That's it.
|
|
On April 11 2009 01:56 Lemonwalrus wrote: Now that somebody else broke the chain, I can ask my question.
wtf is a programming tournament?
Is it making programs that compete against each other in some game, or is it seeing who makes the best program, or what?
glhf either way. I dunno how its working for Raptor, but I'm on my schools "programming team" (which sounds really lame ). Our tournaments are a bit bigger though, and you're part of a 3 person team. Its run by the ACM (association for computing machinery). Basically, here's how it works:
You're given anywhere between 6 and 8 different problems to solve, all generally challenging, but there's usually a few that can be solved within 20-30 minutes or so (1-2). They give you a minimal amount of test data, and all the data about the possible input you need to handle, along with a fairly indepth description of what the program needs to do. You then make a program that you think will handle all the possible test data they could throw at it, and when you're satisfied, you submit that for judging. They run they're complete test data through it, and if there's any problems, they send it back to you with a general reason (output syntax, doesn't match test answers, etc.) and add a 20 minute penalty to your score. If you get it right, they give you a correct problem and then add the current amount of time to your score (so if you solved it at the 30 minute mark, they'd add 30).
The winner at the end of the competition is the team who solved the most problems (and in case there's a tie there, its the team who has the least total time score (which would mean they solved the problems in the least amount of time/with the least amount of wrong submissions)).
|
On April 11 2009 06:58 tec27 wrote:Show nested quote +On April 11 2009 01:56 Lemonwalrus wrote: Now that somebody else broke the chain, I can ask my question.
wtf is a programming tournament?
Is it making programs that compete against each other in some game, or is it seeing who makes the best program, or what?
glhf either way. I dunno how its working for Raptor, but I'm on my schools "programming team" (which sounds really lame  ). Our tournaments are a bit bigger though, and you're part of a 3 person team. Its run by the ACM (association for computing machinery). Basically, here's how it works: You're given anywhere between 6 and 8 different problems to solve, all generally challenging, but there's usually a few that can be solved within 20-30 minutes or so (1-2). They give you a minimal amount of test data, and all the data about the possible input you need to handle, along with a fairly indepth description of what the program needs to do. You then make a program that you think will handle all the possible test data they could throw at it, and when you're satisfied, you submit that for judging. They run they're complete test data through it, and if there's any problems, they send it back to you with a general reason (output syntax, doesn't match test answers, etc.) and add a 20 minute penalty to your score. If you get it right, they give you a correct problem and then add the current amount of time to your score (so if you solved it at the 30 minute mark, they'd add 30).
The winner at the end of the competition is the team who solved the most problems (and in case there's a tie there, its the team who has the least total time score (which would mean they solved the problems in the least amount of time/with the least amount of wrong submissions)). can you explain that part? is there a "score" that your team has and your objective is to keep it low? but that doesn't make sense because there'd be a bunch of teams with 0 who didn't solve any questions. but if they add that (30) to the time you have left then it'd be beneficial to spend more time on questions (use 90 to be absolutely sure you got it right, get 90 minutes back when you did get it right).
|
The way it works is that the number of correct submissions determines the winner with the total time being a tiebreaker.
Also, the sample problem in the OP is a pretty straightforward dynamic programming problem.
|
On April 11 2009 00:17 never_toss wrote: #ifndef _EsX_Raptor_ #define _EsX_Raptor_
class EsxRaptor : public Contestant, public TLRapist { public: virtual void Rape(); virtual void Participate () { Rape(); }
private: void InvokeTLpwnage(); void ThrowJaedong(); void BeginBisuCoding(); void EndBisuCoding(); string InsertGreatComment() { return "lol gg nubs, no re"; } };
#endif Oh my.. I feel stupid for lol'ing after reading it..
|
Could you post all the problems? Also what year are you?
|
On April 11 2009 08:55 Hamster1800 wrote: The way it works is that the number of correct submissions determines the winner with the total time being a tiebreaker.
Also, the sample problem in the OP is a pretty straightforward dynamic programming problem.
Is it? I thought it was doable by using the standard graph theory, could Dijisktra's algo work here? Could you explain slightly more about dynamic programming, I could never really work my head around it.
OP, would it be possible to get a hold on the solution? thankkkss.
|
On April 11 2009 11:49 Pengu1n wrote: Could you post all the problems? Also what year are you? you made my day :D I just love it when people show interest in these things, because I'm in love with my CS major. I just started my Junior year (halfway through), I will transcribe all the problems (its a handout) as soon as I get home man! 
On April 11 2009 12:12 gzealot wrote: Is it? I thought it was doable by using the standard graph theory, could Dijisktra's algo work here? Could you explain slightly more about dynamic programming, I could never really work my head around it.
OP, would it be possible to get a hold on the solution? thankkkss.
Our group had the solution but I forgot to make a copy for myself x_X
I'll try to work it out myself again and post the solution with the algorithm and maybe source if you want.
We used recursion to to through all the possible paths and then determined the best one by comparing their weighs.
|
Congrats!!!
Maybe it's too late but I really don't understand how you get from the sample input to the expected output? Or are these just garbage numbers?
Anyways, I was wondering about the rules of the tournament as I've never done such a thing. How exactly do they define 'language'? I mean, can you make use of libraries or frameworks and if yes, how is it decided what you can and what you can't use?
|
I can't wait to see these problems :D I'm trying to decide between being a Math major and being a CS major, and although these contests really shouldn't impact my decision I'm sure it'll be fun stuff nonetheless.
|
On April 11 2009 12:13 EsX_Raptor wrote:Show nested quote +On April 11 2009 11:49 Pengu1n wrote: Could you post all the problems? Also what year are you? you made my day :D I just love it when people show interest in these things, because I'm in love with my CS major. I just started my Junior year (halfway through), I will transcribe all the problems (its a handout) as soon as I get home man!  Show nested quote +On April 11 2009 12:12 gzealot wrote: Is it? I thought it was doable by using the standard graph theory, could Dijisktra's algo work here? Could you explain slightly more about dynamic programming, I could never really work my head around it.
OP, would it be possible to get a hold on the solution? thankkkss.
Our group had the solution but I forgot to make a copy for myself x_X I'll try to work it out myself again and post the solution with the algorithm and maybe source if you want. We used recursion to to through all the possible paths and then determined the best one by comparing their weighs.
Thanks! Im a CS major myself, sophmore year. I'm still kind noob at programming but im trying to expand my knowledge.^^
|
wouldnt that time out, considering how its an brute force search?
|
it took a while to complete for the larger matrices but we ran out of ideas lol
btw added new section containing the set of rules they gave us!
|
C/C++ only, that makes it a whole lot easier to put everyone on equal grounds. Before I was under the impression that you could code in any language you please, and that would've been a tricky choice if you don't know the nature of the problems they'll throw at you.
|
On April 11 2009 02:36 MasterOfChaos wrote:If you said that about delphi or freepascal you could be right. But turbo pascal is simply lacking too many language features. I was trolling :p Turbo-Pascal is complete garbage except if you just want to make math based applications..
|
Guys!
I posted the solution for problem B.
Would anyone plzplz mind going over function FindMin with me? I want to understand it! (this is a different procedure from the one we used)
|
It is impressive to see how time can change us.
I still remember this day and how exciting it was for me to be amid a plethora of people sharing my interests; I still remember how badly I wanted to pair my overall computer-science knowledge with the other guys' and see how I would fare; I still remember the frustration solving these problems introduced and how much I hated myself for not being "competent enough" to solve them alone.
More than two years later, I find myself here, sitting, looking back, holding the Bachelor's Degree I so badly longed for, and moving forwards into more involved fields I would have never dreamt of ever understanding. I chuckle at how immature, volatile, and impetuous I was and at how ridiculously easy these problems were—it does not fit in my head how no group solved more than one problem in the four hours allotted—but I am proud to be able to dust-off the good-old TL blogs, read them, and see that I indeed overcame the then-unbreakable obstacles that kept us awake for long college nights.
Let us keep moving forwards, my friends.
|
Mm, thanks for this bump. Yeah, reflection and introspection are often very good things.
I'm glad you're moving forward even farther! How time changes us, indeed.....
|
|
|
|