6 ms·
Obligatory Project Euler plug whenever anyone posts a collection of puzzles for programmers. http://projecteuler.net http://projecteuler.net These sorts of pu
by rauljara 14y ago
Obligatory Project Euler plug whenever anyone posts a collection of puzzles for programmers. http://projecteuler.net http://projecteuler.net
These sorts of puzzles are great for when learning a new language. Take a bunch of problems you've already solved in one language, and see how the solution works in another. If the solutions are too similar, it may be a sign that you aren't quite grokking yet how to think in the new language. Or that the new language is very similar to the old one. In which case, perhaps it would be more worth your time to learn a more different language. As Perlis said, "A language that doesn't affect the way you think about programming, is not worth knowing."
- Mordio 14y agoI also like the Python Challenge: http://www.pythonchallenge.com/ http://www.pythonchallenge.com/
- tripzilch 14y agooh I like how they get harder quickly and are not just about math and string/number/list manipulation like most puzzle sites. They make you delve into python (of course I used `requests` instead of the suggested `urllib` for problem 4) and have some very nice (but so far not too hard) riddle elements! ... And I just finished problem 5. very cool!
- tripzilch 14y agosorry for the double post, but seriously these challenges are some of the most original I've seen! it reminds me a bit of +Malattia's 3564020356.org website. although those are sometimes quite a bit "reversing" (reverse engineering/cracking/code=data) oriented and (IMO) get pretty hard. Of course I don't know how complex these pythonchallenges are going to become, but most of +Malattia's levels require a couple of hours or to be solved over days. You can solve the first few without programming skills, although they do help :) I forget how far I came with these, maybe level 6 or 7. Seems he lost accounts made before 2006, so I can't check for sure. The site itself is pretty old (10 years, at least), so any hints that refer to external web resources/material might be long dead, and you either have to use archive.org or accept the additional challenge of finding other mirrors (I'm fairly confident most stuff must have been mirrored in some dusty corner of the web, since the "scene" that's behind these challenges were not so much "reversers" as they are "+seekers") (try googling for filenames, and such). Good luck! (those who are up for it ;-) )
- RegEx 14y ago> "A language that doesn't affect the way you think about programming, is not worth knowing" Makes a good quote, but I don't buy it from a practical perspective. Library support is my primary motivation in choosing which scripting language to use for work projects. I don't think much differently at all in Ruby than in Python, but knowing both is extremely helpful.
- rauljara 14y agoI mostly agree with you in that there are perfectly valid reasons for learning similar languages. The quote is too strong, too absolute. But I still have a weakness for the quote because learning languages that alter your thinking is so much more useful than learning ones that don't. As to ruby/python, I only have a superficial knowledge of Python, so please correct me if I'm wrong, but my understanding is that ruby blocks let you do thinks you can't in python. Rspec is one of the examples that gets talked about a lot. But if I were asked to sum all the numbers divisible by both 3 and 5 between 1 and 100 in Ruby, I'd do it like this (1..100).select{|a| a % 3 == 0}.select{|a| a % 5 == 0}.inject(&:+) In my mind, that is a completely different way of solving the problem than by running a loop. My understanding is that you can't really do something like that conveniently in Python. Though, like I said, I really don't know python, so please do correct me if I have that wrong.
- Thrymr 14y agosum([x for x in xrange(1, 101) if x % 3 == 0 and x % 5 == 0]) edit: actually sum the list. Of course, it's even shorter if you realize you can write it as: sum([x for x in xrange(1, 101) if x % 15 == 0])
- jgeralnik 14y agoYou're better off making that a generator: sum((x for x in xrange(1, 101) if x % 3 == 0 and x % 5 == 0)) Notice the parenthesis instead of square brackets. Your version actually creates a list in memory. A generator generates the items one by one and doesn't need to store them all at the same time.
- Peteris 14y agoAs you point out, Project Euler and other simple puzzles are good for picking up new languages. Of course, Euler actually has a broad set of tough problems, but many people prefer solving the first tenner using one-liners. It's slightly vintage now, but there is nothing better for getting actual algorithmic problem solving ability per time invested than USACO at http://train.usaco.org/usacogate http://train.usaco.org/usacogate. It was developed by the US high school competitive programming coaches. If you can plow your way through the first couple of sections, even the toughest interview questions will seem easy. Serious.