Programming Contest #1: Integer Factorization | This contest gives a free participation reward!

in #contest5 years ago (edited)

I decided to make the one thing that is really missing here on steemit: programming contests!
Don't be discouraged by the amount of text below. Most of them are just further explanations or minor things I wanted to clarify. The only really important thing is to use #quantumdeveloper as a tag when posting your result.
Even if you don't think of yourself as a good programmer, you should give this a try! I will give you in any case a feedback on your programming and you will get the participation reward!

Screenshot from 2019-05-03 15-33-57.png

Integer Factorization

Although integer factorization might be considered a hard problem in informatics, it is rather easy writing an algorithm that performs this task. As you can see I got it done within 28 lines of code.
Integer factorization is a method of displaying an integer as a product of primes.
For example 374 can be displayed as 2*11*17,
58302 can be displayed as 2*3²*41*79 or 2*3*3*41*79,
3719832 will be displayed as 1*2*2*2*3*37*59*71 by my test program. The '1*' is just because I didn't want to keep track of where I could place a '*'

A simple(and of course as inefficient as it could possibly get so you wouldn't want to copy it) program on how this might be implemented can be seen in the intro picture: The programs goes through every number and checks if the number is a prime. If it is a prime it checks, if the number is divisible by this prime. If yes it divides the program by it, stores the number in a string and restarts, otherwise it continues working. This is done as long as the number is bigger than one.
If the program is done the String is printed into the terminal and beautifully shows the result of the factorization.

What is this contest about?

I will give a problem that should be solved using a program.
I think most of the problems I will give can be done within less then 100 lines of code, but you can write thousands of lines if you want, as long as the program works.
I will reward anyone who enters a program that works(can be compiled and solves the problem in a few random test cases) with 0.01 SBD, unless there are too many(more then ten) participants for my wallet. In that case only the ones whose programs perform best will get the reward.
The program I give can be solved with all programming skills I teached in my posts before this announcement post(#1.1, #1.2, #1.3).
The programs will be ranked by how fast they perform.
Because you are allowed to use any programming language I will translate each program into a reference language(java) so no one has a higher/lower winning chance because of their language.

Reward

The reward will be 50% of the SBD income of this post(25% of the total income).
If you want to increase the reward you can upvote this post or you can donate your own money to me telling me in the memo for which contest I should use it. I will give 100% of donations to the winner of the contest and I will mention you in the contest you donated to. If you don't trust me you can alternatively wait to the end of the contest and give the money directly to the winner.

If someone makes an extraordinary creative program(that still solves the problem and is not too slow(of course I wouldn't reward something like slowsort)) I will give an additional reward of unknown magnitude. The reward will be at least the other 50% of the SBD I got in the post.

Don't try to discuss if you don't like your rank. Every program will be performance-tested on my computer. There are differences in performance between different computers. Even if your program is faster than another on your computer, it doesn't count! Also only the test cases I used will be valid for comparison. I will try to make it as fair as possible.

I will announce the winners and give the rewards within two weeks(testing all the programs after making sure they are no viruses against me may take some time) after the end of the contest.

Participation

Anyone can participate! … At least anyone who can write a program.

You need to create a new post containing your solution. You have to mention the contest number in the title(it is #1 for this contest by the way).
Use #quantumdeveloper as a tag! Otherwise I won't be able to find you.
You need to post your program within 2 weeks(I give more time than usual for other contests because programming may take a longer time) after this post!
Don't write your program directly in the comments! That will be considered spam!
Don't copy the program of another participant! Even modifying some variables names or making just a few minor changes(like change x*2 to x<<1) will still be considered a copy!

You may work in a team if you want, as long as you mention the one who I should give the reward.

You can use any real programming language, as long as you tell me which and I can install and use it easily on linux. If you forget that it will be considered a syntax error.

Syntax Errors

If you make any syntax errors you won't be able to get the participation reward!
But you can still get the main reward(minus 10% for syntax correction). If I find a syntax error in your program before the time is up I will write a comment so you can correct it and will still have a chance on the rewards.

Double Winning

I intent to make more than one contest.
If you have won a contest you will be unable to win the next contest you are participating in, but you can still get the participation reward and you can win again in the contests after that. So you cannot win more than half of the contests. I want to have this rule so no one will completely dominate the contest.

Will I participate?

I will always give you an example program which you can see when looking at the image above. This program will be the worst implementation I can think of so I certainly don't expect to win with this.
I think I might participate in a future contest, but I'm to busy at the moment.

Good luck to all of you!

Sort:  

Congratulations @quantumdeveloper! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You made more than 50 upvotes. Your next target is to reach 100 upvotes.

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

Do not miss the last post from @steemitboard:

SteemitBoard to support the german speaking community meetups
Vote for @Steemitboard as a witness to get one more award and increased upvotes!

Coin Marketplace

STEEM 0.16
TRX 0.13
JST 0.027
BTC 58167.06
ETH 2592.42
USDT 1.00
SBD 2.44