#include <iostream>
#include <vector>
std::vector<int> arr = { 100, 50, 25, 10, 5, 1 };
int n = 100;
int matches = 0;
void calc( int val, unsigned int offs ) {
if( val == n ) {
matches++;
return;
} else if( val > n ) {
return;
}
for( unsigned int i = offs; i < arr.size(); ++i ) {
calc( val + arr[i], i );
}
}
int main( int argc, char** argv ) {
calc( 0, 0 );
std::cout << matches << std::endl;
return( EXIT_SUCCESS );
}
var obj = {
test() {
console.log(this);
}
}(obj.test)()
var obj = {
test() {
console.log(this);
}
}();
var obj = ({
test() {
console.log(this);
}
}(obj.test)());
({a: 10}())
var obj = {
test() {
console.log(this);
}
};
(obj.test)()
function checkWinner(arr) {
function Eq(a, b, c) {
return a != 0 && a == b && a == c;
}
for (let i = 0; i < 3; i++) {
// check rows
if (Eq(arr[0][i], arr[1][i], arr[2][i])) {
return arr[0][i]
}
// check cols
if (Eq(arr[i][0], arr[i][1], arr[i][2])) {
return arr[i][0]
}
}
// check diagonal
if (Eq(arr[0][0], arr[1][1], arr[2][2])) {
return arr[0][0]
}
if (Eq(arr[0][2], arr[1][1], arr[2][1])) {
return arr[0][2]
}
return 0
}
var arr = [1,2,3,4,5,6,7,8]
var i = 3
var j = 4
console.log(arr); // [1,2,3,4,5,6,7,8]
[arr[i], arr[j]] = [arr[j++], arr[i--]];
console.log(arr); // [1,2,5,4,5,4,7,8]
// #1
// arr[j++]
// j++ вернет 4
// arr[4] вернет 5
// [arr[i], arr[j]] = [5, arr[i--]]
// #2
// arr[i--]
// i-- вернет 3
// arr[3] вернет 4
// [arr[i], arr[j]] = [5, 4]
// #3
// arr[i]
// i вернет 2
// [arr[2], arr[j]] = [5, 4]
// #4
// arr[j]
// j вернет 5
// [arr[2], arr[5]] = [5, 4]
// #5
// выполняем деструктуризацию
// #5.1
// console.log(arr[2]); // 3
// arr[2] = 5
// console.log(arr[2]); // 5
// #5.2
// console.log(arr[5]); // 6
// arr[5] = 4
// console.log(arr[5]); // 4
// #6
// в результате деструктуризации изменили исходный массив:
// [ 1, 2, 5, 4, 5, 4, 7, 8 ]
строка = floor(индекс / количество столбцов)
столбец = индекс % количество столбцов
function () {
console.log('Hello!');
foo = function () {
console.log('Bye!');
};
}
. При вызове метода foo у объекта obj выполняетя console.log("Hello"), затем сама функция foo ( Не метод объекта! ) меняется наfunction () {
console.log('Bye!');
};
function a() {
var c = 2;
function b() {
return c++;
};
return b;
}
var d = a();
alert(d()); // 2
alert(d()); // 3
function b() {
return c++;
};
function a() {
var c = 2;
function b() {
return c++;
};
return b;
}
var d = a();
var e = a();
alert(d()); // 2
alert(d()); // 3
alert(e()); // 2
alert(d()); // 4
alert(d()); // 5
alert(e()); // 3
const foo = () =>
(
0
+
{
}
)
[
7
]
+
(
0
+
{
}
)
[
2
]
+
(
!
1
+
`
`
)
[
3
]
+
(
0
+
{
}
)
[
7
]
+
(
!
1
+
`
`
)
[
4
]
+
(
!
0
+
`
`
)
[
1
]
`
X
`
[
1
]
23 -> 32
110 < 1001
Т.е. при переборе позиций меньше всего хотим двигать левую позицию, пока не переберем все варианты правой:0011
0101
0110
1001
1010
1100
const keyboard = [
'abcde123',
'fghij456',
'klmno789',
'pqrst.@0',
'uvwxyz_/',
].reduce((acc, [...row], iRow) => {
row.forEach((key, iCol) => acc[key] = [ iRow, iCol ]);
return acc;
}, {});
function tvRemote(word) {
let steps = word.length;
let prev = [ 0, 0 ];
for (const n of word) {
const curr = keyboard[n];
steps += Math.abs(prev[0] - curr[0]) + Math.abs(prev[1] - curr[1]);
prev = curr;
}
return steps;
}
function sum_pairs(arr, sum){
for(var i=1; i<arr.length;i++){
for(var n=0;n<i;n++){
if(arr[n]+arr[i]===sum) return [arr[n], arr[i]];
}
}
}
var a = [...new Array(10000).fill(0).map(_ => Math.round(Math.random()*8)), 14, 16];
var a1 = a.slice();
var a2 = a.slice();
console.time('1');
console.log(sum_pairs1(a1,30))
console.timeEnd('1');
console.time('2');
console.log(sum_pairs2(a2,30))
console.timeEnd('2');
for (var i = 0; i < ints.length; i++) {
if (i <= ind) continue;
for (var i = ind+1; i < ints.length; i++) {
Если таких пар несколько, то возвращается та пара у которой индекс второго числа меньше
function foo(data) {
return data.reduce((acc, x) => {
if (acc[acc.length-1]+x !== 0) acc.push(x)
else acc.pop()
return acc
}, [])
}
jsfiddle.net/ztfu2a9v