static L<Int> cyclicLocalMinima(float[] l) { int n = l(l); new L<Int> minima; if (allSame(l)) ret minima; int i = 0; while (i < n && l[mod(i+1, n)] >= l[i]) ++i; // found the first downslope at start -> start+1 int start = i, flatSince = i; do { i = mod(i+1, n); float diff = l[mod(i+1, n)]-l[i]; if (diff < 0) flatSince = i; else if (diff > 0) { if (flatSince >= 0) { int middle = mod(flatSince+mod(i-flatSince, n)/2, n); minima.add(middle); flatSince = -1; } } } while (i != start); ret minima; }
download show line numbers debug dex old transpilations
Travelled to 13 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
Snippet ID: | #1006789 |
Snippet name: | cyclicLocalMinima |
Eternal ID of this version: | #1006789/2 |
Text MD5: | a3b84fed8af39a4318ca78fa2047afd6 |
Author: | stefan |
Category: | javax / maths |
Type: | JavaX fragment (include) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2017-02-04 04:49:11 |
Source code size: | 595 bytes / 22 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 500 / 532 |
Version history: | 1 change(s) |
Referenced in: | [show references] |