const data = [
[ '6', 'Shorter', '157' ],
[ '7', 'Fraser', '157' ],
[ '6', 'Chandter', '156' ]
// ...
];
const result = data.reduce((acc, cur) => {
acc.forEach((el, idx) => {el.push(cur[idx])});
return acc;
}, [[], [], []]);
// [["6","7","6"],["Shorter","Fraser","Chandter"],["157","157","156"]]
var numbers = [1,-3,5,-6,-10,13,4,-8];
var arr = numbers.slice(), sum = 0;
while((sum += arr.shift()) !== 0); // изысканный пустой while !
var index = numbers.length - arr.length - 1; // 5
function sum0(arr, idx = 0, sum = 0) {
if ((sum += numbers[idx]) === 0) return idx;
return sum0(arr, idx + 1, sum);
}
sum0([1,-3,5,-6,-10,13,4,-8]) // 5
Этот метод можно вызвать с ключом доступа пользователя, полученным в Standalone-приложении через Implicit Flow, или с использованием окна подтверждения. Требуются права доступа: wall.
Доступ к обычным и расширенным методам работы со стеной.
Данное право доступа по умолчанию недоступно для сайтов (игнорируется при попытке авторизации для приложений с типом «Веб-сайт» или по схеме Authorization Code Flow).
const maker = message => new Promise((res, rej) => {
const v = window.prompt(message);
if (v.length) res(v);
else rej(["Пустой ответ", message, v]);
});
const pAge = maker("Введите ваш возраст");
const pPwd = pAge.then(age => {
if (parseInt(age) > 18) return maker("Введите пароль");
else return Promise.reject("Возраст не подходит");
});
Promise.all([pAge, pPwd])
.then((age, pwd) => {
console.log("Получили и норм. возраст и пароль:", age, pwd);
// пляшем дальше
})
.catch(err => console.error("Что могло пойти не так?", err))
;
function appendValue($key, $value) {
$filepath = "./config.txt"; // путь к файлу
if (!file_exists($filepath)) throw "File not found";
$divider = PHP_EOL; // разделитель строк
$rows = explode($divider, file_get_contents($filepath));
$tmpfname = tempnam(sys_get_temp_dir(), 'Toster');
$fh = fopen($tmpfname, 'w');
$replaced = 0;
foreach($rows as $row) {
$data = explode(':', $row);
if (0 === count($data)) continue;
if ($data[0] == $key) {
array_push($data, $value);
$row = implode(':', $data);
$replaced++;
}
fputs($fh, $row . $divider);
}
fclose($fh);
// поменять файлы местами
unlink($filepath);
rename($tmpfname, $filepath);
return $replaced; // кол-во обновлённых строк. Вдруг, неуникален индекс?
}
appendValue(2, 33);
В языках программирования импликация используется, как правило, неявно. Например, конструкция, предполагающая истинность условия B в данном участке программы:if ( выражение A ) { if ( выражение B ) { сделать_что-то_полезное } else { <font color=Red>сбой</font> }; }
будет успешно выполняться тогда и только тогда, когда верна импликация A→B. В то же время эти условия можно спокойно написать в одной строке, объединив их оператором конъюнкции.if ( выражение A ) and ( выражение B ) { сделать_что-то_полезное }
При стандартных опциях компилятора (Delphi, C++ Builder) проверка идет до тех пор, пока результат не станет очевидным, и если А ложно, то (А и В) ложно вне зависимости от В, и не нужно ставить еще один условный оператор.//выражение A - ложно if ( выражение A ) { //Дальше проверка не идет ... if ( выражение B ) { сделать_что-то_полезное } ... }
В функциональных языках импликация может быть не только правилом вычислений, но и видом отношения между данными, то есть обрабатываться (в том числе и выполняться) и создаваться по ходу выполнения программы.
https://vk.com/js/api/openapi.js?159
— никак. GET метод там прописан и не конфигурируется. При кросс-доменных запросах ответ подгружается через JSONP включением скрипта в тело докумета, где все параметры запроса идут в его адресе теми же GET параметрами. См. исходник вышеозначенного скрипта, 554 строка метод makeRequest()
и 605 строка метод attachScript()
https://api.vk.com/method/METHOD_NAME?PARAMETERS&access_token=ACCESS_TOKEN&v=V
как это описано в документации. Правда, при вызове wall.post()
же открывается окно подтверждения и всё расчитано на браузер пользователя. Как вы раньше выполняли запросы и не сталкивались с требованием капчи или окна подтверждения? P
делится без остатка на (F - P)
function f(F, P) {
const D = F - P; // стоимость напитка без посуды
// сколько останется денег если 1 раз купить, выпить и сдать?
function drink(m) {
const n = Math.floor(m / F);
if (n <= 0) throw "Nope";
return m - n * D;
}
for( let M = P + D * Math.ceil((F + 1) / D); M <= D * Math.floor(2 * 109 / D); M += D) {
try {
if (F === drink(drink(drink(drink(M))))) return M;
} catch(e) {
continue;
}
}
}
f(7, 3) // 83
import math
F,P = map(int, input("Введите два целых через пробел:").split())
def bruteforce(F, P):
D = F - P
def drink(m):
n = math.floor(m / F)
if 0 == n:
raise Exception()
return m - n * D
for M in range(P, int(1e9), D):
try:
rem = drink(drink(drink(drink(M))))
if (F == rem):
return M
except Exception as E:
pass
return "Нет решения"
print(bruteforce(F, P))
toLowerCase()
map()
это много → многоreduce()
это много → одинvalues
получить массив объектов с полями родителя (это map()
).reduce()
).let result = segments
.map(e => e.value.map(
v => ({
value: v,
text : { hi: e.text.hi},
diff : e.diff
})
))
.reduce((prev, curr) => prev.concat(curr), [])
;
this
.function outer() {
var a = 1; // переменная в лексическом окружении ф-ии inner()
// внутри inner() можно использовать значение a
return function inner() {
console.log("a == ", a, "this == ", this);
}
}
var f1 = outer(); // f1 - функция
f1(); // a == 1, this == window или self
var f2 = f1.bind({title: "Ololo"}); // f2 - новая функция
f2(); // a == 1, this.title == "Ololo"