Skip to content

Instantly share code, notes, and snippets.

@fsarradin
fsarradin / Isin.scala
Created December 11, 2011 23:06
Check if a given code is a consistent with the ISIN standard
package isin
object Isin {
// based on http://en.wikipedia.org/wiki/International_Securities_Identification_Number
def isIsin(code: String): Boolean = {
val digits: String = code.init.map(c => BigInt(c.toString, 36)).mkString
val parity = digits.size & 1
val total: Int = digits.zipWithIndex.map {
case (c: Char, i: Int) =>
@fsarradin
fsarradin / BigDecimalTest.as
Created February 13, 2012 10:50
Test that shows a side-effect while calling BigDecimal.stripTrailingZeros
package com.whatever
{
import org.flexunit.asserts.assertEquals;
import org.granite.math.BigDecimal;
public class BigDecimalTest {
public function BigDecimalTest() {
}
@fsarradin
fsarradin / Mmind.java
Created April 13, 2012 12:57
Mastermind
package mmind;
import com.google.common.collect.AbstractIterator;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Mmind {
@fsarradin
fsarradin / ApplicativeFunctor.java
Created July 26, 2012 21:22
Applicative Functor in Guava
import com.google.common.base.Function;
import com.google.common.base.Optional;
import org.junit.Test;
import javax.annotation.Nullable;
import static org.fest.assertions.Assertions.assertThat;
public class OptionalTest {
@fsarradin
fsarradin / Option.java
Created July 27, 2012 11:19
Option with flatMap
package collect;
import com.google.common.base.Function;
public abstract class Option<T> {
private static final Option<?> ABSENT = new Absent<Object>();
public static <T> Option<T> of(T value) {
return new Present<T>(value);
}
package my.util;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.function.Function;
public abstract class Option<T> implements Iterable<T> {
@fsarradin
fsarradin / App.scala
Last active December 11, 2015 06:38
Alice and the banks
object App {
val banks: Map[String, Set[Account]] = Map(
"BGP" -> Set(
Account("CC1", "BGP", "Alice", 5000)
),
"La Postale" -> Set(
Account("CP1", "La Postale", "Alice", 2000)
),
"Societe Geniale" -> Set(),
@fsarradin
fsarradin / WebMain.java
Last active December 12, 2015 03:48
Two ways to create a basic Web application from scratch with route management (in Scala and in Java 8)
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpServer;
import java.io.IOException;
import java.net.InetSocketAddress;
public class WebMain {
public static void main(String[] args) throws IOException {
WebServer.serve(8080, "/").withRoute(
@fsarradin
fsarradin / DigitTest.java
Created February 11, 2013 12:52
Digit kata (format numbers for digital display). Java 7 Dependencies: Guava 13.0.1, junit 4.11, fest-assert-core 2.0M8
package test.kata_digit;
import static org.fest.assertions.api.Assertions.assertThat;
import org.junit.Test;
public class DigitTest {
@Test
public void should_get_digital_one_when_1() throws Exception {
@fsarradin
fsarradin / Point.scala
Created July 1, 2013 08:24
PointAdder and scala type class
object Point {
trait PointAdder[P1, P2] {
def add(p1: P1, p2: P2): Point3D
}
case class Point2D(x: Int, y: Int)
case class Point3D(x: Int, y: Int, z: Int)
implicit object Point2DAdder extends PointAdder[Point2D, Point2D] {