Skip to content

Instantly share code, notes, and snippets.

@Katunya
Created June 28, 2020 21:09
Show Gist options
  • Select an option

  • Save Katunya/fc74b0d684f950ee7ad3ae3a174d0103 to your computer and use it in GitHub Desktop.

Select an option

Save Katunya/fc74b0d684f950ee7ad3ae3a174d0103 to your computer and use it in GitHub Desktop.
JS Bin // source https://jsbin.com/wegukir/27
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<script id="jsbin-javascript">
/**
* Напишите функцию, которая возвращает n-ую запись в последовательности,
* где n — это число, которое вы передаёте в качестве аргумента функции.
* @param {number} n
* @returns {number}
*/
function fibonacci(n) {
let previus = 0,next = 1;
for(let i = 0; i<n; i++) {
next = previus + next;
previus = next - previus;
}
return previus;
}
// Проверка
console.log('3 ->', fibonacci(3)); // 2
console.log('7 ->', fibonacci(7)); // 13
/**
* Релизуйте сортировку массива
* @param {any[]} values сортируемый массив
* @returns {any[]}
*/
function sort(values) {
return values.sort()
}
// Проверка
console.log(sort([7, 2, 99, 5, 1, 3, 4, -1])); // [-1, 1, 2, 3, 4, 5, 7, 99]
/**
* Перенос нулей в конец массива
* @param {number[]} input
* @return {number[]}
*/
function zsort(input) {
console.log(input)
let j = 0;
for(let i = 0 ; i<input.length; i++){
if(input[i] !== 0){
[input[i], input[j]] = [input[j], input[i]] ;
j++;
}
}
return input;
}
// Проверка
console.log(zsort([1, 0, 2, 3, 0, 4, 0])); // [1, 2, 3, 4, 0, 0, 0]
/**
* Написать функцию получения простых чисел
*/
const sum = (n) => {
const nums = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199];
return nums.slice(0, Math.max( 0, Math.min(n, nums.length) ) ).join(', ');
};
// Проверка
console.log("result:", sum(40));
/**
* Получения массива уникальных значений
* @param {number[]} values
* @return {*}
*/
function uniq(values) {
values = values.sort( (a, b) => { return a*1 - b*1;} );
let res = [values[0]];
for (let i = 1; i < values.length; i++) {
if (values[i-1] !== values[i]) {
res.push(values[i]);
}
}
return res;
}
// Проверка
console.log(uniq([2, 3, 1, 2, 1, 5, 6, 3, 1, 8, 5]));
/**
* Реализовать RLE-сжатие: AAAB -> A3B, BCCDDDAXXXX -> BC2D3AX4
* @param {string} value
* @return {string}
*/
function rle(value) {
let count = 0;
let result = '';
for (let i = 0; i < value.length; i++) {
let current = value.charAt(i);
let next = value.charAt(i + 1);
if (current === next) {
count++;
}
else {
result += current;
if (count > 0) {
result += count + 1;
}
count = 0;
}
}
return result;
}
// Проверка
console.log(rle('AVVVBBBVVXDHJFFFFDDDDDDHAAAAJJJDDSLSSSDDDD'));
/**
* Реализовать метод `.delay`
*/
Function.prototype.delay = function (time) {
setTimeout(this, time)
};
foo.delay(300);
function foo() {
console.log("Wow!");
}
/**
* Сейчас console выводит "undefined", нужно это исправить
*/
function Bomb(message, delay) {
this.message = message;
setTimeout(this.blowUp.bind(this), delay * 1000); // взрываем через delay sec
}
Bomb.prototype.blowUp = function () {
console.log(this.message);
};
new Bomb("Allahu akbar!", .5);
/**
* Найти пересечение двух массивов
* @param {number[]} left
* @param {number[]} right
* @return {number[]}
*/
function intersection(left, right) {
let result = [];
for (let i of left){
for (let j of right) {
if (i === j) {
result.push(i);
}
}
return [...new Set(result)];
}
// Проверка
console.log(intersection(
[1, 2, 3, 4, 5],
[2, 8, 3]
));
/**
* Реализовать функцию для формирования дерева категорий
*
* @param {[{title: string, left: number, right: number}]} inputData
* @return {string}
*/
function getCategoriesAsHTML(inputData) {
for (let i=0; i < inputData.length; i++){
const thing =
`<div>
<ul>
<li>${inputData[i].title}</li>
<ul>
<li>${inputData[i].left}</li>
<li>${inputData[i].right}</li>
</ul>
</ul>
`
document.body.insertAdjacentHTML('beforebegin', thing);
}
container.style.display = 'none';
}
var container = document.getElementById('result-container');
container.innerHTML = getCategoriesAsHTML(getInputData());
// <ul>
// <li>
// Одежда
// <ul>
// <li>
// Мужская
// <ul>
// <\!-- И так далее -->
// </ul>
// </li>
// </ul>
// Входные данные, их трогать не надо
function getInputData() {
return [
{
title: "Одежда",
left: 1,
right: 22
},
{
title: "Мужская",
left: 2,
right: 9
},
{
title: "Женская",
left: 10,
right: 21
},
{
title: "Костюмы",
left: 3,
right: 8
},
{
title: "Платья",
left: 11,
right: 16
},
{
title: "Юбки",
left: 17,
right: 18
},
{
title: "Блузы",
left: 19,
right: 20
},
{
title: "Брюки",
left: 4,
right: 5
},
{
title: "Жакеты",
left: 6,
right: 7
},
{
title: "Вечерние",
left: 12,
right: 13
},
{
title: "Летние",
left: 14,
right: 15
}
];
}
/**
* Проверка на сбалансированность фигурных скобкок
* @param {string} input
* @return {boolean}
*/
function isBalanced(input) {
let open = '{';
let close = '}';
let countOpen = 0;
let countClose = 0;
for (let i of input){
if(i === strOpen){
countOpen++;
}
if(i === strClose){
countClose++;
}
}
if(countOpen === countClose){
return true;
} else{
return false;
}
}
// Проверка
console.log('balanced:', isBalanced('{{}{}}{}')); // true
console.log('not balanced:', isBalanced('{}{{}')); // false
/**
* Является ли строка палиндромом
* @param {string} value
* @return {boolean}
*/
function isPalindrome(value) {
value = value.toLowerCase().replace(/ /g, '');;
let strReverse = value.split('').reverse().join('');
if (value === strReverse){
return true;
} else {
return false;
}
}
console.log(isPalindrome('abcd')); // false
console.log(isPalindrome('A man a plan a canal Panama'));// true
</script>
<script id="jsbin-source-javascript" type="text/javascript">/**
* Напишите функцию, которая возвращает n-ую запись в последовательности,
* где n — это число, которое вы передаёте в качестве аргумента функции.
* @param {number} n
* @returns {number}
*/
function fibonacci(n) {
let previus = 0,next = 1;
for(let i = 0; i<n; i++) {
next = previus + next;
previus = next - previus;
}
return previus;
}
// Проверка
console.log('3 ->', fibonacci(3)); // 2
console.log('7 ->', fibonacci(7)); // 13
/**
* Релизуйте сортировку массива
* @param {any[]} values сортируемый массив
* @returns {any[]}
*/
function sort(values) {
return values.sort()
}
// Проверка
console.log(sort([7, 2, 99, 5, 1, 3, 4, -1])); // [-1, 1, 2, 3, 4, 5, 7, 99]
/**
* Перенос нулей в конец массива
* @param {number[]} input
* @return {number[]}
*/
function zsort(input) {
console.log(input)
let j = 0;
for(let i = 0 ; i<input.length; i++){
if(input[i] !== 0){
[input[i], input[j]] = [input[j], input[i]] ;
j++;
}
}
return input;
}
// Проверка
console.log(zsort([1, 0, 2, 3, 0, 4, 0])); // [1, 2, 3, 4, 0, 0, 0]
/**
* Написать функцию получения простых чисел
*/
const sum = (n) => {
const nums = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199];
return nums.slice(0, Math.max( 0, Math.min(n, nums.length) ) ).join(', ');
};
// Проверка
console.log("result:", sum(40));
/**
* Получения массива уникальных значений
* @param {number[]} values
* @return {*}
*/
function uniq(values) {
values = values.sort( (a, b) => { return a*1 - b*1;} );
let res = [values[0]];
for (let i = 1; i < values.length; i++) {
if (values[i-1] !== values[i]) {
res.push(values[i]);
}
}
return res;
}
// Проверка
console.log(uniq([2, 3, 1, 2, 1, 5, 6, 3, 1, 8, 5]));
/**
* Реализовать RLE-сжатие: AAAB -> A3B, BCCDDDAXXXX -> BC2D3AX4
* @param {string} value
* @return {string}
*/
function rle(value) {
let count = 0;
let result = '';
for (let i = 0; i < value.length; i++) {
let current = value.charAt(i);
let next = value.charAt(i + 1);
if (current === next) {
count++;
}
else {
result += current;
if (count > 0) {
result += count + 1;
}
count = 0;
}
}
return result;
}
// Проверка
console.log(rle('AVVVBBBVVXDHJFFFFDDDDDDHAAAAJJJDDSLSSSDDDD'));
/**
* Реализовать метод `.delay`
*/
Function.prototype.delay = function (time) {
setTimeout(this, time)
};
foo.delay(300);
function foo() {
console.log("Wow!");
}
/**
* Сейчас console выводит "undefined", нужно это исправить
*/
function Bomb(message, delay) {
this.message = message;
setTimeout(this.blowUp.bind(this), delay * 1000); // взрываем через delay sec
}
Bomb.prototype.blowUp = function () {
console.log(this.message);
};
new Bomb("Allahu akbar!", .5);
/**
* Найти пересечение двух массивов
* @param {number[]} left
* @param {number[]} right
* @return {number[]}
*/
function intersection(left, right) {
let result = [];
for (let i of left){
for (let j of right) {
if (i === j) {
result.push(i);
}
}
return [...new Set(result)];
}
// Проверка
console.log(intersection(
[1, 2, 3, 4, 5],
[2, 8, 3]
));
/**
* Реализовать функцию для формирования дерева категорий
*
* @param {[{title: string, left: number, right: number}]} inputData
* @return {string}
*/
function getCategoriesAsHTML(inputData) {
for (let i=0; i < inputData.length; i++){
const thing =
`<div>
<ul>
<li>${inputData[i].title}</li>
<ul>
<li>${inputData[i].left}</li>
<li>${inputData[i].right}</li>
</ul>
</ul>
`
document.body.insertAdjacentHTML('beforebegin', thing);
}
container.style.display = 'none';
}
var container = document.getElementById('result-container');
container.innerHTML = getCategoriesAsHTML(getInputData());
// <ul>
// <li>
// Одежда
// <ul>
// <li>
// Мужская
// <ul>
// <\!-- И так далее -->
// </ul>
// </li>
// </ul>
// Входные данные, их трогать не надо
function getInputData() {
return [
{
title: "Одежда",
left: 1,
right: 22
},
{
title: "Мужская",
left: 2,
right: 9
},
{
title: "Женская",
left: 10,
right: 21
},
{
title: "Костюмы",
left: 3,
right: 8
},
{
title: "Платья",
left: 11,
right: 16
},
{
title: "Юбки",
left: 17,
right: 18
},
{
title: "Блузы",
left: 19,
right: 20
},
{
title: "Брюки",
left: 4,
right: 5
},
{
title: "Жакеты",
left: 6,
right: 7
},
{
title: "Вечерние",
left: 12,
right: 13
},
{
title: "Летние",
left: 14,
right: 15
}
];
}
/**
* Проверка на сбалансированность фигурных скобкок
* @param {string} input
* @return {boolean}
*/
function isBalanced(input) {
let open = '{';
let close = '}';
let countOpen = 0;
let countClose = 0;
for (let i of input){
if(i === strOpen){
countOpen++;
}
if(i === strClose){
countClose++;
}
}
if(countOpen === countClose){
return true;
} else{
return false;
}
}
// Проверка
console.log('balanced:', isBalanced('{{}{}}{}')); // true
console.log('not balanced:', isBalanced('{}{{}')); // false
/**
* Является ли строка палиндромом
* @param {string} value
* @return {boolean}
*/
function isPalindrome(value) {
value = value.toLowerCase().replace(/ /g, '');;
let strReverse = value.split('').reverse().join('');
if (value === strReverse){
return true;
} else {
return false;
}
}
console.log(isPalindrome('abcd')); // false
console.log(isPalindrome('A man a plan a canal Panama'));// true
</script></body>
</html>
/**
* Напишите функцию, которая возвращает n-ую запись в последовательности,
* где n — это число, которое вы передаёте в качестве аргумента функции.
* @param {number} n
* @returns {number}
*/
function fibonacci(n) {
let previus = 0,next = 1;
for(let i = 0; i<n; i++) {
next = previus + next;
previus = next - previus;
}
return previus;
}
// Проверка
console.log('3 ->', fibonacci(3)); // 2
console.log('7 ->', fibonacci(7)); // 13
/**
* Релизуйте сортировку массива
* @param {any[]} values сортируемый массив
* @returns {any[]}
*/
function sort(values) {
return values.sort()
}
// Проверка
console.log(sort([7, 2, 99, 5, 1, 3, 4, -1])); // [-1, 1, 2, 3, 4, 5, 7, 99]
/**
* Перенос нулей в конец массива
* @param {number[]} input
* @return {number[]}
*/
function zsort(input) {
console.log(input)
let j = 0;
for(let i = 0 ; i<input.length; i++){
if(input[i] !== 0){
[input[i], input[j]] = [input[j], input[i]] ;
j++;
}
}
return input;
}
// Проверка
console.log(zsort([1, 0, 2, 3, 0, 4, 0])); // [1, 2, 3, 4, 0, 0, 0]
/**
* Написать функцию получения простых чисел
*/
const sum = (n) => {
const nums = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199];
return nums.slice(0, Math.max( 0, Math.min(n, nums.length) ) ).join(', ');
};
// Проверка
console.log("result:", sum(40));
/**
* Получения массива уникальных значений
* @param {number[]} values
* @return {*}
*/
function uniq(values) {
values = values.sort( (a, b) => { return a*1 - b*1;} );
let res = [values[0]];
for (let i = 1; i < values.length; i++) {
if (values[i-1] !== values[i]) {
res.push(values[i]);
}
}
return res;
}
// Проверка
console.log(uniq([2, 3, 1, 2, 1, 5, 6, 3, 1, 8, 5]));
/**
* Реализовать RLE-сжатие: AAAB -> A3B, BCCDDDAXXXX -> BC2D3AX4
* @param {string} value
* @return {string}
*/
function rle(value) {
let count = 0;
let result = '';
for (let i = 0; i < value.length; i++) {
let current = value.charAt(i);
let next = value.charAt(i + 1);
if (current === next) {
count++;
}
else {
result += current;
if (count > 0) {
result += count + 1;
}
count = 0;
}
}
return result;
}
// Проверка
console.log(rle('AVVVBBBVVXDHJFFFFDDDDDDHAAAAJJJDDSLSSSDDDD'));
/**
* Реализовать метод `.delay`
*/
Function.prototype.delay = function (time) {
setTimeout(this, time)
};
foo.delay(300);
function foo() {
console.log("Wow!");
}
/**
* Сейчас console выводит "undefined", нужно это исправить
*/
function Bomb(message, delay) {
this.message = message;
setTimeout(this.blowUp.bind(this), delay * 1000); // взрываем через delay sec
}
Bomb.prototype.blowUp = function () {
console.log(this.message);
};
new Bomb("Allahu akbar!", .5);
/**
* Найти пересечение двух массивов
* @param {number[]} left
* @param {number[]} right
* @return {number[]}
*/
function intersection(left, right) {
let result = [];
for (let i of left){
for (let j of right) {
if (i === j) {
result.push(i);
}
}
return [...new Set(result)];
}
// Проверка
console.log(intersection(
[1, 2, 3, 4, 5],
[2, 8, 3]
));
/**
* Реализовать функцию для формирования дерева категорий
*
* @param {[{title: string, left: number, right: number}]} inputData
* @return {string}
*/
function getCategoriesAsHTML(inputData) {
for (let i=0; i < inputData.length; i++){
const thing =
`<div>
<ul>
<li>${inputData[i].title}</li>
<ul>
<li>${inputData[i].left}</li>
<li>${inputData[i].right}</li>
</ul>
</ul>
`
document.body.insertAdjacentHTML('beforebegin', thing);
}
container.style.display = 'none';
}
var container = document.getElementById('result-container');
container.innerHTML = getCategoriesAsHTML(getInputData());
// <ul>
// <li>
// Одежда
// <ul>
// <li>
// Мужская
// <ul>
// <!-- И так далее -->
// </ul>
// </li>
// </ul>
// Входные данные, их трогать не надо
function getInputData() {
return [
{
title: "Одежда",
left: 1,
right: 22
},
{
title: "Мужская",
left: 2,
right: 9
},
{
title: "Женская",
left: 10,
right: 21
},
{
title: "Костюмы",
left: 3,
right: 8
},
{
title: "Платья",
left: 11,
right: 16
},
{
title: "Юбки",
left: 17,
right: 18
},
{
title: "Блузы",
left: 19,
right: 20
},
{
title: "Брюки",
left: 4,
right: 5
},
{
title: "Жакеты",
left: 6,
right: 7
},
{
title: "Вечерние",
left: 12,
right: 13
},
{
title: "Летние",
left: 14,
right: 15
}
];
}
/**
* Проверка на сбалансированность фигурных скобкок
* @param {string} input
* @return {boolean}
*/
function isBalanced(input) {
let open = '{';
let close = '}';
let countOpen = 0;
let countClose = 0;
for (let i of input){
if(i === strOpen){
countOpen++;
}
if(i === strClose){
countClose++;
}
}
if(countOpen === countClose){
return true;
} else{
return false;
}
}
// Проверка
console.log('balanced:', isBalanced('{{}{}}{}')); // true
console.log('not balanced:', isBalanced('{}{{}')); // false
/**
* Является ли строка палиндромом
* @param {string} value
* @return {boolean}
*/
function isPalindrome(value) {
value = value.toLowerCase().replace(/ /g, '');;
let strReverse = value.split('').reverse().join('');
if (value === strReverse){
return true;
} else {
return false;
}
}
console.log(isPalindrome('abcd')); // false
console.log(isPalindrome('A man a plan a canal Panama'));// true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment