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"
[ a*x + b, a*sin(b*x) + c]
на данных, подбирая коэффициенты, минимизируя отклонения. Посчитать сумму квадратов отклонений данных от теории, сделать вывод, попадает идеально или нет.messages
и вызывать метод messages.getHistory() с указанием id
нужной беседы. valueOf()
, который для обоих возвращает не примитив (тогда бы сравнивали эти примитивы) а this
, себя же, объект. Поэтому во вторую очередь вызывается метод toString()
, который возвращает примитивы: пустую строку для массива и "[object Object]" для объекта.Когда происходит преобразование типов (т.е в случаях использования нестрогого сравнения), JavaScript преобразует типы String, Number, Boolean и Object, следующим образом:
- При сравнении числа (Number) и строки (String), JavaScript пытается преобразовать числовой литерал строки в число. Затем полученное число округляется до ближайшего возможного значения типа Number.
- Если один из операндов является логическим (Boolean), то он преобразуется в значение типа (Number). Если значение логического операнда равняется истине (true), то значение этого операнда преобразуется в 1. Иначе - в 0 (ложь / false).
- Если объект сравнивается с числом или строкой, JavaScript пытается получить значение по умолчанию для данного объекта. Полученное значение преобразуется в примитив, посредством методов valueOf() и toString(). Если преобразовать объект не удается, генерируется ошибка времени выполнения.
- Обратите внимание на то, что объект преобразуется в примитив, если, и только если, второй операнд является примитивом. В ином случае, операнды сравниваются как объекты, соответственно, операция сравнения вернет истину в том случае, если внутренние ссылки обоих объектов ссылаются на один и тот же объект в памяти.
new String('foo');
по сравнению с простой строкой.