ルドルフもわたるふもいろいろあってな

Microsoft 365、Power Platform、PowerShellについて調べたことや検証したことなどを投稿します。技術の話は面白い。

【Power Automate】【クイズ・パズル】【解説編その1】数字の配列で連番部分をルールに従って整形する

掲題のフローの解説編その1です。

フローをGitHubで公開しました。下記リンク先からダウンロードしてください。

今回作成したフローをGitHubで公開しました。下記リンク先からダウンロードしてください。
github.com

解説の経緯

今回の投稿は概要編の続きです。

フロー図

アクションの設定を閉じた状態のフロー図

このフローで実施している処理の大項目は以下の通りです。

  1. 処理対象である数字の配列を定義
  2. フローで使う変数を定義
  3. 繰り返し処理「連番になっている箇所を配列内配列に置き換える」
  4. 繰り返し処理「配列内配列を『先頭~末尾』の形式に置き換える」
  5. 配列を文字列に変換


「解説編その1」で解説する範囲

「解説編その1」解説する範囲はこの3つです。

  1. 処理対象である数字の配列を定義
  2. フローで使う変数を定義
  3. 繰り返し処理「連番になっている箇所を配列内配列に置き換える」
  4. 繰り返し処理「配列内配列を『先頭~末尾』の形式に置き換える」
  5. 配列を文字列に変換

「解説編その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」はこの範囲のフローをステップごとに解説します。


今回は以上です。

追記:「解説編その2」を投稿しました。

wataruf.hatenablog.com