掲題のフローの解説編その1です。
フローをGitHubで公開しました。下記リンク先からダウンロードしてください。
今回作成したフローをGitHubで公開しました。下記リンク先からダウンロードしてください。
github.com
解説の経緯
今回の投稿は概要編の続きです。
フロー図
アクションの設定を閉じた状態のフロー図
このフローで実施している処理の大項目は以下の通りです。
- 処理対象である数字の配列を定義
- フローで使う変数を定義
- 繰り返し処理「連番になっている箇所を配列内配列に置き換える」
- 繰り返し処理「配列内配列を『先頭~末尾』の形式に置き換える」
- 配列を文字列に変換
「解説編その1」で解説する範囲
「解説編その1」解説する範囲はこの3つです。
- 処理対象である数字の配列を定義
- フローで使う変数を定義
- 繰り返し処理「連番になっている箇所を配列内配列に置き換える」
- 繰り返し処理「配列内配列を『先頭~末尾』の形式に置き換える」
- 配列を文字列に変換
「解説編その1」の入力と出力
入力
入力となる情報はこのフローの処理対処である数字の配列です。
「連番になっている数字の並び」と「連番でない数字の並び」が混在しています。
createArray(1,2,3,4,7,9,11,14,15,16,18,19,21,22)
出力
「解説編その1」の出力は繰り返し処理「配列内配列を『先頭~末尾』の形式に置き換える」で作成される配列です。
連番になっている数字の並びを配列に置き換えました。連番ではない数字(7、9、11)についても要素の個数がひとつの配列にしています。
["[1,2,3,4]","[7]","[9]","[11]","[14,15,16]","[18,19]","[21,22]"]
「解説編その1」の図解
今回の範囲のメインである繰り返し処理「連番になっている箇所を配列内配列に置き換える」を図解します。
この繰り返し処理によって「連続する数字の並びを子配列にした配列」配列に要素を追加していきます。
この繰り返し処理で実施している内容は以下の通りです。これは連番であるかどうかの判定です。
判定条件:
現在のアイテムが
「一時領域の最後の要素の数字」+1
に等しい
分岐:
True の場合 ・・・ 「現在のアイテム」を「一時領域」配列に追加する
False の場合 ・・・ 「一時領域」配列を「連続する数字の並びを子配列にした配列」配列に追加する。そのうえで、「一時領域」を「現在のアイテム」で上書きする
先頭の要素について判定の対象としません。「一時領域」配列に追加します。こちらについてはステップごとの解説で後述します。
繰り返し処理の「現在のアイテム」をひとつ進ませます。条件式の判定を行います。True なので一時領域に追加します。
次のアイテムに進めます。True なので一時領域に追加します。
次のアイテムに進めます。True なので一時領域に追加します。
次のアイテムに進めます。False なので「連続する数字の並びを子配列にした配列」配列に追加します。
次のアイテムに進めます。False なので「連続する数字の並びを子配列にした配列」配列に追加します。
次のアイテムに進めます。False なので「連続する数字の並びを子配列にした配列」配列に追加します。
同様にどんどん進めていきます。要素の最後までいったら繰り返し処理は終了です。これで目的の配列が取得できました。
図で解説した値の変化を動画で表したのがこちらです。
※概要編に載せたものと同じです
streamable.com
これが今回の範囲で得られた出力です。
最後に
次回「解説編その2」はこの範囲のフローをステップごとに解説します。
今回は以上です。