Как найти сумму всех целых чисел в строке, которая делится на 3 [закрыто]

Когда числа находятся в отрицательном домене (например, бит подписания равен 1), они принимают минимальное значение, когда «фактическое» двоичное представление (т.е. игнорирование бита подписи, касающееся только части, в которой хранится номер) равно 0.

Например,

Подписанный двоичный файл: 10000000 представляет -128 в десятичном формате.

Это имеет смысл, поскольку для каждого приращения двоичного представления имеется приращение десятичное число (помните -127 - еще один, а -128). Если вы имеете дело только в десятичном значении и игнорируете любые правила, запрещающие поведение переполнения, вы увидите, что по мере приближения числа к максимальному положительному значению он немедленно принимает максимальное отрицательное значение и рассчитывает до 0.

Еще одна точка вы можете видеть, что двоичное представление для -1 будет 11111111. Если мы увеличим это на единицу, получим 1 00000000, где ведущий будет отброшен, указав нам номер 0.

Быстрый способ определить, что является значением знакового отрицательного числа, - взять двоичный (игнорируя бит подписи) и добавьте его к максимальному отрицательному числу.

Например,

Если у нас есть двоичное представление 10000001, где значение без знака - 129, мы может видеть, что игнорирование бит подписи у нас есть 1, который мы добавляем к -128, давая ответ -127.

Обратите внимание: я игнорирую тот факт, что иногда переполнение не разрешено, а неопределенное поведение может результат. Я также имею дело с подписанными символами в этом ответе. Если у вас есть случай, когда вы имеете дело с неподписанными символами, тогда полное двоичное выражение используется, чтобы дать ему значение (например, 10000001 = 129).

0
задан Jack Bashford 21 February 2019 в 04:44
поделиться

1 ответ

Конечно - используйте split, reduce и filter с % (по модулю) для делимости:

const str = "The best 6 of 8 will get 9 points";

const strArr = str.split("");
const threesArr = strArr.filter(e => parseInt(e) % 3 == 0);
const sumOfThrees = threesArr.reduce((acc, curr) => acc + parseInt(curr), 0);

const allNumbers = strArr.filter(e => parseInt(e));
const lastNumber = allNumbers[allNumbers.length - 1];

console.log("Sum: " + sumOfThrees);
console.log("Last: " + lastNumber);
[118 ]
0
ответ дан Jack Bashford 21 February 2019 в 04:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: