FoldWhile
詳細
- FoldWhile[f,x,{a1,a2,…},test]はFoldWhileList[f,x,{a1,a2,…},test]の最終要素を返す.
- FoldWhile[f,x,alist,test]は,test[x]がTrueを返さない場合は x を返す.
- FoldWhile[f,x,alist,test]はFoldWhile[f,x,alist,test,1]と等価である.
- FoldWhile[f,x,alist,test,m]はFoldWhile[f,x,alist,test,m,0]と等価である.
- FoldWhile[f,x,alist,UnsameQ,All]は,同じ結果が2回以上現れるまで f を適用し続ける.
- Throwを使って終了前にFoldWhileから脱出することができる.
- FoldWhile[f,test][list]はFoldWhile[f,list,test]と等価である.
- FoldWhile[f,test][x,list]はFoldWhile[f,x,list,test]と等価である.
例題
すべて開く すべて閉じる例 (3)
スコープ (9)
12から整数を引いていく.整数は1から始めて順に1ずつ大きくし,答が正の間これを続ける:
FoldWhile[Subtract, 12, {1, 2, 3, 4, 5, 6}, Positive]Echoを使って中間結果を表示する:
FoldWhile[Echo @* Subtract, 12, {1, 2, 3, 4, 5, 6}, Positive]FoldWhile[Subtract, 12, {1, 2, 3, 4, 5, 6}, Echo @* Positive]原点から始まるランダムウォークを計算し,ノルムが10を超える最初の点を返す:
FoldWhile[Plus, {0, 0}, AngleVector /@ RandomReal[2Pi, 200], Norm /* LessThan[10]]Norm[%]ランダムな単位ベクトルリストについて,ノルムが0.1より大きいCross(外積)を求める:
FoldWhile[Cross, Normalize /@ RandomReal[1, {100, 3}], Norm /* GreaterThan[0.1]]Norm[%]機械演算の連続する2つの結果に対してUnequalがFalseを返すまで1/n8項を足し続ける:
FoldWhile[Plus, 0., 1 / Range[200] ^ 8, Unequal, 2]すべての結果が異なる限り0にランダムな整数を加え,繰り返された最初の値を返す:
SeedRandom[123];FoldWhile[Plus, 0, DeleteCases[RandomInteger[{-10, 10}, 100], 0], UnsameQ, All]連続する正の整数で5!を割り続け,整数ではなくなった最初の結果を返す:
FoldWhile[Divide, 5!, Range[10], IntegerQ, 1, 0]FoldWhile[Divide, 5!, Range[10], IntegerQ, 1, -1]FoldWhile[Divide, 5!, Range[10], IntegerQ, 1, -2]Catch[FoldWhile[If[# > 25, Divide[#1, #2], Throw[#1]]&, 5!, Range[10], IntegerQ]]FoldWhileの演算子形を使う:
FoldWhile[Subtract, Positive][12, {1, 2, 3, 4, 5, 6}]FoldWhile[Plus, LessThan[20]][Range[10]]FoldWhileには,第3および第4引数が明示的な整数の場合は3引数または4引数の演算子形がある:
FoldWhile[Subtract, Positive, 1, -1][12, {1, 2, 3, 4, 5, 6}]特性と関係 (4)
test[x]がTrueを返さなければ,FoldWhile[f,x,alist,test]は x を返す:
FoldWhile[Divide, 0, {2, 3, 4, 5}, Positive]FoldWhile[f,x,alist,test,…]はLast[FoldWhileList[f,x,alist,test,…]]と等価である:
FoldWhileList[Divide, 5!, Range[10], IntegerQ]Last[%]FoldWhile[Divide, 5!, Range[10], IntegerQ]FoldWhile[f,x,list,True&]はFold[f,x,list]と等価である:
FoldWhile[Plus, 0, Range[10], True&]Fold[Plus, 0, Range[10]]FoldWhile[f,x,list,test,m,n]は,関数 f が1つの引数しか取らないときは,NestWhile[f,x,test,m,Length[list],n]と等価である:
FoldWhile[Sqrt[#]&, 10 ^ 6, Range[4], GreaterThan[2], 1, 0]NestWhile[Sqrt[#]&, 10 ^ 6, GreaterThan[2], 1, 4, 0]関連するガイド
-
▪
- 関数反復 ▪
- 関数型プログラミング
テキスト
Wolfram Research (2020), FoldWhile, Wolfram言語関数, https://reference.wolfram.com/language/ref/FoldWhile.html.
CMS
Wolfram Language. 2020. "FoldWhile." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/FoldWhile.html.
APA
Wolfram Language. (2020). FoldWhile. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/FoldWhile.html
BibTeX
@misc{reference.wolfram_2026_foldwhile, author="Wolfram Research", title="{FoldWhile}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/FoldWhile.html}", note=[Accessed: 07-October-2026]}
BibLaTeX
@online{reference.wolfram_2026_foldwhile, organization={Wolfram Research}, title={FoldWhile}, year={2020}, url={https://reference.wolfram.com/language/ref/FoldWhile.html}, note=[Accessed: 07-October-2026]}