1D List(1次元配列)のデータを指定セグメント単位で合成(加算)するAppleScriptです。
何を言っているのか作った本人にしか通じない雰囲気が漂っていますが、単にデータの集計単位を変更するためのものです。
24時間を1時間単位で集計したデータを3時間単位で区切って集計するとか、午前午後(2セグメント)でまとめて集計するとかといった用途に使います。
いちじるしく、日常的に書き捨てしているレベルの処理ではありますが、再利用できる部品にまとめておきました。
AppleScript名:1Dリスト内の項目を指定セグメント単位で合成 |
— – Created by: Takaaki Naganoya – Created on: 2019/12/02 — – Copyright © 2019 Piyomaru Software, All Rights Reserved — set aList to {0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 20, 10, 5, 3, 2, 1} set a2List to gatherEachItemsBy(aList, 3) of me –> {0, 0, 3, 12, 21, 33, 35, 6} set a3List to gatherEachItemsBy(aList, 2) of me –> {0, 0, 0, 1, 5, 9, 13, 18, 23, 30, 8, 3} set a4List to gatherEachItemsBy(aList, 4) of me –> {0, 1, 14, 31, 53, 11} set a4List to gatherEachItemsBy(aList, 5) of me –> false set a5List to gatherEachItemsBy(aList, 6) of me –> {0, 15, 54, 41} set a6List to gatherEachItemsBy(aList, 7) of me –> false set a7List to gatherEachItemsBy(aList, 8) of me –> {1, 45, 64} set a8List to gatherEachItemsBy(aList, 12) of me –> {15, 95} set a9List to gatherEachItemsBy(aList, 24) of me –> {110} set a10List to gatherEachItemsBy(aList, 0) of me –> {110} on gatherEachItemsBy(aList as list, aStep as number) set bList to {} set aLen to length of aList if aStep = 0 then set aStep to aLen if aLen mod aStep is not equal to 0 then return false repeat with i from 1 to aLen by aStep set tmpV to 0 repeat with ii from 0 to (aStep – 1) set anItem to item (i + ii) of aList set tmpV to tmpV + anItem end repeat set the end of bList to tmpV end repeat return bList end gatherEachItemsBy |
More from my site
(Visited 33 times, 1 visits today)