Skip to content

Instantly share code, notes, and snippets.

View MikeBild's full-sized avatar
🏠
Working from home

Mike Bild MikeBild

🏠
Working from home
View GitHub Profile
@MikeBild
MikeBild / coinchanger_without_shared_state.cs
Created October 2, 2013 09:39
Coin Changer Data hack without shared state :-/
int[] a={100,100,100,100,100,100,100};
new[]{1,2,5,10,20,50,100}.Reverse()
.Zip(a, (coin,amount)=>{ return new Dictionary<string,int>(){{"coin",coin},{"amount",amount},{"remainder",amount}};})
.Aggregate(new Dictionary<string,int>(){{"coin",100},{"amount",100},{"remainder",100}}, (acc, n) => {
acc["coins" + n["coin"]] = acc["remainder"]/n["coin"];
acc["remainder"] = acc["remainder"]%n["coin"];
return acc;
})
@MikeBild
MikeBild / reactive_coin_changer.html
Created October 2, 2013 11:23
Reactive Coin Changer
<!DOCTYPE HTML>
<html>
<head>
<title>Reactive Coin Changer</title>
<script src="http://cdnjs.cloudflare.com/ajax/libs/rxjs/2.1.11/rx.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/rxjs/2.1.11/rx.aggregates.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/rxjs/2.1.18/rx.time.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/rxjs/2.1.11/rx.binding.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/rxjs-dom/2.0.7/rx.dom.min.js"></script>
</head>
@MikeBild
MikeBild / coinchanger.js
Created October 3, 2013 06:43
Coin Changer in JS without state mutate
[1,2,5,10,20,50,100].reverse()
.reduce(function(acc, n){
return {
amount: acc.amount%n,
results: acc.results.concat({Coin:n, N: Math.floor(acc.amount/n)})
}
}, {amount:99, results:[]});
@MikeBild
MikeBild / coinchanger.ex
Created October 3, 2013 06:46
CoinChanger in Elixir
Enum.reverse([1,2,5,10,20,50,100]) |>
Enum.reduce([Amount: 99, Result: []], fn(n, acc) -> [Amount: rem(acc[:Amount], n), Result: acc[:Result] ++ [[Coin: n, Count: div(acc[:Amount],n)]]] end)

DEMO

@MikeBild
MikeBild / CC_DNP.md
Last active December 25, 2015 01:39 — forked from CarstenKoenig/CC_DNP.md

Beschreibung der Kata

Ziel dieser Kata ist es ein Programm zu schreiben, dass Wechselgeld berechnet. Dazu wird dem Programm eine Liste mit Münz-Werte (zum Beispiel [1, 2, 5, 10, 20, 50, 100, 200] für unsere üblichen EUR-Münzen) und der zu wechselnde Betrag übergeben. Das Programm soll darauf hin eine Liste von Anzahl/Münzwert-Paaren ausgeben, so dass der Betrag korrekt gewechselt wird und die Gesamtzahl der herausgegebenen Münzen minimiert wird.

Beispiel

Es soll 2,53 EUR gewechselt werden. Sowohl "1x2EUR, 1x50ct und 1x2ct, 1x1ct" als auch "2x1EUR, 2x20ct, 1x10ct, 3x1ct" würden den Betrag korrekt wechseln, aber die erste Möglichkeit gibt 4 Münzen zurück, während die Alternative 8 Münzen ausgeben würde. Das Programm soll in diesem Fall die erste Alternative zurückgeben (da diese hier die Optimallösung darstellt).

sei "greedy"...

@MikeBild
MikeBild / rx_download.html
Last active December 26, 2015 01:09
download data async
<!DOCTYPE html>
<html>
<head>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/rxjs/2.1.11/rx.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/rxjs/2.1.11/rx.aggregates.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/rxjs/2.1.18/rx.time.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/rxjs/2.1.11/rx.binding.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/rxjs-jquery/1.1.3/rx.jquery.js"></script>
</head>
@MikeBild
MikeBild / func_rec.ex
Last active December 26, 2015 03:29
f.(f) - timeout actor
defmodule Actors do
def publish do
publish(0)
end
def publish(count) do
receive do
{:in, pid} -> pid <- {:out, {{:msg, "demo"},{:count, count}}}
end
publish(count + 1)
@MikeBild
MikeBild / csv.js
Created December 7, 2013 16:35
CSV data access in NodeJS
var fs = require("fs");
var stream = fs.createReadStream('sample.csv')
var faithful_data = {
'eruption_duration': [],
'waiting_time': []
};
stream.on('readable', function(data){
var buf;
while (buf = stream.read()) {
---
language: objective-c
before_script:
- ./scripts/travis/add-key.sh
after_script:
- ./scripts/travis/remove-key.sh
after_success:
- ./scripts/travis/testflight.sh
env:
global: