Skip to content

Instantly share code, notes, and snippets.

View mfukar's full-sized avatar

Michael Foukarakis mfukar

View GitHub Profile
@mfukar
mfukar / ants.clj
Created February 13, 2014 12:22 — forked from michiakig/ants.clj
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Ant sim ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Copyright (c) Rich Hickey. All rights reserved.
; The use and distribution terms for this software are covered by the
; Common Public License 1.0 (http://opensource.org/licenses/cpl.php)
; which can be found in the file CPL.TXT at the root of this distribution.
; By using this software in any fashion, you are agreeing to be bound by
; the terms of this license.
; You must not remove this notice, or any other, from this software.
;dimensions of square world
@mfukar
mfukar / epic_fail_2.cpp
Created March 1, 2014 18:25
This is how you don't code game rules.
#include <iostream>
enum stuff {
laugh,
strike,
slap,
};
struct true_ {};
struct false_ {};
@mfukar
mfukar / lisp.cpp
Last active August 29, 2015 14:07
C++ generic lambdas turn it into Lisp!
/**
* Compile with GCC 4.9:
* g++ -std=c++1y lisp.cpp
*/
#include <iostream>
#include <stdio.h>
auto terminal = [] (auto stream) {
return [=] (auto func) {
return func (stream);
function Send-NetworkData {
[CmdletBinding()]
param (
[Parameter(Mandatory)]
[string]
$Computer,
[Parameter(Mandatory)]
[ValidateRange(1, 65535)]
[Int16]
@mfukar
mfukar / epic_fail_3.java
Created November 20, 2014 10:30
How not to filter untrusted input.
private InputFilter getCharactersLimited() {
// Limit characters input
InputFilter[] filters = new InputFilter[1];
filters[0] = new InputFilter(){
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
if (end > start) {
char[] acceptedChars = new char[]{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
@mfukar
mfukar / idontknow.c
Created May 13, 2015 09:54
Just some random interview question + solution, I don't even remember from where any more
/**
* The array contains a set of unsorted numbers. All numbers appear an even number of
* times. The exception is two numbers, call them M and N, which appear an odd number of
* times. Find M and N.
*
* This solution is O(n), where n is the size of the array. It requires two passes over
* the array.
*
* The generalised version of this problem (N elements, one number repeats K times) can
* be reduced to solving the linear system of equations:
@mfukar
mfukar / patchone.asm
Created May 13, 2012 10:05
pctf '12 - supercomputer patches
; 0x400cb0:
mov rax,qword [rbp-0x20]
add qword [rbp+0x10],rax
add qword [rbp+0x18],rax
add qword [rbp+0x20],rax
add qword [rbp+0x28],rax
add qword [rbp-0x8],rax
jmp 0x3f
@mfukar
mfukar / patchfour.asm
Created May 13, 2012 10:45
pctf '12 - supercomputer patches
; 0x401348:
jmp 0x145 ; these clothes are a little tight, but the price was right
@mfukar
mfukar / patchtwo.asm
Created May 13, 2012 10:12
pctf '12 - supercomputer patches
; 0x400ef8:
mov rax,qword [rbp+0x20]
mov edx,eax
sar edx,0x1f
xor eax,edx
sub eax,edx
cdqe
mov qword [rbp-0x8],rax
imul rax,qword [rbp+0x18]
add qword [rbp+0x10],rax
@mfukar
mfukar / patchthree.asm
Created May 13, 2012 10:30
pctf '12 - supercomputer patches
; 0x4010e9:
mov rax,qword [0x601d38]
imul rax,rax,0xf7733c1
add qword [rbp-0x8],rax
add qword [rbp-0xc],0xf7733c1
mov rax,qword [rbp-0x8]
xor rdx,rdx
mov rcx,0x10bebc1fb ; the # in 2's complement from the original
div rcx
mov qword [rbp-0x8],rdx