// Матрица переходов конечного автомата
// -1 - допустимое конечное состояние
// null - недопустимое состояние
const dka = [
[-1, 1, 5, 4, 10, 9, 15, 14], // 0
[-1, 2, 5, 4, 10, 9, 15, 14], // 1
[-1, 3, 5, 4, 10, 9, 15, 14], // 2
[-1, null, 5, 4, 10, 9, 15, 14], // 3
[-1, 8, 8, 7, null, null, null, null], // 4
[-1, null, null, 6, 10, 9, 15, 14], // 5
[-1, null, null, 7, 10, 9, 15, 14], // 6
[-1, null, null, 8, 10, 9, 15, 14], // 7
[-1, null, null, null, 10, 9, 15, 14], // 8
[-1, null, null, 13, 13, 12, null, null], // 9
[-1, null, null, null, null, 11, 15, 14], // 10
[-1, null, null, null, null, 12, 15, 14], // 11
[-1, null, null, null, null, 13, 15, 14], // 12
[-1, null, null, null, null, null, 15, 14], // 13
[-1, null, null, null, null, 18, 18, 17], // 14
[-1, null, null, null, null, null, null, 16], // 15
[-1, null, null, null, null, null, null, 17], // 16
[-1, null, null, null, null, null, null, 18], // 17
[-1, null, null, null, null, null, null, null], // 18
];
// Алфавит
const alphabet = 'MDCLXVI';
// Разбивает строку на лексемы
// (номера символов в алфавите, начиная с 1)
// для отсутствующих символов возвращает 0
const lexer = (str) => str.split('').map((l) => alphabet.indexOf(l) + 1);
// Проверяет корректность числа в римской записи
const check = (str) => {
const lexems = lexer(str);
let state = 0;
let idx = 0;
while (true) {
const lex = lexems[idx] ?? 0;
state = dka[state][lex];
if (state === null) {
return false;
}
if (state === -1) {
return idx === str.length;
}
idx += 1;
}
}
$localKeys = array_column($arr1, 'product');
$remoteKeys = array_column($arr2, 'product');
$totalKeys = array_values(array_unique(array_merge($localKeys, $remoteKeys)));
$localLinks = array_combine(
$localKeys,
array_column($arr1, 'local_link')
);
$remoteLinks = array_combine(
$remoteKeys,
array_columns($arr2, 'remote_link')
);
$result = array_map(
fn($key) => [
'product' => $key,
'local_link' => $localLinks[$key] ?? null,
'remote_link' => $remoteLinks[$key] ?? null
]
);
const shuffle = (arr) => {
for (let i = 0; i < arr.length - 1; i += 1) {
const j = Math.floor(Math.random() * (i + 1));
[arr[i], arr[j]] = [arr[j], arr[i]];
}
}
const test = () => {
let p = 0;
for (let i = 0; i < 100000; i += 1) {
const arr = Array(26).fill().map((el, idx) => idx % 2);
shuffle(arr);
p += arr[0] === arr[1] ? 1 : 0;
}
return p / 100000;
}
console.log(test()); // 0.47915
console.log(test()); // 0.48109
console.log(test()); // 0.47811
console.log(test()); // 0.47881
console.log(test()); // 0.48162
console.log(test()); // 0.48174
document.querySelector('#abc').innerText
// Uncaught TypeError: document.querySelector(...) is null
const el = document.querySelector('#abc');
const text = el === null ? 'default Text' : el.innerText;
const text = document.querySelector('#abc')?.innerText ?? 'default Text';
const removeDuplicates = (arr) =>
arr.reduce(
(acc, cur) => (acc.includes(cur) ? acc : (acc.push(cur), acc)),
[],
);
console.log(removeDuplicates([1,2,3,4,5,1,1,2,2,3,3,65,9,65,1,5,65, 117, 117, 118,118, 12333, 12333]));
// Array(10) [ 1, 2, 3, 4, 5, 65, 9, 117, 118, 12333 ]
The maximum row size for an InnoDB table, which applies to data stored locally within a database page, is slightly less than half a page for 4KB, 8KB, 16KB, and 32KB innodb_page_size settings.