Flash Flash Revolution (http://www.flashflashrevolution.com/vbz/index.php)
-   Technology (http://www.flashflashrevolution.com/vbz/forumdisplay.php?f=74)

 Reincarnate 06-4-2014 11:16 AM

A little extra time preplanning goes a long way

For 35 you just need a simple sieve and a short rotator method

 kaiten123 06-4-2014 11:16 AM

one thing you could do is keep anything you do more than once in its own method/function/etc. so you only write code once per program.
an extention of that is to have a library of common functions so you dont need to rewrite them. like one for generating primes and so on so you can just reuse it for many problems.

still,100 lines seems pretty excessive for that problem. what part is making it so long?
generating the primes should only take a few lines, rotating should only be a few lines, etc.

and lastly, theres usually multiple ways to solve a problem and the one that is fastest on paper might not be the fastest to code so you should keep coding time in mind while thinking of how to solve stuff.

 Reincarnate 06-4-2014 04:07 PM

Here's a solution I just wrote for 35 in Python:

This can be optimized further but my point is that the underlying logic is pretty straightforward and you can get a fast program without many lines of code (the above code runs in about half a second on my machine).

 stargroup100 06-4-2014 07:24 PM

I'm using javascript atm. I'm not sure if that has any relevance but uh yeah. I do reuse a lot of my functions and stuff, and trust me when I say that I'm very familiar with basic concepts such as "fastest paper method might not be fastest to code"

it's not math or problem solving that's difficult for me. I can do more of these problems by hand than almost anyone else. I'm simply not super fluent in programming. a lot of complex algorithms are flying through my head all the time, but figuring out how to convert that into code is sometimes difficult

here's the main function I used to check for a circular prime (I use other functions but didn't post them)

 leonid 06-4-2014 07:44 PM

I used PARI/GP only for dealing with really large primes (used C before I knew about PARI/GP)

Even though Ruby is a very slow language, it served me well enough for almost all the remaining problems I solved, and very rarely did my codes go above 20 lines

Some people on PE try to solve every problem using ASM but that's just stretching it too far

 leonid 06-4-2014 10:38 PM

My code took 9 minutes :(

EDIT: Tried the same algo on PARI/GP and it took 3 seconds

 Reincarnate 06-4-2014 11:20 PM

Thinking of making an extra dummy account and starting fresh, using none of my old libraries.

leonid: problem is much faster in something like C++

Edit: nvm ninja'd, PARI/GP is very fast too for that one apparently XD

 stargroup100 06-4-2014 11:46 PM

PARI/GP is god

never underestimate PARI/GP

 leonid 06-4-2014 11:55 PM

My only complaint is I can't use GP non-interactively.

So I have to write code somewhere else and copy/paste into the interactive shell. Also since every command is supposed to be 1 line, I need to put a \ at the end of each line, so my code becomes ugly

Actually I think I can get it to work somehow, brb..

 leonid 06-5-2014 12:27 AM

cool

 reuben_tate 06-5-2014 05:42 AM

Quote:
 Originally Posted by Reincarnate (Post 4145954) Thinking of making an extra dummy account and starting fresh, using none of my old libraries. leonid: problem is much faster in something like C++ Edit: nvm ninja'd, PARI/GP is very fast too for that one apparently XD
I'm deciding to start fresh because I made my original account years ago; I never kept my code or notes or anything organized so it just became an unorganized mess.

I'm trying to learn a bit of Python at the moment, so that's what I've been coding in. However, at least from my viewpoint, Python is horrifically slow (one source whose credibility I did not check which I found interesting regarding programming languages vs speed: here). On the bright side, in the case that Python is slower than other programming languages I've used, this forces me to come up with more efficient algorithms.

Only did the first 15 for now:

New friend key:
Code:

`95430157644057_56e54c547c0f732b3b941aec7177ce58`

 leonid 06-5-2014 06:47 AM

Really messy

 Reincarnate 06-5-2014 07:11 AM

Reuben: even in Python, most problems can be done in under a second

 leonid 06-5-2014 07:16 AM

I did this RSA problem by manual empirical pattern recognizing with lots of experiments, small examples, and blind guessworks

And then I saw the real way of solving it in the thread. I feel like I cheated through this, but I guess what I learned in this thread will help me on other problems
@Reincarnate Check my code in the thread if you want to see what I mean

 Reincarnate 06-5-2014 07:59 AM

Quote:
 Originally Posted by leonid (Post 4146067) I did this RSA problem by manual empirical pattern recognizing with lots of experiments, small examples, and blind guessworks And then I saw the real way of solving it in the thread. I feel like I cheated through this, but I guess what I learned in this thread will help me on other problems @Reincarnate Check my code in the thread if you want to see what I mean http://projecteuler.net/thread=182&page=4#171693
If it works, it works. May be worth going back and doing it the "right" way though (or at least reading the forum).

 reuben_tate 06-5-2014 08:10 AM

Quote:
 Originally Posted by Reincarnate (Post 4146065) Reuben: even in Python, most problems can be done in under a second
Well, of course. I guess what I'm trying to get at is that if you use a language that is of magnitudes times faster than another, then you can get away with more "lazy" solutions with the faster programming language.

 stargroup100 06-5-2014 08:17 AM

PARI/GP

seriously ALL HAIL PARI/GP

 leonid 06-5-2014 08:53 AM

Had me stumped for a few minutes

 leonid 06-5-2014 10:01 AM

I used Ruby this time because GP has no hash tables ?_?

 leonid 06-5-2014 12:43 PM