探検
なあ、再帰関数好きな人いる? パート3 [転載禁止]©2ch.net
1デフォルトの名無しさん
2015/11/28(土) 18:51:38.86ID:Rc2MJzM/ なあ、再帰関数好きな人いる?
528デフォルトの名無しさん
2016/01/01(金) 15:48:40.55ID:PlqvFYu0529デフォルトの名無しさん
2016/01/01(金) 16:18:10.88ID:TPZeTHW+530uy ◆Qawu9.2l1E
2016/01/01(金) 19:46:32.52ID:FqzQpFZg531デフォルトの名無しさん
2016/01/01(金) 19:53:29.38ID:BqDq7bML >>530
そりゃrubyだからさ
そりゃrubyだからさ
532デフォルトの名無しさん
2016/01/01(金) 20:37:19.16ID:KnWw4/o3 今年もrubyのオワコン芸w
533uy ◆Qawu9.2l1E
2016/01/02(土) 03:28:12.35ID:cdXNgg3P >>531-532
本当に頭悪いカスだな
rubyに限定せず実装出来ると思うけど技量的に理解すら無理な感じ?
再帰とループの変換や末尾再帰の話題には触れてもここはTCOという単語が今まで一回も出てこないという事実
「知ってる側」からすると嘘をついてるのがすぐにわかってしまう
知ったかぶりのクズ
本当に頭悪いカスだな
rubyに限定せず実装出来ると思うけど技量的に理解すら無理な感じ?
再帰とループの変換や末尾再帰の話題には触れてもここはTCOという単語が今まで一回も出てこないという事実
「知ってる側」からすると嘘をついてるのがすぐにわかってしまう
知ったかぶりのクズ
535デフォルトの名無しさん
2016/01/02(土) 09:53:52.00ID:QH+c5K8j536デフォルトの名無しさん
2016/01/02(土) 13:32:29.04ID:3O/U03ws むしろ自分でやんないと末尾呼び最適化が利かない処理系って(ry
537デフォルトの名無しさん
2016/01/02(土) 15:04:15.58ID:QH+c5K8j なんだか遅れてるんだよねruby屋さんって
538デフォルトの名無しさん
2016/01/02(土) 15:39:39.87ID:TZBdz3NA rubyだからね。仕方ないね。
539デフォルトの名無しさん
2016/01/03(日) 22:30:43.03ID:F57MRPO3 >>533
何度も出てるし「末尾再帰」といった時点でジャンプへの変換という意味を持っていってるんだよ。
最適化が無ければ「末尾」と特別な扱いをする意味が無い。
runyって最近言い出したのか。30年遅れてるな。
何度も出てるし「末尾再帰」といった時点でジャンプへの変換という意味を持っていってるんだよ。
最適化が無ければ「末尾」と特別な扱いをする意味が無い。
runyって最近言い出したのか。30年遅れてるな。
540uy ◆Qawu9.2l1E
2016/01/04(月) 03:42:45.74ID:XM/1Dr6r 理解度が低すぎる
このアルゴリズムはこのスレでは初出だと認識してるけど
読めなくてわけわかんない状態か
さっさと死ねゴミ
このアルゴリズムはこのスレでは初出だと認識してるけど
読めなくてわけわかんない状態か
さっさと死ねゴミ
541uy ◆Qawu9.2l1E
2016/01/04(月) 03:51:45.48ID:wtRTZBq6 妥協点でPythonだからね
それ以下の言語でアルゴリズム語ってるスレ見ると
そこで話してる内容とか読む前に
まずはスレ民を学習させる事から初めて
レベルを上げてやらないと話にならない
それ以下の言語でアルゴリズム語ってるスレ見ると
そこで話してる内容とか読む前に
まずはスレ民を学習させる事から初めて
レベルを上げてやらないと話にならない
542デフォルトの名無しさん
2016/01/04(月) 04:13:44.75ID:u97FRQbx543デフォルトの名無しさん
2016/01/04(月) 04:55:36.62ID:WY8liDeA 再帰好きの人をサイキッカーと呼びたい
544デフォルトの名無しさん
2016/01/04(月) 10:03:14.86ID:hsfrcHKj いいなそれ
545デフォルトの名無しさん
2016/01/04(月) 12:27:00.00ID:U406TFbL 再帰好きの人のを中二コーダーと呼びたい
547デフォルトの名無しさん
2016/01/04(月) 16:24:41.19ID:u97FRQbx548NAS6 ◆n3AmnVhjwc
2016/01/04(月) 17:38:28.00ID:7uWOp/tU つか、末尾再帰ってループそのまんまで再帰の利点ないし
recHoge1(a,n,arg...){
dobefore()...
if(a<n)recHoge1(a,n,arg...);
}
loopHoge1(a,n,arg...){
while(a<n){
dobefore()...
}
}
再帰は無意味、使う必要なし
recHoge2(a,n,arg...){
dobefore()...
recHoge2(a,n,arg...);
doafter()...
}
loopHoge2(a,n,arg...){
while(a<n){
pushargstack();
dobefore()...
popargstack();
doafter()...
}
}
再帰で有意味、この場合使える
recHoge1(a,n,arg...){
dobefore()...
if(a<n)recHoge1(a,n,arg...);
}
loopHoge1(a,n,arg...){
while(a<n){
dobefore()...
}
}
再帰は無意味、使う必要なし
recHoge2(a,n,arg...){
dobefore()...
recHoge2(a,n,arg...);
doafter()...
}
loopHoge2(a,n,arg...){
while(a<n){
pushargstack();
dobefore()...
popargstack();
doafter()...
}
}
再帰で有意味、この場合使える
549NAS6 ◆n3AmnVhjwc
2016/01/04(月) 17:44:32.72ID:7uWOp/tU pop,push逆だった
loopHoge2(a,n,arg...){
while(a<n){
popargstack();
dobefore()...
pushargstack();
doafter()...
}
}
loopHoge2(a,n,arg...){
while(a<n){
popargstack();
dobefore()...
pushargstack();
doafter()...
}
}
550NAS6 ◆n3AmnVhjwc
2016/01/04(月) 18:00:09.14ID:7uWOp/tU pushargstack();
popargstack();
ユーザー定義のこれらはめんどくさいから
再帰関数使ってコンパイラ任せにするよ
popargstack();
ユーザー定義のこれらはめんどくさいから
再帰関数使ってコンパイラ任せにするよ
551uy ◆Qawu9.2l1E
2016/01/04(月) 18:13:29.66ID:zTvWipKl またゴミカス初心者が来たけど
また1から説明して教育しなきゃいけないの?
また1から説明して教育しなきゃいけないの?
552NAS6 ◆n3AmnVhjwc
2016/01/04(月) 18:16:50.81ID:7uWOp/tU recHoge1(term,arg...){
dobefore()...
if(term)recHoge1(term,arg...);
}
loopHoge1(term,arg...){
while(term){
dobefore()...
}
}
再帰は無意味、使う必要なし
recHoge2(term,arg...){
dobefore()...
if(term)recHoge2(term,arg...);
doafter()...
}
loopHoge2(term,arg...){
while(term){
popargstack();
dobefore()...
if(term)continue;
pushargstack();
doafter()...
}
}
再帰で有意味、この場合使える
pushargstack(); popargstack();
ユーザー定義のこれらはめんどくさいから、再帰関数使ってコンパイラ任せにするよ
たったこれだけの内容
dobefore()...
if(term)recHoge1(term,arg...);
}
loopHoge1(term,arg...){
while(term){
dobefore()...
}
}
再帰は無意味、使う必要なし
recHoge2(term,arg...){
dobefore()...
if(term)recHoge2(term,arg...);
doafter()...
}
loopHoge2(term,arg...){
while(term){
popargstack();
dobefore()...
if(term)continue;
pushargstack();
doafter()...
}
}
再帰で有意味、この場合使える
pushargstack(); popargstack();
ユーザー定義のこれらはめんどくさいから、再帰関数使ってコンパイラ任せにするよ
たったこれだけの内容
554NAS6 ◆n3AmnVhjwc
2016/01/04(月) 18:42:48.29ID:7uWOp/tU ttp://nas6.main.jp/Maze.cpp
再帰、ループ、等価迷路
再帰、ループ、等価迷路
555NAS6 ◆n3AmnVhjwc
2016/01/04(月) 18:55:15.40ID:7uWOp/tU recHoge1(term,arg...){
dobefore()...
if(term)recHoge1(term,arg...);
}
loopHoge1(term,arg...){
while(term){
dobefore()...
}
}
再帰は無意味、使う必要なし
recHoge2(term,arg...){
dobefore()...
if(term)recHoge2(term,arg...);
doafter()...
}
loopHoge2(term,arg...){
while(term){
pushargstack();
dobefore()...
if(term)continue;
popargstack();
doafter()...
}
}
再帰で有意味、この場合使える
pushargstack(); popargstack();
ユーザー定義のこれらはめんどくさいから、再帰関数使ってコンパイラ任せにするよ
たったこれだけの内容 、勘違い訂正
dobefore()...
if(term)recHoge1(term,arg...);
}
loopHoge1(term,arg...){
while(term){
dobefore()...
}
}
再帰は無意味、使う必要なし
recHoge2(term,arg...){
dobefore()...
if(term)recHoge2(term,arg...);
doafter()...
}
loopHoge2(term,arg...){
while(term){
pushargstack();
dobefore()...
if(term)continue;
popargstack();
doafter()...
}
}
再帰で有意味、この場合使える
pushargstack(); popargstack();
ユーザー定義のこれらはめんどくさいから、再帰関数使ってコンパイラ任せにするよ
たったこれだけの内容 、勘違い訂正
556NAS6 ◆n3AmnVhjwc
2016/01/04(月) 19:03:49.25ID:7uWOp/tU >>554で、
ループ実装が好きなやつはいないと思うんだけどな
ループ実装が好きなやつはいないと思うんだけどな
557uy ◆Qawu9.2l1E
2016/01/04(月) 21:13:17.67ID:KNqXLa56 RubyかPythonで書き直して
C++とかいうゴミいらねーから
C++とかいうゴミいらねーから
558NAS6 ◆n3AmnVhjwc
2016/01/04(月) 21:51:32.16ID:7uWOp/tU 「{C++規則をかなり抑えてCライク}で書かれたソースコード」
のクロスランゲッジなんて、ほぼ、ライブラリの関数名を書き換えるだけだろ
のクロスランゲッジなんて、ほぼ、ライブラリの関数名を書き換えるだけだろ
559NAS6 ◆n3AmnVhjwc
2016/01/04(月) 21:54:46.92ID:7uWOp/tU あ、あと制御構文もちゃっちゃっと書き換えれば出来上がり
560uy ◆Qawu9.2l1E
2016/01/04(月) 22:07:47.26ID:mZvmD2Em それをなぜ最初から簡潔な言語で書かないで
わざわざ冗長したC++・C言語といった言語でドヤァとソースコード貼りつけてくるのか、理解しがたいんだけど
カスレベルの初心者である事を数レスに渡る自己紹介でもしにきたのかね?
アルゴリズムの抽象化でC++とか使う奴はその時点で初心者だって一瞬で分かるって言ってるのに
自分が知恵遅れだと分かってないままの奴が続々現れるからこういう場所は話題がループする
わざわざ冗長したC++・C言語といった言語でドヤァとソースコード貼りつけてくるのか、理解しがたいんだけど
カスレベルの初心者である事を数レスに渡る自己紹介でもしにきたのかね?
アルゴリズムの抽象化でC++とか使う奴はその時点で初心者だって一瞬で分かるって言ってるのに
自分が知恵遅れだと分かってないままの奴が続々現れるからこういう場所は話題がループする
562デフォルトの名無しさん
2016/01/04(月) 22:23:59.40ID:JpzJLk3f 熱烈なC++アンチって速度要求される場面に出会ったことがないんだろな
もしくはフォートラン信者なんだろな
もしくはフォートラン信者なんだろな
563デフォルトの名無しさん
2016/01/04(月) 22:31:14.13ID:OFaVtQHO オッパイソンはベーシックみたいなもんで非プログラマが使うのに適してるけど、
プログラマが使うには色々しょぼすぎ。
ペイントショッププロのマクロにオッパイソンが採用されたときは、来るかと思ったけど、
それを機に没落していった。
イヌックスの呪いは有名だけど、オッパイソンの呪いもあるのかもしれん。
プログラマが使うには色々しょぼすぎ。
ペイントショッププロのマクロにオッパイソンが採用されたときは、来るかと思ったけど、
それを機に没落していった。
イヌックスの呪いは有名だけど、オッパイソンの呪いもあるのかもしれん。
564デフォルトの名無しさん
2016/01/04(月) 22:35:24.75ID:OFaVtQHO しかし、エクセルのマクロ使いはザラにいるのに、他のアプリはマクロ使いが
ほとんどいないんだよな。
イーマックソとか言うウンコは置いといて。
CADなんかマクロの使いであると思うのだが。
Autocadなんかウンコ使いが泣いて喜ぶLisp搭載してるのにな。
なんでだ。
ほとんどいないんだよな。
イーマックソとか言うウンコは置いといて。
CADなんかマクロの使いであると思うのだが。
Autocadなんかウンコ使いが泣いて喜ぶLisp搭載してるのにな。
なんでだ。
565デフォルトの名無しさん
2016/01/04(月) 22:55:58.31ID:8iRyCi7U とりあえずuyがほんとになにもわかってないことだけわかった
566NAS6 ◆n3AmnVhjwc
2016/01/04(月) 23:00:49.51ID:7uWOp/tU ruby知らんがこんな感じだろ
def recHoge2(term,arg...)
dobefore(arg...)
if term
recHoge2(term,arg...)
end
doafter(arg...)
end
end
def loopHoge2(term,arg...)
while term
pushargstack(arg...)
dobefore(arg...)
if term
next
end
popargstack(arg...)
doafter(arg...)
end
end
def recHoge2(term,arg...)
dobefore(arg...)
if term
recHoge2(term,arg...)
end
doafter(arg...)
end
end
def loopHoge2(term,arg...)
while term
pushargstack(arg...)
dobefore(arg...)
if term
next
end
popargstack(arg...)
doafter(arg...)
end
end
567NAS6 ◆n3AmnVhjwc
2016/01/04(月) 23:01:55.35ID:7uWOp/tU class stack
def initialize
@ret = -1
@crnt = 0
@MAX_STACK = 32768
@stk[MAX_STACK]
end
def pop_stk()
if -1 < crnt
ret = stk[crnt]
crnt = crnt - 1
end
end
def push_stk(v)
if crnt < MAX_STACK - 1
crnt = crnt + 1
stk[crnt] = v
end
end
end
stk = stack
def pushargstack(arg1...argn)
stk.push_stk(arg1)
...
stk.push_stk(argn)
end
def popargstack(arg1...argn)
argn = stk.pop_stk()
...
arg1 = stk.pop_stk()
end
def initialize
@ret = -1
@crnt = 0
@MAX_STACK = 32768
@stk[MAX_STACK]
end
def pop_stk()
if -1 < crnt
ret = stk[crnt]
crnt = crnt - 1
end
end
def push_stk(v)
if crnt < MAX_STACK - 1
crnt = crnt + 1
stk[crnt] = v
end
end
end
stk = stack
def pushargstack(arg1...argn)
stk.push_stk(arg1)
...
stk.push_stk(argn)
end
def popargstack(arg1...argn)
argn = stk.pop_stk()
...
arg1 = stk.pop_stk()
end
568NAS6 ◆n3AmnVhjwc
2016/01/04(月) 23:07:46.09ID:7uWOp/tU def recHoge2(term,arg...)
dobefore(arg...)
if term
recHoge2(term,arg...)
end
doafter(arg...)
end
で、こんだけで済むのに、
ループにしたいからって
スタックのユーザー定義なんて馬鹿だろう
dobefore(arg...)
if term
recHoge2(term,arg...)
end
doafter(arg...)
end
で、こんだけで済むのに、
ループにしたいからって
スタックのユーザー定義なんて馬鹿だろう
569NAS6 ◆n3AmnVhjwc
2016/01/04(月) 23:22:49.68ID:7uWOp/tU 再帰をループにしたかったら
こういうのをいちいち作らなきゃだめだよ
class stack
def initialize
@crnt = 0
@MAX_STACK = 32768
@stk[MAX_STACK]
end
def pop_stk()
if -1 < crnt
ret = stk[crnt]
crnt = crnt - 1
return ret
end
end
def push_stk(v)
if crnt < MAX_STACK - 1
crnt = crnt + 1
stk[crnt] = v
end
end
end
こういうのをいちいち作らなきゃだめだよ
class stack
def initialize
@crnt = 0
@MAX_STACK = 32768
@stk[MAX_STACK]
end
def pop_stk()
if -1 < crnt
ret = stk[crnt]
crnt = crnt - 1
return ret
end
end
def push_stk(v)
if crnt < MAX_STACK - 1
crnt = crnt + 1
stk[crnt] = v
end
end
end
570uy ◆Qawu9.2l1E
2016/01/05(火) 02:57:13.31ID:/kPL7pQm プログラミング半年目くらいだろうかコイツは
多く見積もって1年半
それ以上なら今すぐPC捨てたほうが良いレベル
多く見積もって1年半
それ以上なら今すぐPC捨てたほうが良いレベル
571デフォルトの名無しさん
2016/01/05(火) 02:58:35.02ID:3cj4CitF572デフォルトの名無しさん
2016/01/05(火) 02:59:25.81ID:CnA8UQLB死ねカス
573NAS6 ◆n3AmnVhjwc
2016/01/05(火) 06:30:43.49ID:FnNfbNzM Array.push()、Array.pop()があるんね
>>568で済む内容を、ループで書きたかったら↓しなければならない
def loopHoge2(term,arg...)
while term
pushargstack(arg...)
dobefore(arg...)
if term
next
end
popargstack(arg...)
doafter(arg...)
end
end
stk = Array.new()
def pushargstack(arg1...argn)
stk.push(arg1)
...
stk.push(argn)
end
def popargstack(arg1...argn)
argn = stk.pop()
...
arg1 = stk.pop()
end
>>568で済む内容を、ループで書きたかったら↓しなければならない
def loopHoge2(term,arg...)
while term
pushargstack(arg...)
dobefore(arg...)
if term
next
end
popargstack(arg...)
doafter(arg...)
end
end
stk = Array.new()
def pushargstack(arg1...argn)
stk.push(arg1)
...
stk.push(argn)
end
def popargstack(arg1...argn)
argn = stk.pop()
...
arg1 = stk.pop()
end
574NAS6 ◆n3AmnVhjwc
2016/01/05(火) 06:44:29.17ID:FnNfbNzM def recHoge2(term,arg1...argn)
dobefore(arg1...argn)
if term
recHoge2(term,arg1...argn)
end
doafter(arg1...argn)
end
↑は、こう↓書き換えられる
def loopHoge2(term,arg1...argn)
while term
pushargstack(arg1...argn)
dobefore(arg1...argn)
if term
next
end
popargstack(arg1...argn)
doafter(arg1...argn)
end
end
stk = Array.new()
def pushargstack(arg1...argn)
stk.push(arg1)
...
stk.push(argn)
end
def popargstack(arg1...argn)
argn = stk.pop()
...
arg1 = stk.pop()
end
dobefore(arg1...argn)
if term
recHoge2(term,arg1...argn)
end
doafter(arg1...argn)
end
↑は、こう↓書き換えられる
def loopHoge2(term,arg1...argn)
while term
pushargstack(arg1...argn)
dobefore(arg1...argn)
if term
next
end
popargstack(arg1...argn)
doafter(arg1...argn)
end
end
stk = Array.new()
def pushargstack(arg1...argn)
stk.push(arg1)
...
stk.push(argn)
end
def popargstack(arg1...argn)
argn = stk.pop()
...
arg1 = stk.pop()
end
575NAS6 ◆n3AmnVhjwc
2016/01/05(火) 07:30:28.12ID:FnNfbNzM #同色上書き塗りつぶし
def refill(dest,src,x,y,color,minx,miny,maxx,maxy)
if (x < minx) || (maxx < x) ||(y < miny) || (maxy < y)
return
end
dest[y][x] = color
#上
if (src[y-1][x] == color) && (dest[y-1][x] != color)
refill(dest,src,x,y-1,color,minx,miny,maxx,maxy)
end
#左
if (src[y][x-1] == color) && (dest[y][x-1] != color)
refill(dest,src,x-1,y,color,minx,miny,maxx,maxy)
end
#下
if (src[y+1][x] == color) && (dest[y+1][x] != color)
refill(dest,src,x,y+1,color,minx,miny,maxx,maxy)
end
#右
if (src[y][x+1] == color) && (dest[y][x+1] != color)
refill(dest,src,x+1,y,color,minx,miny,maxx,maxy)
end
end
↑のループ等価が↓
def refill(dest,src,x,y,color,minx,miny,maxx,maxy)
if (x < minx) || (maxx < x) ||(y < miny) || (maxy < y)
return
end
dest[y][x] = color
#上
if (src[y-1][x] == color) && (dest[y-1][x] != color)
refill(dest,src,x,y-1,color,minx,miny,maxx,maxy)
end
#左
if (src[y][x-1] == color) && (dest[y][x-1] != color)
refill(dest,src,x-1,y,color,minx,miny,maxx,maxy)
end
#下
if (src[y+1][x] == color) && (dest[y+1][x] != color)
refill(dest,src,x,y+1,color,minx,miny,maxx,maxy)
end
#右
if (src[y][x+1] == color) && (dest[y][x+1] != color)
refill(dest,src,x+1,y,color,minx,miny,maxx,maxy)
end
end
↑のループ等価が↓
576NAS6 ◆n3AmnVhjwc
2016/01/05(火) 07:31:25.96ID:FnNfbNzM stk =Array.new()
#同色上書き塗りつぶし
def loop_refill(dest,src,x,y,color,minx,miny,maxx,maxy)
term = 0
while !((x < minx) || (maxx < x) ||(y < miny) || (maxy < y))
dest[y][x] = color
#上
if (term < 1) && (src[y-1][x] == color) && (dest[y-1][x] != color)
term = 0
stk.push(x)
stk.push(y)
stk.push(term)
y = y - 1
term = 0
next
end
#左
if (term < 2) && (src[y][x-1] == color) && (dest[y][x-1] != color)
term = 1
stk.push(x)
stk.push(y)
stk.push(term)
x = x - 1
term = 0
next
end
#同色上書き塗りつぶし
def loop_refill(dest,src,x,y,color,minx,miny,maxx,maxy)
term = 0
while !((x < minx) || (maxx < x) ||(y < miny) || (maxy < y))
dest[y][x] = color
#上
if (term < 1) && (src[y-1][x] == color) && (dest[y-1][x] != color)
term = 0
stk.push(x)
stk.push(y)
stk.push(term)
y = y - 1
term = 0
next
end
#左
if (term < 2) && (src[y][x-1] == color) && (dest[y][x-1] != color)
term = 1
stk.push(x)
stk.push(y)
stk.push(term)
x = x - 1
term = 0
next
end
577NAS6 ◆n3AmnVhjwc
2016/01/05(火) 07:31:53.09ID:FnNfbNzM #下
if (term < 3) && (src[y+1][x] == color) && (dest[y+1][x] != color)
term = 2
stk.push(x)
stk.push(y)
stk.push(term)
y = y + 1
term = 0
next
end
#右
if (term < 4) && (src[y][x+1] == color) && (dest[y][x+1] != color)
term = 3
stk.push(x)
stk.push(y)
stk.push(term)
x = x + 1
term = 0
next
end
term = stk.pop()
y = stk.pop()
x = stk.pop()
end
end
if (term < 3) && (src[y+1][x] == color) && (dest[y+1][x] != color)
term = 2
stk.push(x)
stk.push(y)
stk.push(term)
y = y + 1
term = 0
next
end
#右
if (term < 4) && (src[y][x+1] == color) && (dest[y][x+1] != color)
term = 3
stk.push(x)
stk.push(y)
stk.push(term)
x = x + 1
term = 0
next
end
term = stk.pop()
y = stk.pop()
x = stk.pop()
end
end
578NAS6 ◆n3AmnVhjwc
2016/01/05(火) 07:34:06.45ID:FnNfbNzM 再帰関数を無理矢理ループで書くことが
正解だなんてとても思えないんだけど・・・
正解だなんてとても思えないんだけど・・・
579NAS6 ◆n3AmnVhjwc
2016/01/05(火) 07:57:54.39ID:FnNfbNzM580NAS6 ◆n3AmnVhjwc
2016/01/05(火) 08:01:46.66ID:FnNfbNzM destはコピー先だからそういう条件でクリア済みってことで
581NAS6 ◆n3AmnVhjwc
2016/01/05(火) 08:14:57.62ID:FnNfbNzM 2色必要だった・・・
srcのx,yからcolor2の連続部分をdestにcolor1で塗りつぶし
#同色上書き塗りつぶし
def refill(dest,src,x,y,color1,color2,minx,miny,maxx,maxy)
if (x < minx) || (maxx < x) ||(y < miny) || (maxy < y)
return
end
dest[y][x] = color1
#上
if (src[y-1][x] == color2) && (dest[y-1][x] != color1)
refill(dest,src,x,y-1,color1,color2,minx,miny,maxx,maxy)
end
#左
if (src[y][x-1] == color2) && (dest[y][x-1] != color1)
refill(dest,src,x-1,y,color1,color2,minx,miny,maxx,maxy)
end
#下
if (src[y+1][x] == color2) && (dest[y+1][x] != color1)
refill(dest,src,x,y+1,color1,color2,minx,miny,maxx,maxy)
end
#右
if (src[y][x+1] == color2) && (dest[y][x+1] != color1)
refill(dest,src,x+1,y,color1,color2,minx,miny,maxx,maxy)
end
end
srcのx,yからcolor2の連続部分をdestにcolor1で塗りつぶし
#同色上書き塗りつぶし
def refill(dest,src,x,y,color1,color2,minx,miny,maxx,maxy)
if (x < minx) || (maxx < x) ||(y < miny) || (maxy < y)
return
end
dest[y][x] = color1
#上
if (src[y-1][x] == color2) && (dest[y-1][x] != color1)
refill(dest,src,x,y-1,color1,color2,minx,miny,maxx,maxy)
end
#左
if (src[y][x-1] == color2) && (dest[y][x-1] != color1)
refill(dest,src,x-1,y,color1,color2,minx,miny,maxx,maxy)
end
#下
if (src[y+1][x] == color2) && (dest[y+1][x] != color1)
refill(dest,src,x,y+1,color1,color2,minx,miny,maxx,maxy)
end
#右
if (src[y][x+1] == color2) && (dest[y][x+1] != color1)
refill(dest,src,x+1,y,color1,color2,minx,miny,maxx,maxy)
end
end
582NAS6 ◆n3AmnVhjwc
2016/01/05(火) 08:16:57.10ID:FnNfbNzM >>576-577
も同様に直してね
も同様に直してね
583NAS6 ◆n3AmnVhjwc
2016/01/05(火) 08:48:45.20ID:FnNfbNzM recHoge2(term,arg1...argn){
dobefore(arg1...argn);
if(term)recHoge2(term,arg1...argn);
doafter(arg1...argn);
}
この↑再帰関数を無理矢理
loopHoge2(term,arg1...argn){
while(term){
pushargstack(arg1...argn);
dobefore(arg1...argn);
if(term){continue;}
popargstack(arg1...argn);
doafter(arg1...argn);
}
}
ループで書くのはpushargstack()popargstack()書くのもだし
再帰関数でreturnされた時の箇所で
制御をdoafter()に飛ばすように考えるのもめんどくさい
つまり、再帰関数の構造化の部分までなんでわざわざ
コーディングする必要があるのか謎
dobefore(arg1...argn);
if(term)recHoge2(term,arg1...argn);
doafter(arg1...argn);
}
この↑再帰関数を無理矢理
loopHoge2(term,arg1...argn){
while(term){
pushargstack(arg1...argn);
dobefore(arg1...argn);
if(term){continue;}
popargstack(arg1...argn);
doafter(arg1...argn);
}
}
ループで書くのはpushargstack()popargstack()書くのもだし
再帰関数でreturnされた時の箇所で
制御をdoafter()に飛ばすように考えるのもめんどくさい
つまり、再帰関数の構造化の部分までなんでわざわざ
コーディングする必要があるのか謎
584デフォルトの名無しさん
2016/01/05(火) 23:45:47.40ID:zRwuHMxA そうだね、グリーンだね。
任意の再帰はスタックを使えばループに書き直せるし、任意のループは末尾再帰で書き表せるけど
書きやすい方で書いたら良いんじゃない?
配列を舐めるだけのループをわざわざ再帰で書く必要はないし、
二分木を舐めるだけの再帰をわざわざループで書く必要はない。
勿論例外は幾つもあるけどね。
任意の再帰はスタックを使えばループに書き直せるし、任意のループは末尾再帰で書き表せるけど
書きやすい方で書いたら良いんじゃない?
配列を舐めるだけのループをわざわざ再帰で書く必要はないし、
二分木を舐めるだけの再帰をわざわざループで書く必要はない。
勿論例外は幾つもあるけどね。
585uy ◆Qawu9.2l1E
2016/01/06(水) 01:13:15.45ID:kZN9AhFE 死ね → NAS6 ◆n3AmnVhjw
586デフォルトの名無しさん
2016/01/06(水) 01:26:34.40ID:2plodUsJ >>585
語彙少なすぎだろ
語彙少なすぎだろ
587uy ◆Qawu9.2l1E
2016/01/06(水) 05:38:10.76ID:NwAUbAKq 時間とフィンガーポイントを無駄にしたくない
588デフォルトの名無しさん
2016/01/06(水) 11:44:51.16ID:Hrty1iRZ ばいばい
589uy ◆Qawu9.2l1E
2016/01/07(木) 03:29:43.72ID:VBUUQOGk MPC
590デフォルトの名無しさん
2016/01/07(木) 14:29:25.41ID:9s+XESwg591デフォルトの名無しさん
2016/01/07(木) 23:10:34.37ID:ceukK3gk またuyが言い負かされてると聞いて
592uy ◆Qawu9.2l1E
2016/01/08(金) 07:36:31.52ID:37pbuAYe http://kakaku.com/item/K0000791258/
これを使ってるけど打ちにくい
隙間にゴミが入りにくいキーボードで何か探してくれれば長文レス出来るけど
ゲームもやるから同時押しが出来ないキーボードは使えないんだよ
バッファローのこのキーボード系列は
何故かゲーミングキーボードでもない癖にかなりの同時押しが出来る
お前らもこれくらい社会の役に立ってくれ
これを使ってるけど打ちにくい
隙間にゴミが入りにくいキーボードで何か探してくれれば長文レス出来るけど
ゲームもやるから同時押しが出来ないキーボードは使えないんだよ
バッファローのこのキーボード系列は
何故かゲーミングキーボードでもない癖にかなりの同時押しが出来る
お前らもこれくらい社会の役に立ってくれ
593デフォルトの名無しさん
2016/01/08(金) 07:58:14.49ID:qSmN42Fw 長文レスなんざしなくていいから死ね
594デフォルトの名無しさん
2016/01/08(金) 08:06:15.22ID:t0B3KsjR ゲームなどという恥ずかしいご趣味をお持ちのようで
595デフォルトの名無しさん
2016/01/08(金) 12:51:08.30ID:OGMciHiU tail callはrecursive callと直行する概念だと理解してないのが何人かいるな
596デフォルトの名無しさん
2016/01/08(金) 12:54:36.23ID:qoujFuKs 直行てなんやねんwてのが何人もいるな
597デフォルトの名無しさん
2016/01/08(金) 13:19:39.58ID:39T3KdLp 読みやすい方で書いたらいいんちゃうの?
無理にループにしてソース長くしてテスト項目増やす奴の気がしれんわ
無理にループにしてソース長くしてテスト項目増やす奴の気がしれんわ
598デフォルトの名無しさん
2016/01/08(金) 13:22:10.55ID:39T3KdLp 取り敢えずutがカスだってのは旗から見てわかった
補足しておくけどループで済むものを再起にしろと言ってるわけではないからな
補足しておくけどループで済むものを再起にしろと言ってるわけではないからな
599デフォルトの名無しさん
2016/01/08(金) 14:05:20.20ID:qSmN42Fw そりゃrecursiveじゃないtail callなんざ幾らでもあるわ
600デフォルトの名無しさん
2016/01/08(金) 14:44:50.10ID:oo2zXXZh601デフォルトの名無しさん
2016/01/08(金) 19:53:25.00ID:XdIzL1DI 仮にもプログラマならHHK使ってます自慢くらいしろよっていう
そういう俺はreal forceだけど。
そういう俺はreal forceだけど。
602デフォルトの名無しさん
2016/01/08(金) 22:36:48.34ID:ktsgJ36p >>595
まっすぐ行ってどうすんねん…
まっすぐ行ってどうすんねん…
603デフォルトの名無しさん
2016/01/08(金) 22:52:34.47ID:Ydps26p4 ワロタ
604デフォルトの名無しさん
2016/01/09(土) 19:28:51.30ID:j10t/SxZ 芸能界で生きていけるレベルの芸だな。
605uy ◆Qawu9.2l1E
2016/01/13(水) 15:37:06.33ID:KvZEN8k1 自分はプログラマじゃないんだよ
目的を最高効率で達成する事を念頭に置いてるスクリプトキディだ
そして複数人でプログラムを組むときに必要なノウハウなんて持ってない
そもそも自分はそういう事をしなくて良いから、生きてく上で必要無い配慮だから
周りが読みにくいとか知った事ではないし
身分がちげーんだよカス
目的を最高効率で達成する事を念頭に置いてるスクリプトキディだ
そして複数人でプログラムを組むときに必要なノウハウなんて持ってない
そもそも自分はそういう事をしなくて良いから、生きてく上で必要無い配慮だから
周りが読みにくいとか知った事ではないし
身分がちげーんだよカス
606デフォルトの名無しさん
2016/01/13(水) 16:53:37.49ID:QjeDGB/s スクリプトキディの意味も知らないのな
607デフォルトの名無しさん
2016/01/13(水) 16:58:20.95ID:4eNfFdO0 (他人の作った)スクリプトを使うしか能の無いお子様
正しく自分のこと理解してるということでいいのかもしれないですね。
正しく自分のこと理解してるということでいいのかもしれないですね。
608デフォルトの名無しさん
2016/01/13(水) 18:34:23.73ID:QjeDGB/s 正しく自分を理解していたら、あんなバカな生態を晒し続けるわけが無い
スクリプトキディとは、他人の作ったスクリプトでいたずらしてはしゃぐお子様の事だね
スクリプトキディとは、他人の作ったスクリプトでいたずらしてはしゃぐお子様の事だね
609デフォルトの名無しさん
2016/01/13(水) 19:01:27.17ID:U6rexLyV にちゃんに
610デフォルトの名無しさん
2016/01/13(水) 19:03:20.75ID:U6rexLyV 誤送信
2ちゃんに書き込んでる地点で効率最悪といえる
2ちゃんに書き込んでる地点で効率最悪といえる
611デフォルトの名無しさん
2016/01/13(水) 21:24:04.62ID:VbVWsLR9 地点?
612デフォルトの名無しさん
2016/01/13(水) 22:25:51.39ID:IMboGSkT 数学的な再帰定義関数は好き
プログラムの再帰定義は多少罪悪感が
プログラムの再帰定義は多少罪悪感が
613デフォルトの名無しさん
2016/01/14(木) 05:26:27.60ID:uv3Ej0dB 身分は再起する
614デフォルトの名無しさん
2016/01/15(金) 10:47:33.86ID:u0Mj97aD >>605
読みやすさを考慮しなくていいとか言うなら、ソースあげんなksが
読みやすさを考慮しなくていいとか言うなら、ソースあげんなksが
615デフォルトの名無しさん
2016/01/15(金) 20:31:31.62ID:POz82VxF まともなプログラムは再帰使わないて
Javaじゃ標準でhashでもvisitorでも使ってるやん
初心者かな?
Javaじゃ標準でhashでもvisitorでも使ってるやん
初心者かな?
616デフォルトの名無しさん
2016/01/15(金) 20:52:05.45ID:DNDI2k7a >>615
ウェブサイトがハッキングされるのはそのせいかもしれませんね。
ウェブサイトがハッキングされるのはそのせいかもしれませんね。
617デフォルトの名無しさん
2016/01/15(金) 20:59:16.36ID:POz82VxF ワロタ
何別人ぶってるんだコイツ
何別人ぶってるんだコイツ
618デフォルトの名無しさん
2016/01/15(金) 21:40:58.93ID:bARE8Ecx Javaがまともじゃないとか何様だよ
619デフォルトの名無しさん
2016/01/15(金) 22:51:22.58ID:DNDI2k7a Haskellを知ればJavaなんぞ子供のおもちゃにも及ばない。
620デフォルトの名無しさん
2016/01/15(金) 22:52:36.63ID:nz6sd5// でも cloujure が気になるのです‥
621デフォルトの名無しさん
2016/01/16(土) 20:53:37.66ID:mv0cs2FW データベース扱いにくいゴミ
622デフォルトの名無しさん
2016/01/16(土) 22:18:41.95ID:8IHN4wdz データベースは扱いにくいゴミだそうです。
623デフォルトの名無しさん
2016/01/17(日) 15:36:45.95ID:LBaM8j14 いや、もしかしたら
データベースを扱うのに困難を伴うゴミ人間って意味かも
データベースを扱うのに困難を伴うゴミ人間って意味かも
624デフォルトの名無しさん
2016/01/17(日) 18:00:23.51ID:UWpoaTz9 もしかして、もしかしてだけどさ、Haskelのこと言ってるんじゃね?
625デフォルトの名無しさん
2016/01/18(月) 05:28:47.91ID:lC5RiWYz Haskellほどデータベース扱いやすい言語も少ないからそれはない
626デフォルトの名無しさん
2016/01/18(月) 20:02:16.24ID:DTRfKFLk 世界一のデータベースを持つと言われるGoogleがHaskellで動いているくらいだからね。
レスを投稿する
ニュース
- 【速報】流行語年間大賞に高市早苗首相「働いて働いて働いて働いて働いてまいります/女性首相」 [Ailuropoda melanoleuca★]
- 【おこめ】ベトナムから密輸のコメを「国産」と偽り販売容疑、ベトナム人ら2人追送検…300トン売って1億3000万円稼いだか 大阪 [ぐれ★]
- モーニングショーで女性弁護士、「世界中の国を見渡しても日本ほど中国ともめている国は今はどこもない」「挑発しちゃっている状況」 [muffin★]
- 高市首相「いいから黙って全部オレに投資しろ」“進撃の巨人”のセリフで対日投資呼びかけ [おっさん友の会★]
- 【流行語大賞】2025 T&D保険グループ新語・流行語大賞、高市早苗首相の「働いて働いて働いて働いて働いて」が年間大賞! [煮卵★]
- 【速報】長期金利、一時1.850%に上昇 ★2 [蚤の市★]
- 【悲報】タイ🇹🇭、ガチで終わる、出生率が遂に0.9を割り込み日本人以下の出生率へ [339035499]
- スパイ「なんだこの国…勝手に自滅に向かってるぞ」👈どの国を想像した? [834922174]
- たしかにネトウヨの巨大化は把握してたけど、まさか2025年にここまで一気に気持ち悪い国になると思ってた? [452836546]
- 高市早苗ちゃん。 流行語大賞をゲット [485983549]
- 青山繁晴環境副大臣「南鳥島のレアアースは、中国産の約20倍の純度がある」 [834922174]
- 【悲報】立憲「トンデモ論者に乗っ取られた高市政権」高橋洋一「プリンストン大時代のオレの先生はノーベル経済学賞受賞なのでよろしく [733893279]
