Skip to content

Instantly share code, notes, and snippets.

View vidul-nikolaev-petrov's full-sized avatar

Видул Петров vidul-nikolaev-petrov

View GitHub Profile
function checkBalance(s) {
if (s.length % 2 !== 0) return false;
if (s.length === 0) return true;
var pairs = ['[]', '()', '{}'],
r0 = s.split(pairs[0]),
r1 = s.split(pairs[1]),
r2 = s.split(pairs[2]);
@vidul-nikolaev-petrov
vidul-nikolaev-petrov / bubble_sort.js
Last active October 11, 2016 12:37
Somewhat more concise Bubble sort
function bubbleSort(array) {
var swapped;
for (var i = 0; i < array.length - 1; i++) {
if (array[i] > array[i + 1]) {
var tmp = array[i + 1];
array[i + 1] = array[i];
array[i] = tmp;
swapped = true;
}
@vidul-nikolaev-petrov
vidul-nikolaev-petrov / webpage-crypto.html
Last active February 17, 2016 06:09
Self-contained crypto webpage (AES-256)
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<script>
/*
CryptoJS v3.1.2
code.google.com/p/crypto-js
(c) 2009-2013 by Jeff Mott. All rights reserved.
code.google.com/p/crypto-js/wiki/License
@vidul-nikolaev-petrov
vidul-nikolaev-petrov / todo_git-config-aliases
Last active February 3, 2016 00:38
Simple command-line Todo with Git commits
[alias]
# add task
a = "!f() { \
if [[ -f .dummy ]]; then \
git rm -f .dummy; \
else \
touch .dummy; \
git add .dummy; \
fi; \
@vidul-nikolaev-petrov
vidul-nikolaev-petrov / pki_aes.js
Created January 13, 2016 23:38
PKI & AES (en/de)cryption, based on the JS Forge crypto library
/**
* @author Vidul Nikolaev Petrov
* @summary helper methods for PKI / AES usage, based on the JS Forge crypto library.
*/
function s8Crypto(bits) {
var hexToBytes = forge.util.hexToBytes,
bytesToHex = forge.util.bytesToHex;
this.pki = {};
@vidul-nikolaev-petrov
vidul-nikolaev-petrov / longest_common_substring.js
Last active August 29, 2015 14:26
Longest Common Substring
/**
* Longest Common Substring in JavaScript
*
* This is the brute-force solution.
*
* @param {String} s1
* @param {String} s2
* @return {String} r1
*/
@vidul-nikolaev-petrov
vidul-nikolaev-petrov / soundex.js
Created June 2, 2015 11:59
Soundex in JavaScript
/**
* Soundex in JavaScript
*
* @example
* // returns 'H416'
* soundex('Heilbronn');
*
* @example
* // returns 'L222'
* soundex('Lissajous');
function insertionSort(list) {
for (var g = 0; g < list.length; g++) {
for (var i = list.length - 1; i > g; i--) {
if (list[i] < list[i - 1]) {
var tmp = list[i];
list[i] = list[i - 1];
list[i - 1] = tmp;
}
}
}
function quickSort(list) {
if (!list.length) return [];
var left = [],
right = [],
center = list[0];
for (var i = 1; i < list.length; i++) {
if (list[i] < center) {
left.push(list[i]);
@vidul-nikolaev-petrov
vidul-nikolaev-petrov / hanoi.js
Last active August 29, 2015 14:17
Tower of Hanoi
/**
* Thst is not the optimal formula, don't use it.
* This is just another solution for the algorithm
* Tower of Hanoi.
*/
if (Array.prototype.last === undefined) {
Array.prototype.last = function () {
return this.length ? this[this.length - 1] : 0;
};