推荐一个网站(题库?)。

45 views
Skip to first unread message

Bayes

unread,
Oct 2, 2008, 3:01:01 PM10/2/08
to python-cn`CPyUG`华蟒用户组
其实也是从别人的blog链来链去链到得。
感觉也还是很有意思的,新手可以用来做练习,高手可以用来休闲一下。

http://projecteuler.net/

网站直译叫“欧拉工程”,其实是一套题库,主要是把数学和计算机结合起来,用编程来解决问题。
一条基本原则就是,你编程解决每个问题,算法当然允许多想想,但是程序运行应该不超过1分钟。如果超过了,证明在算法方面还可以改进。

你注册之后可以看到统计,python用户排在第二,仅次于c/c++用户。其中中国用户超过400。
这个题库大约每周出一题,现在已经到了210,第211题这个周末会出来。
在总共将近一万用户中,全部解决210题的不超过100人,而且因为越往后,题目就越难,因此全部做完的人应该更少。高手们可以用这个来休闲下。况且国
内还没有人用python解决所有题。有的都是c/c++解决的。美国的python发展貌似很好,有1个人用python解决了所有题。

另外网站还设置了保密,你只能看到解决了某个题目的人数,如果你自己没有输入正确答案,你是看不到别人的分析和代码的。
新手完全可以用这个当作练习,前面的有些题目还是很简单的,我现在正在练习中,有些题目做出来,再比对网上别人的答案,才发现自己在用python写c
程序。。。
也希望高手们做些简单点的题目,给我们show一下code,多读code多做题,我想这应该是初学者比较快的提高方式了。

est

unread,
Oct 2, 2008, 4:05:51 PM10/2/08
to python-cn`CPyUG`华蟒用户组
类似ACM的Online Judge?

推荐一个自由软件定理证明工具Isabelle http://isabelle.in.tum.de/

张沈鹏

unread,
Oct 2, 2008, 5:06:20 PM10/2/08
to pyth...@googlegroups.com
做了5条,困了,睡觉

1.
print sum(i for i in range(1000) if not (i%3 and i%5))

2.
def fibonacci(max):
x=1
y=2
yield 1
yield 2
while y<max:
x,y=y,x+y
yield y

print sum(i for i in fibonacci(4000000) if (1+i)%2 )

3.
下载这个脚本
http://infohost.nmt.edu/tcc/help/lang/python/prime.html

print max(Prime().factorize(600851475143))

4.
def is_reverse(x):
result=[]
while x:
result.append(x%10)
x=x/10
for i in range(len(result)/2):
if result[-i-1]!=result[i]:
return False
return True

digit3=range(100,1000)
max=0
for i in digit3:
for j in digit3:
r=i*j
if is_reverse(r):
if is_reverse(r)!=True:print r
if r>max:
max=r
print max

5.

prime_list = lambda x:[
i for i in range(2, x+1)
if all([i%x for x in range(2, int(i**0.5+1))])
]
"""
2**4<20
3*2<20
"""
print reduce(lambda x,y:x*y,prime_list(20))*(2**3)*3

Leo Jay

unread,
Oct 2, 2008, 5:14:00 PM10/2/08
to pyth...@googlegroups.com
On Fri, Oct 3, 2008 at 5:06 AM, 张沈鹏 <zsp...@gmail.com> wrote:
> 做了5条,困了,睡觉

>
>
> 4.
> def is_reverse(x):
> result=[]
> while x:
> result.append(x%10)
> x=x/10
> for i in range(len(result)/2):
> if result[-i-1]!=result[i]:
> return False
> return True
>
> digit3=range(100,1000)
> max=0
> for i in digit3:
> for j in digit3:
> r=i*j
> if is_reverse(r):
> if is_reverse(r)!=True:print r
> if r>max:
> max=r
> print max
>

我的4是这样的:
maxvalue = 0
for i in xrange(100, 1000):
for j in xrange(i, 1000):
intresult = i * j
strresult = str(intresult)
if strresult == strresult[::-1]:
if intresult > maxvalue:
maxvalue = intresult

print maxvalue


> 5.
>
> prime_list = lambda x:[
> i for i in range(2, x+1)
> if all([i%x for x in range(2, int(i**0.5+1))])
> ]
> """
> 2**4<20
> 3*2<20
> """
> print reduce(lambda x,y:x*y,prime_list(20))*(2**3)*3
>

我的5是这样的:
def lcm(a, b):
return lcm(b, a%b) if b else a

print reduce(lambda x, y: x*y/lcm(x,y), xrange(2, 21))


--
Best Regards,
Leo Jay

Bayes

unread,
Oct 2, 2008, 10:11:43 PM10/2/08
to python-cn`CPyUG`华蟒用户组
果然学到不少好东东啊。
建议是不是专门找个地方,评选几个优秀答案,按题目序号把他们收集起来?对后来者,这些都是非常好的例子和学习资料啊。

Andelf

unread,
Oct 2, 2008, 11:24:50 PM10/2/08
to pyth...@googlegroups.com


2008/10/3 est <electr...@gmail.com>
类似ACM的Online Judge?


spoj 比较好

Patrol Sun

unread,
Oct 4, 2008, 4:27:51 AM10/4/08
to pyth...@googlegroups.com
大家赶紧做 我卡在84题上啦 请教高手指点

2008/10/3 Bayes <Baye...@gmail.com>
Reply all
Reply to author
Forward
0 new messages