Skip to content

Instantly share code, notes, and snippets.

@jakab922
jakab922 / palindromic_subsets_brute_sol.py
Created June 13, 2018 21:09
Palindromic subsets brute solution
MOD = 10 ** 9 + 7
def modpow(x, y, mod):
elems = []
while y:
elems.append(y % 2)
y >>= 1
el = len(elems)
x_pows = [x for _ in xrange(el)]
@jakab922
jakab922 / circle_check.py
Created June 24, 2018 21:12
Circle check in a weighted directed graph
def circle_check(graph):
n = len(graph)
graph = [list(node.keys()) for node in graph]
indexes = [0] * n
stack = [0]
visited = [False] * n
visited[0] = True
while stack:
curr = stack[-1]
@jakab922
jakab922 / stuff.json
Created July 10, 2018 12:00
Aggregated elastic query
{
"size": 0,
"query": {
"bool": {
"must": [
{ "exists": {"field": "status" } },
{ "exists": {"field": "class_name" } },
{ "exists": {"field": "test_name" } }
]
}
@jakab922
jakab922 / segment_intersection.go
Created January 9, 2019 11:12
Intersection of 2 segments in 2 dimension. The method also finds an arbitrary intersection point if there is any.
package main
import (
"bufio"
"fmt"
"log"
"math"
"strconv"
"strings"
)
@jakab922
jakab922 / sol.cc
Created February 5, 2019 07:59
Sliding window median
#include <map>
#include <utility>
#include <vector>
#include <algorithm>
#include <iostream>
#include <iomanip>
using namespace std;
typedef long long ll;
@jakab922
jakab922 / variadic_join.cc
Created March 20, 2019 15:53
Python like join with C++ variadic templates
// Compile and run with g++ -o vjoin --std=c++17 variadic_join.cc; ./vjoin
// c++17 standard might not be needed since we use the c++11 variadic template notation
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
template<typename T>
void join(stringstream &ss, const string &sep, T t) {
ss << t;
}
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
constexpr ll mod = 1000000007;
ll fast_pow_mod(ll a, ll b, ll m) {
a %= m;
if(a == 0ll) return a;
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
constexpr ll p = 1000000007;
ll gcd(ll a, ll b) {
while(b) {
ll tmp = b;
use std::cmp;
pub fn smaller(vec: &Vec<i32>, val: i32) -> i32 {
let len = vec.len();
if(len == 0) {
return 0;
}
if vec[len - 1] < val {
return len as i32;
use std::vec::Vec;
impl Solution {
pub fn multiply(num1: String, num2: String) -> String {
let one: Vec<u32> = num1.chars().map(|c| c.to_digit(10).unwrap()).rev().collect();
let other: Vec<u32> = num2.chars().map(|c| c.to_digit(10).unwrap()).rev().collect();
let mut tmp: Vec<u32> = vec![0; one.len() + other.len() + 1];
for (i, el1) in one.iter().enumerate() {