其实我挺想先去学习一下nim的模块系统,毕竟我决定暂时放弃学习golang,就是因为感觉他的模块和包方面的设计,不像c#+nuget的组合那么舒服。

但是这里还是先学习一下集合吧,感觉这方面nim很有现代感。

常用的集合

1)定长数组

定义Arrays数组的时候, 如果知道初始值,可以直接初始化。  如果不知道初始值,需要指定长度和类型。

var
b = [5, 7, 9] #有初始值
d: array[7, string] #无初始值
c = [] # error

定长数组的长度和类型都是定义的时候就要明确的。

2)变长数组

1 var
2 e1: seq[int] = @[] #无初始值,需要指定类型
3 f = @["abc", "def"] #有初始值,可以自动推断类型 , 用 @ 符合,和定长数组区分。

这个有点像c#的List, 支持泛型的, 可以调用泛型方法初始化变长数组

var  e = newSeq[int]()

看看增删元素的代码:

1 var list = @[1,2]
2 list.add(3)
3 list.del(1)
4 echo list

这段代码输出:

可以看到,del方法是按照下标删除元素。

切片

看代码

var list = @[1,2,3,4]
echo "切片:", list[1..2]

输出:, 看来输出的还是变长数组。  再测试一下

var list = @[1,2,3,4]
var list2 = list[1..2]
list2.add(5)
echo "切片2: ", list2

输出:

感觉写起来和python没差别,却拥有了c的执行效率, 这应该就是nim的魅力所在吧。

感觉这篇有点长了, 元组就不多说了,感觉和c#的元组类型没啥差别。  【end】

 
 
 
 

nim 3. 各种集合的更多相关文章

  1. 浅谈公平组合游戏IGC

    浅谈公平组合游戏IGC IGC简介 一个游戏满足以下条件时被叫做IGC游戏 (前面三个字是自己YY的,不必在意) 竞争性:两名玩家交替行动. 公平性:游戏进程的任意时刻,可以执行的操作和操作者本人无关 ...

  2. AcWing 893. 集合-Nim游戏

    //只能拿某些特定个数的石子 #include <cstring> #include <iostream> #include <algorithm> #includ ...

  3. Nim游戏

    目前有3堆石子,每堆石子个数也是任意的,双方轮流从中取出石子,规则如下:1)每一步应取走至少一枚石子:每一步只能从某一堆中取走部分或全部石子:2)如果谁不能取谁就失败. Bouton定理: 必败状态当 ...

  4. Nim教程【十】

    openarray类型 注意:openarray类型只能用于参数 固定大小的数组虽然性能不错,但过于呆板,使用取来不是很方便 对于一个方法来说,传入参数如果是一个数组,最好是不要限制数组的长度 也就是 ...

  5. Nim教程【九】

    向关注这个系列的朋友们,道一声:久违了! 它并没有被我阉掉,他一定会得善终的,请各位不要灰心 Set集合类型 为了在特殊场景下提高程序的性能设置了Set类型,同时也是为了保证性能,所以Set只能容纳有 ...

  6. 编程之美----NIM游戏

    : 博弈游戏·Nim游戏 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 今天我们要认识一对新朋友,Alice与Bob.Alice与Bob总是在进行各种各样的比试,今天他 ...

  7. [ACM_数学] Fibonacci Nim(另类取石子,2-4组合游戏)

    游戏规则: 有一堆个数为n的石子,游戏双方轮流取石子,满足: 1)先手不能在第一次把所有的石子取完: 2)之后每次可以取的石子数介于1到对手刚取的石子数的2倍之间(包含1和对手刚取的石子数的2倍). ...

  8. [hihoCoder] 博弈游戏·Nim游戏

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 今天我们要认识一对新朋友,Alice与Bob.Alice与Bob总是在进行各种各样的比试,今天他们在玩一个取石子的游戏.在 ...

  9. (转载)Nim游戏博弈(收集完全版)

    Nim游戏的概述: 还记得这个游戏吗?给出n列珍珠,两人轮流取珍珠,每次在某一列中取至少1颗珍珠,但不能在两列中取.最后拿光珍珠的人输.后来,在一份资料上看到,这种游戏称为“拈(Nim)”.据说,它源 ...

  10. Nim游戏(组合游戏Combinatorial Games)

    http://baike.baidu.com/view/1101962.htm?fr=aladdin Nim游戏是博弈论中最经典的模型(之一),它又有着十分简单的规则和无比优美的结论 Nim游戏是组合 ...

随机推荐

  1. #单位根反演,二项式定理#LOJ 6247 九个太阳

    题目 \[\large {\sum_{i=0}^n[k|i]C(n,i)}\pmod {998244353} \] 其中\(n\leq 10^{18}\),\(k=2^p,p\in [0,20]\) ...

  2. SkipList和java中ConcurrentSkipListMap的实现

    目录 简介 SkipList ConcurrentSkipListMap SkipList的实现 concurrent的实现 总结 SkipList和java中ConcurrentSkipListMa ...

  3. OpenHarmony技术日全面解读3.1 Release版本,系统基础能力再升级

    4 月 25 日,OpenAtom OpenHarmony(以下简称"OpenHarmony")技术日在深圳举办,对 OpenHarmony 3.1 Release 版本核心技术进 ...

  4. 重磅官宣,OpenHarmony技术峰会来了

      技术构筑万物智联 创新使能行业发展 2月25日 第一届开放原子开源基金会OpenHarmony技术峰会即将启幕 众多行业大咖齐聚深圳 开启一场"技术硬核"探索盛宴 亮点拉满,我 ...

  5. Minio架构简介

    简介 Minio是一个go编写基于Apache License v2.0开源协议的对象存储系统,是为海量数据存储.人工智能.大数据分析而设计,它完全兼容Amazon S3接口,十分符合存储大容量的非结 ...

  6. Windows Server 2008 R2修复永恒之蓝漏洞

    一.情况描述 服务器安装的Windows Server 2008 R2 standard系统,通过扫描发现系统存在永恒之蓝漏洞MS17-010(CVE-2017-0143.CVE-2017-0144. ...

  7. 重新点亮shell————awk表达式[十二]

    前言 简单介绍一下awk命令. 正文 介绍: 字段: 实例: 例子: 分割例子: 显示行号例子: awk 表达式: 赋值操作符 这个$1 解释一下,在我们的脚本中,这个$1 是第一个参数,这里是第一个 ...

  8. wandb一个简单demo

    wandb绘制曲线:sin函数,cos函数,log函数. wandb绘制本地图片 wandb绘制matplotlib图片 wandb绘制numpy图片 import math import wandb ...

  9. three.js实现数字孪生3D仓库一期(开源)

    大家好,本文使用three.js实现了3D仓库一期项目,给出了代码,分析了关键点,感谢大家~ 关键词:数字孪生.three.js.Web3D.WebGL.智慧仓库.开源 代码:Github 我正在承接 ...

  10. Java实现控制台购书系统

    "感谢您阅读本篇博客!如果您觉得本文对您有所帮助或启发,请不吝点赞和分享给更多的朋友.您的支持是我持续创作的动力,也欢迎留言交流,让我们一起探讨技术,共同成长!谢谢!" 代码 im ...