Skip to content

Instantly share code, notes, and snippets.

View vitkarpov's full-sized avatar

Viktor Karpov vitkarpov

View GitHub Profile
@vitkarpov
vitkarpov / dabblet.css
Last active March 27, 2017 07:51
Untitled
body {
/* ширина контейнера меняется при растяжении окна браузера */
width: 300px;
}
.wrapper {
outline: 1px solid red;
}
.wrapper:after {
content: '';
@vitkarpov
vitkarpov / cracking-the-coding-interview-10-2-1.js
Last active March 31, 2017 06:13
"Cracking the coding interview", sorting, 10.2.1
/**
* Сортирует строки в массиве так,
* что анаграммы располагаются друг за другом.
*
* @param {array<string>} arr
* @returns {array<string>}
*/
function sortAnagrams(arr) {
return arr.sort((s1, s2) => {
return s1.split('').sort().join('') === s2.split('').sort().join('');
@vitkarpov
vitkarpov / cracking-the-coding-interview-10-2-2.js
Last active March 31, 2017 06:13
"Cracking the coding interview", sorting, 10.2.2
/**
* Сортирует строки в массиве так,
* что анаграммы располагаются друг за другом.
* Реализация представляет собой разновидность
* алгоритма блочной сортировки.
*
* @param {array<string>} arr
* @returns {array<string>}
*/
function sortAnagrams(arr) {
@vitkarpov
vitkarpov / cracking-the-coding-interview-8-2-1.js
Created April 9, 2017 07:11
"Cracking the coding interview", 8.2.1, recursion
/**
* На вход принимает лабиринт: двумерный массив
* булевых значений, каждая ячейка указывает на
* возможность перемещения туда робота.
* Возвращает массив ячеек (row, col), по которым
* робот может перемещаться для достижения цели.
* Алгоритм рекурсивный, сложность O(2^(N + M)), N, M - размеры сетки.
*
* @param {array<array><boolean>} maze
* @returns {array<array><number>}
@vitkarpov
vitkarpov / cracking-the-coding-interview-8-2-2.js
Created April 9, 2017 17:07
"Cracking the coding interview", recursion, 8.2.2
/**
* Используется мемоизация так,
* что время работы уменьшается до O(N x M),
* т.к. каждая ячейка посещается не более одного раза.
*
* @param {array<array><boolean>} maze
* @returns {array<array><number>}
*/
const getPath = (function() {
function getPath(maze, row, col, path, cache) {
body {
height: 200px;
}
.aside {
outline: 1px solid red;
display: flex;
height: 100%;
width: 300px;
flex-direction: column;
/**
* @example
* // 1
* jpath('.foo.bar', { foo: { bar: 1 } });
*
* // null
* jpath('.foo.bar.baz', { foo: 2 })
*/
const jpath = (function() {
function recursiveSearch(fields, source) {
@vitkarpov
vitkarpov / cracking-the-coding-interview-10-3.js
Last active May 12, 2017 04:47
"Cracking the coding interview", search, 10.3
/**
* Находит индекс указанного элемента x в массиве arr.
* Если такого элемента нет, вернет -1.
* Работает за O(log n).
* В худшем случае деградирует до O(n), при большом количестве одинаковых элементов.
* @param {array<number>} arr
* @param {number} x
* @returns {number}
*/
const search = (function() {
.my-fancy-input {
font-size: 20px;
font-family: monospace;
letter-spacing: 10px;
}
.my-fancy-input {
position: relative;
width: 160px;
height: 20px;
border: 1px solid black;
}
.my-fancy-input input {
position: absolute;
background: transparent;
box-sizing: border-box;