Ruby 板


LINE

http://imgur.com/JrrL7NU 小弟练习一个例题 这个例题的目的是计算陆地的尺寸 但不重复计算 我左看右看完全不知道他到底是如何计算的 或是为什麽在if那边要用[y] [x] != 'land' 等等的 请问有人可以完整的帮我解释一下吗? 谢谢您! --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.172.82.241
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Ruby/M.1398171471.A.860.html
1F:→ mars90226:这解法中心思想就是从某个点开始,往外8个点检查是否为 04/22 22:06
2F:→ mars90226:陆地,加起来。因为周围8个点的周围也可能是陆地,所以 04/22 22:07
3F:→ mars90226:用递回的方式计算 04/22 22:07
4F:→ mars90226:计算过的陆地要改掉,避免重复计算 04/22 22:09
5F:→ timeregorge:谢谢您的解说,请问由一个点开始计算,这个起始点是任 04/23 23:54
6F:→ timeregorge:意点吗?或是左上角呢?另外若自己计算陆地有27个为 04/23 23:54
7F:→ timeregorge:什麽执行出来的结果是23呢? 04/23 23:54
8F:推 mars90226:这method是印出传入的5, 5那个点的陆地大小,不是全部 04/24 00:26
9F:→ mars90226:中间那个陆地只有23个点没错 04/24 00:27
谢谢您的解释,但我还是不太懂@@ (5,5)那个点指的是坐标吗?或是指(1,1)~(5,5)的范围呢? "(5,5)的陆地大小"是什麽意思呢? 这是我画的图 http://imgur.com/2CjkhL0 是这样做计算吗? 不好意思我真的不太懂他是怎麽计算的,感谢您的解答! ※ 编辑: timeregorge (1.172.84.185), 04/24/2014 11:57:06
10F:推 mars90226:感觉你似乎没有程式背景,一般程式语言中阵列的计算是 04/24 20:21
11F:→ mars90226:从0开始喔,所以(5,5)的话你要数第(6,6)个位置才是 04/24 20:22
12F:→ mars90226:然後就像你的图一样,找周围8个点继续计算就是了 04/24 20:23
您好,谢谢您的解答,我的确没有程式背景,最近正在自学中,感谢您的解说! 这样我大概知道是怎麽运作的了但另外一个问题我尝试把绿色筐原本是陆 地改成水,以计算来说应该计数会是22因为少了一个陆地 但为什麽执行的结果却是21呢?http://imgur.com/f4B4Uow ※ 编辑: timeregorge (1.172.84.185), 04/25/2014 13:02:23 ※ 编辑: timeregorge (1.172.84.185), 04/25/2014 13:03:44
13F:推 mars90226:绿框的位置刚好连接红框那边的陆地和绿框上面那个陆地 04/25 17:26
14F:→ mars90226:你把绿框改成水以後,两边就不相连了,所以计算不到 04/25 17:27
谢谢您的讲解,所以只有和陆地有相连的中间没有断开的才会被计算到吗? http://imgur.com/hmFJoqb 红线范围内是被计算到的 绿筐则是因为周边为水所以不列入 那若是我改变坐标位置要计算右上角的3个有办法吗?因为我改变坐标似乎计算数会为0 此外现在的(5,5)是(x,y)或是依照 if world[y][x] != 'land' return 0 end size = 1 world[y][x] = 'counted land' 这一段里面的设定为(y,x)呢? 谢谢您的解答! ※ 编辑: timeregorge (1.172.84.185), 04/26/2014 12:05:30
15F:推 mars90226:你试试continent_size(world, 8, 2) 04/26 18:12
16F:→ mars90226:world[1][2]会去找从world第二排第三个 04/26 18:13
17F:→ mars90226:所以你的右上角应该是world[2][8] 04/26 18:13
18F:→ mars90226:但是continent_size中是用world[y][x],所以要反过来 04/26 18:14
19F:→ mars90226:上面说得不清楚,world[1][2]是找world第二横排第三个 04/26 18:15
20F:→ mars90226:基本上,你可以把第一个[]里面的数字当作row 04/26 18:16
21F:→ mars90226:第二个[]里面的数字当作column 04/26 18:16
原来如此 不好意思再次请教,在def里面的if 条件式 if world[y][x] != 'land' 在上面地图中是M条件式中变成'land' 用M或用'land'都是相同意思吗?没什麽关系吗? 谢谢您 ※ 编辑: timeregorge (218.164.117.176), 04/27/2014 21:29:28
22F:推 mars90226:这里的M宣告在def外面,不能用在def里面 04/28 20:18
23F:→ mars90226:详细的原因挺难解释的,会牵扯到class的context的问题 04/28 20:20
24F:→ mars90226:Sorry,我忘记这是大写M...,大写的M是constant,可以用 04/28 20:22
25F:→ mars90226:在def里面没错 04/28 20:22
26F:→ hSATAC:不要管那个大小写了...他只是想画一个地图而已... 04/29 02:20
mars90226:我想他要问if world[y][x] != M能不能用 04/29 09:23 我的确是想问能不能用M,但我其实是想知道为何在里面要用'land'而不是用'M'.. 谢谢各位的解答! ※ 编辑: timeregorge (218.164.117.176), 04/29/2014 20:20:51
27F:推 rexkimta:为什麽这里用'land'应该只有原作者知道,你要用M也可以 05/01 20:18
28F:→ rexkimta:但可能是因为这样比较容易看得懂。 05/01 20:19
29F:→ timeregorge:原来如此,本来的想法应该是因为def 外部的变数和内部 05/02 23:37
30F:→ timeregorge:是不可共用的,但我改成M却也是可以执行.. 05/02 23:37







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP