teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

追記

2020/11/13 07:23

投稿

jeanbiego
jeanbiego

スコア3966

answer CHANGED
@@ -6,4 +6,7 @@
6
6
  たとえば適当な1から出発して、隣接する1を全て2に置き換える。それを終えたら他の1から出発して3に置き換える...とかすると、どの数字が一番含まれてるかをカウント(numpyとかにそういう機能ありますね)すれば、最大の島を特定できそうです。
7
7
 
8
8
  ## 追記2
9
- 隣接する1同士をすべて連結部としてグラフと考え、networkxとかで最大連結部分を取得するとか。これなら杭=末端とかの把握も簡単でいいかもしれませんね。
9
+ 隣接する1同士をすべて連結部としてグラフと考え、networkxとかで最大連結部分を取得するとか。これなら杭=末端とかの把握も簡単でいいかもしれませんね。
10
+
11
+ ## 追記3
12
+ 二値画像だと思うことにして、opencvとかで最大の島を探すとかもありそう。(回りくどいですが)

3

追記

2020/11/13 07:23

投稿

jeanbiego
jeanbiego

スコア3966

answer CHANGED
@@ -2,5 +2,8 @@
2
2
  すいません、一番面積が大きいものというのを読み落としていました。
3
3
  迷路探索のようにして、出発杭から各杭への経路を合計するとかでしょうか。(いや、なんか重そうな処理ですね。もっとスマートな手法を他の人が書いてくれそう)
4
4
 
5
- ## 追記
5
+ ## 追記1
6
- たとえば適当な1から出発して、隣接する1を全て2に置き換える。それを終えたら他の1から出発して3に置き換える...とかすると、どの数字が一番含まれてるかをカウント(numpyとかにそういう機能ありますね)すれば、最大の島を特定できそうです。
6
+ たとえば適当な1から出発して、隣接する1を全て2に置き換える。それを終えたら他の1から出発して3に置き換える...とかすると、どの数字が一番含まれてるかをカウント(numpyとかにそういう機能ありますね)すれば、最大の島を特定できそうです。
7
+
8
+ ## 追記2
9
+ 隣接する1同士をすべて連結部としてグラフと考え、networkxとかで最大連結部分を取得するとか。これなら杭=末端とかの把握も簡単でいいかもしれませんね。

2

追記

2020/11/13 07:21

投稿

jeanbiego
jeanbiego

スコア3966

answer CHANGED
@@ -1,3 +1,6 @@
1
1
  ~~たとえば、spikeは隣接する縦横4つの要素のうち3つが非1(0, あるいは外周)というのを利用してはいかがでしょう。~~
2
2
  すいません、一番面積が大きいものというのを読み落としていました。
3
- 迷路探索のようにして、出発杭から各杭への経路を合計するとかでしょうか。(いや、なんか重そうな処理ですね。もっとスマートな手法を他の人が書いてくれそう)
3
+ 迷路探索のようにして、出発杭から各杭への経路を合計するとかでしょうか。(いや、なんか重そうな処理ですね。もっとスマートな手法を他の人が書いてくれそう)
4
+
5
+ ## 追記
6
+ たとえば適当な1から出発して、隣接する1を全て2に置き換える。それを終えたら他の1から出発して3に置き換える...とかすると、どの数字が一番含まれてるかをカウント(numpyとかにそういう機能ありますね)すれば、最大の島を特定できそうです。

1

修正

2020/11/13 07:17

投稿

jeanbiego
jeanbiego

スコア3966

answer CHANGED
@@ -1,1 +1,3 @@
1
- たとえば、spikeは隣接する縦横4つの要素のうち3つが非1(0, あるいは外周)というのを利用してはいかがでしょう。
1
+ ~~たとえば、spikeは隣接する縦横4つの要素のうち3つが非1(0, あるいは外周)というのを利用してはいかがでしょう。~~
2
+ すいません、一番面積が大きいものというのを読み落としていました。
3
+ 迷路探索のようにして、出発杭から各杭への経路を合計するとかでしょうか。(いや、なんか重そうな処理ですね。もっとスマートな手法を他の人が書いてくれそう)