triangle

与Project Euler的速度比较:C vs Python vs Erlang vs Haskell

喜夏-厌秋 提交于 2020-08-09 04:12:02
问题: I have taken Problem #12 from Project Euler as a programming exercise and to compare my (surely not optimal) implementations in C, Python, Erlang and Haskell. 我将 Project Euler 中的 问题#12 作为编程练习并比较了我在C,Python,Erlang和Haskell中的(当然不是最优的)实现。 In order to get some higher execution times, I search for the first triangle number with more than 1000 divisors instead of 500 as stated in the original problem. 为了获得更高的执行时间,我搜索第一个三角形数字,其中有超过1000个除数而不是原始问题中所述的500。 The result is the following: 结果如下: C: C: lorenzo@enzo:~/erlang$ gcc -lm -o euler12.bin euler12.c lorenzo@enzo:~/erlang$ time ./euler12.bin

《Erlang程序设计》 第八章 并发编程

我与影子孤独终老i 提交于 2020-08-08 12:42:59
第八章 并发编程 Table of Contents 第八章 并发编程 8.1 并发原语 创建进程 向进程发送消息 接收消息 8.2 一个简单的例子 8.3 客户/服务器介绍 第一步 第二步 第三步 8.4 创建一个进程需要花费多少时间 8.5 带超时的receive 8.5.1 只有超时的receive 8.5.2 超时时间为0的receive 8.5.3 使用一个无限等待超时进行接收 8.5.4 实现一个计时器 8.6 选择性接收 8.7 注册进程 注册进程 取消注册 判断是否已注册 查看注册列表 8.8 如何编写一个并发程序 8.9 尾递归技术 8.10 使用MFA启动进程 8.11 习题 测试注册函数 测试发送消息 第八章 并发编程 Erlang中的进程并非属于操作系统, 它是属于程序语言本身的。 Erlang中的进程的特点: 创建和销毁进程非常迅速 在两个进程间收发消息非常迅速 进程在所有操作系统上行为相同 可以创建大量进程 进程之间不共享任何数据, 彼此间完全独立 进程间交互的唯一方式是消息传递 8.1 并发原语 创建进程 Pid = spawn(Fun). 向进程发送消息 Pid ! Message Pid1 ! Pid2 ! ... M 接收消息 receive Pattern1 [when Guard1] -> Expressions1; Pattern2

文本主题模型之LDA(二) LDA求解之Gibbs采样算法

。_饼干妹妹 提交于 2020-08-08 09:53:55
文本主题模型之LDA(一) LDA基础     文本主题模型之LDA(二) LDA求解之Gibbs采样算法      文本主题模型之LDA(三) LDA求解之变分推断EM算法     本文是LDA主题模型的第二篇,读这一篇之前建议先读 文本主题模型之LDA(一) LDA基础 ,同时由于使用了基于MCMC的Gibbs采样算法,如果你对MCMC和Gibbs采样不熟悉,建议阅读之前写的MCMC系列 MCMC(四)Gibbs采样 。 1. Gibbs采样算法求解LDA的思路     首先,回顾LDA的模型图如下:     在Gibbs采样算法求解LDA的方法中,我们的$\alpha, \eta$是已知的先验输入,我们的目标是得到各个$z_{dn}, w_{kn}$对应的整体$\vec z,\vec w$的概率分布,即文档主题的分布和主题词的分布。由于我们是采用Gibbs采样法,则对于要求的目标分布,我们需要得到对应分布各个特征维度的条件概率分布。     具体到我们的问题,我们的所有文档联合起来形成的词向量$\vec w$是已知的数据,不知道的是语料库主题$\vec z$的分布。假如我们可以先求出$w,z$的联合分布$p(\vec w,\vec z)$,进而可以求出某一个词$w_i$对应主题特征$z_i$的条件概率分布$p(z_i=k| \vec w,\vec z_{\neg i})$

php面向对象练习(面向对象版计算器)

女生的网名这么多〃 提交于 2020-08-08 02:34:51
本例是根据一本php教材里的面向对象编程练习小项目翻录而成,是面向对象的一个综合小练习。 本例虽然并不实用,却能够应用到大部分面向对象的语法知识,也可以让读者了解一些面向对象的开发思想,让读者更深入地掌握封装、继承和多态三大面向对象的重要特性。本节的图形计算器程序可以实现计算矩形、三角形及圆形的周长和面积。 文件:index.php <!DOCTYPE html> <html> <head> <title>图形计算(使用面向对象技术开发)</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/4.1.0/css/bootstrap.min.css"> <script src="https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js"></script> <script src="https://cdn.staticfile.org/popper.js/1.12.5/umd/popper.min.js"></script> <script

从一道初等几何题目聊聊作为工具的数学

╄→尐↘猪︶ㄣ 提交于 2020-08-06 23:24:24
作为一个在杭州的流民,每周末才能回家,早上例行家务,做完后例行刷10分钟手机,在朋友圈看到一个有意思的几何题,原题如下: 哈哈,这正是我的菜,一直都是,遂放下手机,拿了几张打印纸,开始比划。 这等题目背后一定暗藏着某种奇技淫巧,必须作出辅助线才能真相大白,我先后尝试了: 过C做CG平行于AB… 在AD上截取一点G,使得AG=AB,则三角形AGC等边… … 过A作AG交DC于G,使得角BAG=60度… 其中最后一个奏效: 很容易证明 △ A B G \triangle ABG △ A B G 等边,由于 A C = A G AC=AG A C = A G ,则可求 ∠ A G C = 80 \angle AGC=80 ∠ A G C = 8 0 ,进而 ∠ D G A = 100 \angle DGA=100 ∠ D G A = 1 0 0 ,这就好玩了,简单掐指一算, ∠ D A G = 40 \angle DAG=40 ∠ D A G = 4 0 ,我靠, A G = D G AG=DG A G = D G ,所以, △ G B D \triangle GBD △ G B D 等腰啊,所以, ∠ B D G = 180 − 40 2 = 70 \angle BDG=\dfrac{180-40}{2}=70 ∠ B D G = 2 1 8 0 − 4 0 ​ = 7 0 ,最终,

MFC下OpenGL绘图框架

北城以北 提交于 2020-08-06 19:47:48
MFC 下 OpenGL 入门 源文件 1, 建一工程文件,我这里命名为 first ,现在 first 工程里面我们没有添加任何东西,所有的东西都是 MFC 自动帮我们创建的。 2, 添加链接库。这一步很关键。打开菜单栏下的项目 -> 属性 -> 配置属性 -> 链接器 -> 输入 -> 附加依赖项里加入 OpenGL32.lib GLu32.lib GLaux.lib ,如图 3, 加头文件,在 stdafx 里面添加 opengl 的头文件。如下代码所示: 代码 // -----------------------Tramp---添加OpenGL库头文件-----------------------------> #include " stdio.h " #include " math.h " #include " gl\gl.h " #include " gl\glu.h " #include " gl\glaux.h " // ---------------------------------------------------------------------------< 4, CCY457OpenGLView 类的属性栏,为下述消息加入消息处理函数: WM_CREATE (for OnCreate), WM_DESTROY (for OnDestroy), WM

【LeetCode】29 杨辉三角

情到浓时终转凉″ 提交于 2020-08-05 18:22:13
题目 给定一个非负整数 *numRows,*生成杨辉三角的前 numRows 行。 在杨辉三角中,每个数是它左上方和右上方的数的和。 示例: 输入: 5 输出: [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ] 思路 https://leetcode-cn.com/problems/pascals-triangle/solution/yang-hui-san-jiao-by-leetcode/ 代码 class Solution { public List<List<Integer>> generate(int numRows) { List<List<Integer>> triangle = new ArrayList<List<Integer>>(); //第一个基本情况;如果用户请求零行,他们将得到零行。 if (numRows == 0) { return triangle; } //第二种基本情况;第一行始终为[1]。 triangle.add(new ArrayList<>()); triangle.get(0).add(1); for (int rowNum = 1; rowNum < numRows; rowNum++) { List<Integer> row = new ArrayList<>(); List

C# 基础知识系列- 11 委托和事件

倾然丶 夕夏残阳落幕 提交于 2020-07-29 04:43:35
0. 前言 事件和委托是C#中的高级特性,也是C#中很有意思的一部分。出现事件的地方,必然有委托出现;而委托则不一定会有事件出现。那为什么会出现这样的关系呢?这就需要从事件和委托的定义出发,了解其中的内在。 1. 委托 说起委托,就不得不回忆一下之前在Linq篇中介绍的匿名方法,其中提到了Func和Action这两个类型。这两个类型就是委托。 委托在C#中定义为一种面向对象形式的方法寻址方案。简单来讲,就是定义一个类型,然后表示这个类型代表某一种方法。而委托对象,就是方法参数化。委托可以实现将方法当做一个参数传递给另一个方法,也可以认为是反射中的MethodInfo的一种特例(实际上并没有太多关系)。 委托不关心方法叫什么,也不关心方法从哪来(归属于哪个类或者哪个对象),只关心方法需要哪些参数,返回什么类型。 说到这里,我们来看一下如何定义一个委托吧,委托的定义形式如下: delegate <返回类型> 委托名(参数列表);//参数列表代表任意个参数 由之前的定义形式,我们可以知道委托也是一种类型,所以它的定义也符合类型的定义规范。现在我们定义一个没有返回值也没有参数类型的委托作为我们创建的第一个委托: public delegate void FirstDel();// 类型名称是 FirstDel 简单的使用一下: FirstDel del ; del();// 会直接报错

复杂性与临界性初探

梦想的初衷 提交于 2020-07-28 10:14:54
1. 引言 - 复杂性与临界性 宇宙怎样以大爆炸中产生的几种基本粒子开始而以生命、历史、经济和文学告终? 为什么大爆炸不形成粒子的一种简单的气体或凝聚成一个巨大的晶体呢? 针对这些问题,目前学界的主流看法是, 自然界的复杂行为反映了有许多分支的大型系统会朝着均衡的临界态发展的一种趋势 。这种方法偏离了平衡,而且微小的扰动可能导致非常巨大的不同后果。 大多数的改变是通过灾难性的事件,而不是遵循一种平和渐变的路线来实现的。 并且,最重要的是, 朝着这种非常微妙的态的演化并没有受到任何来自外部因素的影响。这种态之所以建立起来仅仅是因为系统中的单个元素之间的动力学相互作用 。 为了不至于太抽象,让我们看一看海滩上的孩子让沙粒缓缓流下而形成一堆沙的场景, 开始的时候,沙堆是平的,沙粒在附着的位置上靠的很近。它们的运动能够用单个沙粒的物理性质来理解。 堆沙的过程在继续,沙堆变得越来越陡峭,开始有少量沙粒沿着沙堆滑动。 对着时间的推移,沙粒的滑动越来越大。 最终,一些滑动的沙粒甚至跨越了整个沙堆或沙堆的大部分。从这个时间点开始,系统远离了平衡,因而它的行为不再能用单个沙粒的行为来描述。雪崩形成了自身的内部力量,而这一点只有从对整个沙堆的性质的总体描述而不是单个沙粒的简化描述,才能得以理解。 换句话说, 沙堆是一个复杂系统 。 随处可见的复杂现象表明, 自然界是作用在自组织临界态上面的 。

echarts 自定义 markPoint 的 symbol 样式

|▌冷眼眸甩不掉的悲伤 提交于 2020-07-25 09:59:26
两种自定义标记 在 echarts 中 markPoint 的样式内置了 ‘circle’, ‘rect’, ‘roundRect’, ‘triangle’, ‘diamond’, ‘pin’, ‘arrow’ 几种,如果这些都不太符合需要就必须自定义我们需要的样式。 自定义标记的图形有两种方式: 1. 通过 ‘image://url’ 设置为图片,其中 URL 为图片的链接,或者 dataURI。 2. 通过 ‘path://’ 将图标设置为任意的矢量路径。这种方式相比于使用图片的方式,不用担心因为缩放而产生锯齿或模糊,而且可以设置为任意颜色。路径图形会自适应调整为合适的大小。 svg 的 path <path> 标签用来定义路径。 使用 path 标签时,就像用指令的方式来控制一只画笔,比如:移动画笔到某一坐标位置,画一条线,画一条曲线等等 下面的指令可用于路径数据: M = moveto(M X,Y) :将画笔移动到指定的坐标位置 L = lineto(L X,Y) :画直线到指定的坐标位置 H = horizontal lineto(H X):画水平线到指定的X坐标位置 V = vertical lineto(V Y):画垂直线到指定的Y坐标位置 C = curveto(C X1,Y1,X2,Y2,ENDX,ENDY):三次贝赛曲线 S = smooth curveto(S