Skip to content

Instantly share code, notes, and snippets.

View ClickerMonkey's full-sized avatar
💭
VPLs, ORMs, and Bag End

Philip Diffenderfer ClickerMonkey

💭
VPLs, ORMs, and Bag End
View GitHub Profile
@ClickerMonkey
ClickerMonkey / LinkedList.java
Created November 18, 2013 20:11
Doubly linked-list where nodes can remove themselves instantly from their list. A node can only be in one list. O(1) adding and removal.
public class LinkedList<T> implements Iterable<T>
{
public LinkedNode<T> head = new LinkedNode<T>( this );
private int size = 0;
public final LinkedNode<T> add( T value )
{
return new LinkedNode<T>( value ).prepend( head );
}
@ClickerMonkey
ClickerMonkey / Prime.java
Created November 18, 2013 20:04
A prime number utility for generating X number of primes, determining whether a given number is prime, and computing the prime factorization for a number. This class caches primes to very quickly check whether a number is a prime.
public class Prime
{
/* BEGIN TEST */
public static void main( String[] args )
{
Prime p = new Prime( 100000 );
// Load 100,000 primes into cache
long t0 = System.nanoTime();
@ClickerMonkey
ClickerMonkey / Reflect.java
Created November 18, 2013 19:51
Custom object serialization with compression (requires Compress.java) to and from ByteBuffers.
public interface Reflect<T>
{
public T get(ByteBuffer in);
public void getAndSet(ByteBuffer in, Object obj, Field field) throws IllegalAccessException;
public void put(ByteBuffer out, T v);
public int sizeOf(T v);
@ClickerMonkey
ClickerMonkey / Compress.java
Created November 18, 2013 19:46
Compressed put/get operations on a ByteBuffer for byte, char, short, int, long, Byte, Character, Short, Integer, and Long.
import java.nio.ByteBuffer;
public class Compress
{
public static final int BYTE_MORE = 0x80;
public static final int BYTE_SIGN = 0x40;
public static final int BYTE_NULL = 0x20;
@ClickerMonkey
ClickerMonkey / Matching.java
Created October 29, 2014 15:10
A shape & color matching game for kids.
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Stroke;
import java.awt.event.KeyEvent;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.awt.geom.Path2D;
import java.awt.geom.Rectangle2D;
@ClickerMonkey
ClickerMonkey / CollisionResolution.java
Created October 29, 2014 15:09
Collision resolution visualization
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.event.KeyEvent;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.util.Arrays;
import java.util.List;
@ClickerMonkey
ClickerMonkey / CircleCircle.java
Created October 29, 2014 15:07
Priori intersection algorithms for circles, rectangles, and planes.
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.event.MouseEvent;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
@ClickerMonkey
ClickerMonkey / Wikipedia.java
Last active August 29, 2015 14:08
Gathers information about all articles on Wikipedia and builds a graph of all related articles.
public class Wikipedia
{
public static class Article implements Serializable {
private static final long serialVersionUID = 1L;
public int id;
public String title;
public Set<String> related = new HashSet<String>();
}
@ClickerMonkey
ClickerMonkey / StringTemplate.java
Last active August 29, 2015 14:08
A simple string templating utility.
public class StringTemplate
{
public static final String DEFAULT_START = "{";
public static final String DEFAULT_END = "}";
private String[] chunks;
public StringTemplate( String text )
{
@ClickerMonkey
ClickerMonkey / Elongate.java
Last active August 29, 2015 14:08
Transforms Java code to be as many lines as possible.
import java.util.Scanner;
public class Elongate
{
public static void main( String[] args )
{
Scanner in = new Scanner( System.in );
StringBuilder code = new StringBuilder();
while (in.hasNextLine())