Ruby 板


LINE

http://imgur.com/JrrL7NU 小弟練習一個例題 這個例題的目的是計算陸地的尺寸 但不重複計算 我左看右看完全不知道他到底是如何計算的 或是為什麼在if那邊要用[y] [x] != 'land' 等等的 請問有人可以完整的幫我解釋一下嗎? 謝謝您! --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.172.82.241
※ 文章網址: http://webptt.com/m.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燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP