Задача B
function findMM(arr) {
let minDelta = Infinity, maxDelta = -Infinity;
let i1 = 0, i2 = 0, j1 = 0; j2 = 0;
let iMax = 0; // индекс максимального элемента
let iMin = 0; // индекс минимального элемента
for (let j = 1; j < arr.length; ++j) {
// минимальная дельта - разница между минимальным элементом
// среди ранее найденных, и текущим
if (arr[iMin] - arr[j] < minDelta) {
i1 = iMin;
j1 = j;
minDelta = arr[iMin] - arr[j];
}
// максимальная дельта - разница между максимальным элементом
// среди ранее найденных, и текущим
if (arr[iMax] - arr[j] > maxDelta) {
i2 = iMax;
j2 = j;
maxDelta = arr[iMax] - arr[j];
}
if (arr[j] < arr[iMin]) {
iMin = j;
}
if (arr[j] > arr[iMax]) {
iMax = j;
}
}
return [[i1, j1], [i2, j2]];
} (?:[^/]|(?<!/)/(?!/))*МОСКВА(?:[^/]|(?<!/)/(?!/))*[^\/]*(?<=^|[.?!])(?![^.?!]*?\bslovo2\b[^.?!]+?\bslovo\b)[^.?!]*?\bslovo\b[^.?!]*\b перед/после них на (?<![a-zа-яё0-9]) или (?![a-zа-яё0-9]) соответственно.(?<=^|[.?!]) - перед началом искомого матча стоит конец пред. предложения или начало строки(?![^.?!]*?\bslovo2\b[^.?!]+?\bslovo\b) - матч не содержит slovo2, после которого есть slovo[^.?!]*?\bslovo\b[^.?!]* - матч содержит slovo Микро таски же должны быть в первую очередь после синхр кода ?
interface IStorageConfig<T, K> {
oftype: new () => IStorage<T, K>;
}
const matchStorageConfig: IStorageConfig<Match, number> = {
oftype: MatchStorage
}
const s = new matchStorageConfig.oftype();{[K in keyof T]: ...} - это специальный особый паттерн, где ты итерируешься по ключам "локального типа" внутри генерика (аналог локальной переменной внутри функции). Важен тот факт, что тип именно локальный - либо параметр генерика, либо что-то, извлеченное с помощью infer.type MappedGenericStringType1<T, Keys extends keyof T = keyof T> = {
[K in Keys]: any;
};
// или так
type MappedGenericStringType2<T> = keyof T extends infer Keys extends keyof T ? {
[K in Keys]: any;
} : never; const array: Array<IQuest | IPost | IAlbum | IContest>;
array.forEach((item) => {
// сейчас item - IQuest | IPost | IAlbum | IContest
if (item.namespace === 'quest') {
// здесь item - IQuest, typescript сам об этом догадался по условию
} else if (item.namespace === 'post') {
// здесь item - IPost
} // и т.д.
})