在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1 使用数组实现九宫格1.1 问题Swift提供经典的数组和字典两种集合类型来存储集合数据。本案例使用数组实现一个九宫格程序,如图-1所示: 图-1 1.2 方案九宫格就是有一个n行n列的方格,将1至n*n个数字依次放入方格中,使得每行每列以及每个对角线上的数字相加的和相等,这里提供一种九宫格的算法,以3*3的九宫格为例,依次将1~9放入方格内,首先第一步将数字1放入第一行中间一格,如图-2所示: 图-2 然后将数字放入数字1右上角45度的空格位置,如图-3所示: 图-3 但是数字2已经放到方格外面,这种情况称为行越界,如果数字行越界就将其放入该列对应的最后一行,如图-4所示: 图-4 接下来同第二个步骤一样在数字2右上角45度的空格位置放入数字3,如图-5所示: 图-5 但是数字3已经放到方格外面,这种情况称为列越界,如果数字列越界就将其放入该行对应的最后一列,如图-6所示: 图-6 然后同上面的步骤一样在数字3右上方45度的空格位置放入数字4,但是该空格已经放入数字1,那么就将数字4放入数字3下面的空格,如图-7所示: 图-7 在接下来同上面的步骤依次在数字4的右上方45度空格放入数字5,在数字5的右上方45度空格放入数字6,如图-8所示: 图-8 当在数字6右上方45度的空格位置放入数字7的时候,发现数字7行列都越界了,如果数字行列都越界,就和数字冲突的情况采用一样的处理方式,将数字7放入数字6下方的空格,如图-9所示: 图-9 最后同上面的步骤一样放入数字8和数字9,这样就完成了3*3的九宫格,每行每列和每个对角线加起来都是15,如图-10所示: 图-10 1.3 步骤实现此案例需要按照如下步骤进行。 步骤一:定义一个二维数组 首先定义一个常量n,用于规定创建一个n行n列的九宫格,并且n只能是奇数,偶数无法创建九宫格,这里可以使用断言的方式进行判断,代码如下所示:
其次定义一个整型的二维数组,并且将所有的元素初始为0,代码如下所示:
步骤二:将1~n*n个数字放入九宫格 首先定义两个整型变量row和col分别记录行号和列号也就是二维数组的下标,从第零行的中间一个空格开始放入数字,因此row和col分别初始化为0和n/2,代码如下所示:
然后使用for循环依次将1~n*n个数字放入二维数组array,注意区分行越界、列越界、行列同时越界以及冲突这四种情况的处理,代码如下所示:
这样就完成了九宫格的程序,运行结果如图-11所示: 图-11 1.4 完整代码本案例中,完整代码如下所示:
2 统计选票程序2.1 问题有一个常量数组ballot,里面存放的是选票信息,通过一个字典统计出每个人的票数。 2.2 方案首先创建一个可变字典vote用于存放人员信息和票数,该字典的类型是[String:Int],选票数组中的人员姓名就是该字典的key。 然后遍历选票数组,判断每个人姓名出现的次数,每出现一次name,vote[name]的value值则加一,如果name第一次出现vote[name]的value则设置为1。 2.3 步骤实现此案例需要按照如下步骤进行。 步骤一:创建一个可变字典vote 首先创建一个可变字典vote用于存放人员信息和票数,该字典的类型是[String:Int],选票数组中的人员姓名就是该字典的key,代码如下所示:
步骤二:遍历数组统计票数 遍历选票数组,判断每个人姓名name出现的次数,每出现一次name,vote[name]的value值则加1,如果name第一次出现vote[name]的value则设置为1,代码如下所示:
运行结果如图-12所示: 图-12 2.4 完整代码本案例中,完整代码如下所示:
3 计算一个字符串中元音和辅音的个数3.1 问题本案例使用函数多个返回值的特点完成一个count函数,该函数用于计算一个字符串中元音、辅音以及其他字母的个数。 3.2 方案而在Swift里面函数可以有多个返回值,返回值类型是元组类型,可以通过名称和下标访问元组元素,元组的成员不需要在函数中返回时命名,已经在函数返回类型中定义好了。 3.3 步骤实现此案例需要按照如下步骤进行。 步骤一:定义一个返回元组类型的函数 由于需要通过函数count同时得到一个字符串中元音、辅音以及其他字母的个数,所以count函数将返回一个元组类型,包含多个值,代码如下所示:
步骤二:实现count函数 count函数内部根据传入的字符串,依次判断字符串的每个字符是属于元音还是辅音,或是其他字符,代码如下所示:
然后调用函数,运行结果如图-13所示: 图-13 3.4 完整代码本案例中,完整代码如下所示:
1 使用数组实现九宫格1.1 问题Swift提供经典的数组和字典两种集合类型来存储集合数据。本案例使用数组实现一个九宫格程序,如图-1所示: 图-1 1.2 方案九宫格就是有一个n行n列的方格,将1至n*n个数字依次放入方格中,使得每行每列以及每个对角线上的数字相加的和相等,这里提供一种九宫格的算法,以3*3的九宫格为例,依次将1~9放入方格内,首先第一步将数字1放入第一行中间一格,如图-2所示: 图-2 然后将数字放入数字1右上角45度的空格位置,如图-3所示: 图-3 但是数字2已经放到方格外面,这种情况称为行越界,如果数字行越界就将其放入该列对应的最后一行,如图-4所示: 图-4 接下来同第二个步骤一样在数字2右上角45度的空格位置放入数字3,如图-5所示: 图-5 但是数字3已经放到方格外面,这种情况称为列越界,如果数字列越界就将其放入该行对应的最后一列,如图-6所示: 图-6 然后同上面的步骤一样在数字3右上方45度的空格位置放入数字4,但是该空格已经放入数字1,那么就将数字4放入数字3下面的空格,如图-7所示: 图-7 在接下来同上面的步骤依次在数字4的右上方45度空格放入数字5,在数字5的右上方45度空格放入数字6,如图-8所示: 图-8 当在数字6右上方45度的空格位置放入数字7的时候,发现数字7行列都越界了,如果数字行列都越界,就和数字冲突的情况采用一样的处理方式,将数字7放入数字6下方的空格,如图-9所示: 图-9 最后同上面的步骤一样放入数字8和数字9,这样就完成了3*3的九宫格,每行每列和每个对角线加起来都是15,如图-10所示: 图-10 1.3 步骤实现此案例需要按照如下步骤进行。 步骤一:定义一个二维数组 首先定义一个常量n,用于规定创建一个n行n列的九宫格,并且n只能是奇数,偶数无法创建九宫格,这里可以使用断言的方式进行判断,代码如下所示:
其次定义一个整型的二维数组,并且将所有的元素初始为0,代码如下所示:
步骤二:将1~n*n个数字放入九宫格 首先定义两个整型变量row和col分别记录行号和列号也就是二维数组的下标,从第零行的中间一个空格开始放入数字,因此row和col分别初始化为0和n/2,代码如下所示:
然后使用for循环依次将1~n*n个数字放入二维数组array,注意区分行越界、列越界、行列同时越界以及冲突这四种情况的处理,代码如下所示:
这样就完成了九宫格的程序,运行结果如图-11所示: 图-11 1.4 完整代码本案例中,完整代码如下所示:
2 统计选票程序2.1 问题有一个常量数组ballot,里面存放的是选票信息,通过一个字典统计出每个人的票数。 2.2 方案首先创建一个可变字典vote用于存放人员信息和票数,该字典的类型是[String:Int],选票数组中的人员姓名就是该字典的key。 然后遍历选票数组,判断每个人姓名出现的次数,每出现一次name,vote[name]的value值则加一,如果name第一次出现vote[name]的value则设置为1。 2.3 步骤实现此案例需要按照如下步骤进行。 步骤一:创建一个可变字典vote 首先创建一个可变字典vote用于存放人员信息和票数,该字典的类型是[String:Int],选票数组中的人员姓名就是该字典的key,代码如下所示:
步骤二:遍历数组统计票数 遍历选票数组,判断每个人姓名name出现的次数,每出现一次name,vote[name]的value值则加1,如果name第一次出现vote[name]的value则设置为1,代码如下所示:
运行结果如图-12所示: 图-12 2.4 完整代码本案例中,完整代码如下所示:
3 计算一个字符串中元音和辅音的个数3.1 问题本案例使用函数多个返回值的特点完成一个count函数,该函数用于计算一个字符串中元音、辅音以及其他字母的个数。 3.2 方案而在Swift里面函数可以有多个返回值,返回值类型是元组类型,可以通过名称和下标访问元组元素,元组的成员不需要在函数中返回时命名,已经在函数返回类型中定义好了。 3.3 步骤实现此案例需要按照如下步骤进行。 步骤一:定义一个返回元组类型的函数 由于需要通过函数count同时得到一个字符串中元音、辅音以及其他字母的个数,所以count函数将返回一个元组类型,包含多个值,代码如下所示:
步骤二:实现count函数 count函数内部根据传入的字符串,依次判断字符串的每个字符是属于元音还是辅音,或是其他字符,代码如下所示:
然后调用函数,运行结果如图-13所示: 图-13 3.4 完整代码本案例中,完整代码如下所示:
|
请发表评论