V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
metaquant
V2EX  ›  分享创造

分享一下自己刚上线的欧拉计划(project euler)中文网站

  •  1
     
  •   metaquant ·
    sorrowise · 2020-11-15 15:42:15 +08:00 · 3286 次点击
    这是一个创建于 1250 天前的主题,其中的信息可能已经有所发展或是发生改变。

    作为一个欧拉计划网站资深刷题成瘾患者,深感相关中文资源的不足,所以索性做了个欧拉计划的中文站,把自己已经解出的题目做了翻译,也介绍了自己的解题思路和代码。希望能够弥补相关中文资源的不足,启发更多更好的解题思路,也希望大家多多交流,对网站建设提出宝贵意见。

    网站地址: https://pe.metaquant.org/

    相关代码库: https://github.com/sorrowise/euler

    以下是我的一篇短文,对欧拉计划网站做了介绍以及讲述了我建站的初衷:

    Project Euler exists to encourage, challenge, and develop the skills and enjoyment of anyone with an interest in the fascinating world of mathematics.*

    欧拉计划是什么?

    欧拉计划(Project Euler)是一个在线解题网站,或者通俗的说是一个是刷题网站,但是相比于力扣先程序员常用的刷题网站,欧拉计划中的题目数学味要更浓,通常需要结合一定的数学与编程知识,写出适当的程序来求解问题。

    就我个人的经历,欧拉计划是一个锻炼个人算法技能与数学知识的绝佳工具,在解决问题的过程中,你不仅可以了解一些以前不甚了了的数学知识,更可以将这种数学知识与算法设计结合起来,从而得到不断优化的算法。

    正因为网站上的很多题目需要你花大量的时间来查询文献、学习新的数学知识并编写代码来求解,解答出一道难题通常会给你带来更强烈的满足感,就像很多人常说的,欧拉计划会让人刷题上瘾。

    欧拉计划适合什么人?

    欧拉计划更加适合那些对数学感兴趣,尤其是对用编程来解决数学问题感兴趣的同学。就涉及的数学知识而言,欧拉计划中的大部分题目都与数论有关,所有了解一些常用的初等数论知识,如整除性质、数论函数、丢番图方程等等对解答题目会很有帮助。

    欧拉计划不适合用来做准备程序员面试的刷题练习,因为欧拉计划中题目的难度通常比力扣等刷题网站中的题目要难得多,刷题非常浪费时间。其次,欧拉计划中的题目过于注重数学知识背景,而相对弱化了对编程技巧的训练,和一般公司的招聘要求是背道而驰的。

    在编程语言方面,欧拉计划没有任何限制,解题时不需要提交代码,只需要提交最终结果就可以了,部分题目甚至可以使用数学技巧直接笔算解决。根据网站的提示,大部分问题应能在普通电脑上在一分钟内得到答案,如果代码的运行时间超过一分钟,则说明你的代码或者算法需要优化。

    如何使用欧拉计划网站?

    在进入欧拉计划网站后,我们可以点击上方的 Archives 栏查看所有题目,在下面的列表中一页会显示五十个题目,我们可以点击列表上方或下方的序号进行翻页,或者输入题号直接到达某个题目。

    我们可以根据题目的序号(ID)、已解答的人数(Solved By)和难度系数(Difficulty)来对所有题目进行降序或升序排列。一般而言,我们可以根据已解答人数降序排列,这样可以更容易解决的题目会排在前面。其次我们可以根据难度系数选择题目,难度系数低的题目要比难度系数高的题目更易解决,但这个指标的可参考性不如已解答人数指标。

    我们可以点击 Progress 栏查看我们的解题进度,包括已经解答出的题目、现在的等级、所获的奖章、发表的文章以及解题的时间线。当我们解答出题目后,可以点击对应这个问题的论坛,查看其它人是如何解决这个问题的。

    为什么要建立欧拉计划中文站?

    相对于力扣等刷题网站,欧拉计划的国内的知名度相对较低,一方面可能是因为定位比较小众,另一方面则是因为本土化不够,网站题目是英文,论坛上的讨论是英文,相关的参考文章也基本都是英文,对于英文不好的同学可能接受起来比较困难。

    我建立这个网站,一方面是经常觉得欧拉计划上的题目设计的非常巧妙,解题过程让我充满收获,值得翻译成中文和更多人分享;另一方面,也是对我自己的解题历程、思路和代码做一些记录并与大家交流,如能启发出更好的思路和代码,则更感欣慰。

    在每篇文章中,我首先将题目翻译成了中文,然后给出了我的解题思路和对应的代码,代码也可以在这个仓库中找到。如果对题目翻译、解题思路以及代码有疑惑或者需要指出其中的错误的,可以在仓库中发出$issue$,我会尽量积极回复。

    我自己的解题历程

    我在 2017 年 7 月 20 日做出了第一道题,这几年来在工作之余断断续续做出了接近一百多道题目,进度相对比较缓慢。我自身也不太注重刷题的程度,我希望能够对每道题给出最优的解法,不仅效率较高,通时代码结构也能比较优雅。在解题后,我会对解题思路做一个详细的描述,希望阅读的人能够很快的理解我的思路。关于我的解题进度,这幅图片会及时更新:

    img

    我的主力编程语言是 python,而这也是欧拉工程解题语言中最常用的语言之一。python 由于其优秀的设计,以及诸如列表推导式,lambda 表达式等可口的语法糖,众多易用的外部库,通常只需要很少数量的代码,就可以很优雅的解决一些复杂的问题。如果可能,将来我还会尝试用其它语言,比如说 julia,Haskell 来解答题目。

    9 条回复    2020-11-17 10:31:18 +08:00
    piedpipper
        1
    piedpipper  
       2020-11-15 15:46:39 +08:00
    强烈支持,这么多题的思路都写了下来,文章都还挺长,楼主一定花了不少时间。
    ila
        2
    ila  
       2020-11-15 15:49:32 +08:00 via Android
    已 star
    zeninger
        3
    zeninger  
       2020-11-15 15:51:20 +08:00
    已 star, 感谢楼主分享。
    momentum
        4
    momentum  
       2020-11-15 16:31:12 +08:00
    已 star, 网站很简洁,内容很丰富
    Astudnet
        5
    Astudnet  
       2020-11-15 20:23:33 +08:00
    很有趣的网站,支持楼主.但是有一点小建议,可以把服务器搬回国内,这样可以拓宽受众.
    jzyzcz
        6
    jzyzcz  
       2020-11-15 20:43:59 +08:00
    支持楼主!
    yzbythesea
        7
    yzbythesea  
       2020-11-15 20:51:32 +08:00
    mark 了,太赞了。
    ciddechan
        8
    ciddechan  
       2020-11-16 18:01:13 +08:00
    codewars
    ychost
        9
    ychost  
       2020-11-17 10:31:18 +08:00
    太赞了,支持楼主!!!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2498 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:08 · PVG 00:08 · LAX 09:08 · JFK 12:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.