Skip to content

Instantly share code, notes, and snippets.

@Spuffynism
Spuffynism / ListenableFutureAdapter.java
Created August 12, 2017 23:07
ListenableFuture to CompletableFuture Adapter
package com.springmvc.model;
import org.springframework.util.concurrent.ListenableFuture;
import java.util.concurrent.CompletableFuture;
/**
* Converts a listenable future to a completable future, mapping the listenable futures' callbacks
* to the completable futures' equivalents.
*/
@Spuffynism
Spuffynism / attacker_success_probability.js
Last active November 6, 2017 04:46
A bitcoin attacker's catching-up success probability
// converted from C code from p.6 of the btc whitepaper
// tested with p.7's provided sample inputs
// q being the probability the attacker finds the next block
// z being the number of blocks the attacker is behind
var AttackerSuccessProbability = function(q, z) {
var p = 1.0 - q;
var lambda = z * (q / p);
var sum = 1.0;
var poisson;
@Spuffynism
Spuffynism / binary_search.js
Last active October 19, 2017 18:12
JS binary search
var binarySearch = function (a, x) {
var low = 0,
high = a.length - 1,
mid;
while (low <= high) {
mid = Math.floor((low + high) / 2);
if (a[mid] < x)
low = mid + 1;
@Spuffynism
Spuffynism / find_complement.js
Last active October 20, 2017 19:17
Get if array item has complement
var hasComplement = function (array, sum) {
if (sum < 0)
throw "sum must be bigger than 0";
var complements = [];
for (var i = 0, complement; i < array.length; i++, complement = sum - array[i]) {
if (array.indexOf(complement) != -1) // if (complement.indexOf(array[i]) != -1)
return true;
else
@Spuffynism
Spuffynism / str_to_brainfuck.js
Last active December 18, 2017 19:26
Converts a string to a brainfuck program that prints the said string
const COMMAND = {
next: '>',
prev: '<',
increment: '+',
decrement: '-',
print: '.',
accept: ',',
@Spuffynism
Spuffynism / binary_tree_roadtrip.js
Last active November 21, 2017 17:23
binary tree visiting algorithms
function Node (name) {
this.name = name;
this.left = null;
this.right = null;
}
function BinaryTree (node) {
this.node = node;
this.visit = function(fn) {
@Spuffynism
Spuffynism / tree_roadtrip.js
Last active November 14, 2017 17:52
tree visiting algorithms
function Node (name) {
this.name = name;
this.children = [];
}
function Tree (node) {
this.node = node;
this.visit = function(fn) {
return fn(this.node);
@Spuffynism
Spuffynism / sort.js
Last active March 4, 2018 23:25
js list sorts
let selectionSort = (t) => {
for (let i = 0; i < t.length; i++) {
let min = i;
for (let j = i + 1; j < t.length; j++) {
if(t[j] < t[min])
min = j;
}
[t[min], t[i]] = [t[i], t[min]];
}
@Spuffynism
Spuffynism / playlist_shuffling.js
Last active November 18, 2017 00:28
better spotify playlist shuffling
let shuffle = function (playlist) {
let shuffledPlaylist = [],
song;
while (playlist.length !== 0) {
song = Math.floor(Math.random() * playlist.length);
shuffledPlaylist.push(playlist[song]);
playlist.splice(song, 1);
}
return shuffledPlaylist;
@Spuffynism
Spuffynism / fizzbuzz.js
Last active January 23, 2018 17:07
FizzBuzz Codegolf
// Fizz if i % 3 == 0, Buzz if i % 5 == 0, FizzBuzz if both
for(i=1;i++<=100;)i%3==0||i%5==0?console.log(i%3==0?'Fizz':''+i%5==0?'Buzz':''):0 // 82
for(i=1;i++<=100;)[i%3,i%5].some(x=>x==0)?console.log(i%3==0?'Fizz':''+i%5==0?'Buzz':''):0; // 91
for(i=1;i++<=100;)i%3==0||i%5==0?console.log(i%3==0?'Fizz':''+i%5==0?'Buzz':$):$ // 80
for(i=1;i++<=100;)[j,k]=[i%3==0,i%5==0],j||k?console.log(j?'Fizz':''+k?'Buzz':$):$ // 82
for(i=1;i++<=100;[j,k]=[i%3==0,i%5==0])j||k?console.log(j?'Fizz':''+k?'Buzz':''):0 // 82
for(i=1;i++<=100;[j,k]=[i%3==0,i%5==0])j||k?console.log(j?'Fizz':''+k?'Buzz':$):0 // 81
for(i=1;i++<101;[j,k]=[i%3==0,i%5==0])j||k?console.log(j?'Fizz':''+k?'Buzz':$):0 // 80
for(i=1;i++<101;)i%3==0||i%5==0?console.log(i%3==0?'Fizz':''+i%5==0?'Buzz':$):0 // 79