function symbolName(symbol)
{
let fullString = symbol.toString();
return fullString.substring("Symbol(".length, fullString.length - ")".length);
}
function lowerSymbolName(symbol)
{
return symbolName(symbol).toLowerCase();
}
function setToString(set)
{
let result = ""; for (let value of set) { if (result)
result += ", ";
result += value;
}
return result;
}
function mergeIntoSet(target, source)
{
let didAdd = false; for (let value of source) { if (target.has(value)) continue;
target.add(value);
didAdd = true;
}
return didAdd;
}
function nonEmptyRangesOverlap(leftMin, leftMax, rightMin, rightMax)
{ if (leftMin >= leftMax) thrownew Error("Bad left range"); if (rightMin >= rightMax) thrownew Error("Bad right range");
function rangesOverlap(leftMin, leftMax, rightMin, rightMax)
{ if (leftMin > leftMax) thrownew Error("Bad left range"); if (rightMin > rightMax) thrownew Error("Bad right range");
if (leftMin == leftMax)
return false; if (rightMin == rightMax)
return false;
function removeAllMatching(array, func)
{
let srcIndex = 0;
let dstIndex = 0; while (srcIndex < array.length) {
let value = array[srcIndex++]; if (!func(value))
array[dstIndex++] = value;
}
array.length = dstIndex;
}
function bubbleSort(array, lessThan)
{ function swap(i, j)
{ var tmp = array[i];
array[i] = array[j];
array[j] = tmp;
}
let begin = 0;
let end = array.length; for (;;) {
let changed = false;
function bubble(i, j)
{ if (lessThan(array[i], array[j])) {
swap(i, j);
changed = true;
}
}
if (end < begin) thrownew Error("Begin and end are messed up");
let limit = end - begin; for (let i = limit; i-- > 1;)
bubble(begin + i, begin + i - 1); if (!changed)
return;
// After one run, the first element in the list is guaranteed to be the smallest.
begin++;
// Now go in the other direction. This eliminates most sorting pathologies.
changed = false;
if (end < begin) thrownew Error("Begin and end are messed up");
limit = end - begin; for (let i = 1; i < limit; ++i)
bubble(begin + i, begin + i - 1); if (!changed)
return;
// Now the last element is guaranteed to be the largest.
end--;
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.