Skip to content

Instantly share code, notes, and snippets.

View samskivert's full-sized avatar

Michael Bayne samskivert

View GitHub Profile
object Euler062 extends EulerApp {
def search (n :Long, cubes :Map[Long,List[Long]]) :Long = {
val cube = n*n*n
val key = cube.toString.sortWith(_>_).toLong
val perms = cube :: cubes.getOrElse(key, Nil)
if (perms.length == 5) perms.last
else search(n+1, cubes + (key -> perms))
}
def answer = search(1, Map())
}
object Euler063 extends EulerApp {
def count (n :Int, p :Int, c :Int) :Int =
if (n == 10) c
else if (BigInt(n).pow(p).toString.length < p) count(n+1, 1, c)
else count(n, p+1, c+1)
def answer = count(1, 1, 0)
}
@samskivert
samskivert / gist:742752
Created December 15, 2010 23:06
Readability
case class Command (name :String, callsOtherCode :Boolean)
case class Procedure (name :String, commands :List[Command])
case class Activation (procedure :Procedure, parent :Option[Activation], returnAddress :Int) {
def parentCmdName :Option[String] =
parent map(_.procedure.commands(returnAddress)) filter(_.callsOtherCode) map(_.name)
}
def callStack (act :Activation) :List[String] =
List(act.procedure.name) ++ act.parentCmdName ++ act.parent.map(callStack).flatten
// Say we have a List of names and we would like to find all those names where "am" occurs:
{
// LINQ
// string[] names = { "Sam", "Pamela", "Dave", "Pascal", "Erik" };
// List<string> filteredNames = names.Where(c => c.Contains("am"))
// .ToList();
// Java Streams
// String[] names = {"Sam","Pamela", "Dave", "Pascal", "Erik"};
// List<String> filteredNames = stream(names)
> proguard:proguard
[info] Updating {file:/Users/mdb/projects/codex/}codex...
[info] Resolving net.sf.proguard#proguard-base;4.9 ...
[info] Done updating.
[info] Compiling 32 Scala sources to /Users/mdb/projects/codex/target/classes...
[warn] there were 83 deprecation warning(s); re-run with -deprecation for details
[warn] one warning found
[info] ProGuard, version 4.9
[info] Reading program directory [/Users/mdb/projects/codex/target/classes]
[info] Reading program jar [/Users/mdb/.ivy2/local/com.samskivert/samscala/1.0-SNAPSHOT/jars/samscala.jar]
@samskivert
samskivert / gist:9374390
Created March 5, 2014 19:14
Bash script to remove redirect JS crap from scaladoc
#!/bin/sh
#
# Trims out the bullshit "redirect me to the top-level page" Javascript that scaladoc
# jams into every fucking documentation page. Fucking fuckers.
if [ -z "$1" ]; then
echo "Usage: $0 somedoc.jar"
exit 255
fi
@samskivert
samskivert / gist:11371679
Created April 28, 2014 13:14
Good morning to you too scalac...
exception when typing new scaled.Loc(scaled.Loc.apply(sym.lineNo(), 0).$asInstanceOf[Long]())/class scala.reflect.internal.Trees$Apply
constructor Loc in class Loc cannot be accessed in anonymous class $anonfun in file /Users/mdb/projects/scaled/codex-mode/src/main/scala/codex/CodexMode.scala
scala.reflect.internal.Types$TypeError: constructor Loc in class Loc cannot be accessed in anonymous class $anonfun
at scala.tools.nsc.typechecker.Contexts$Context.issue(Contexts.scala:401)
at scala.tools.nsc.typechecker.Infer$Inferencer.issue(Infer.scala:312)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$normalTypedApply$1$1.apply(Typers.scala:4613)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$normalTypedApply$1$1.apply(Typers.scala:4613)
at scala.tools.nsc.typechecker.Typers$Typer.onError$3(Typers.scala:4571)
at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4613)
at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4625)
2014-05-13 08:51:51 JRebel: Reloading class 'scaled.RBufferView'.
2014-05-13 08:51:51 JRebel: Reloading class 'scaled.Loc'.
2014-05-13 08:51:51 JRebel: Reloading class 'scaled.Loc$'.
2014-05-13 08:51:51 JRebel: Reloading class 'scaled.LineV'.
2014-05-13 08:51:52 JRebel: Reloading class 'scaled.Styles$'.
2014-05-13 08:51:52 JRebel: Reloading class 'scaled.Styles$Node'.
2014-05-13 08:51:52 JRebel: Reloading class 'scaled.Syntax$'.
2014-05-13 08:51:52 JRebel: Reloading class 'scaled.Matcher'.
2014-05-13 08:51:52 JRebel: Reloading class 'scaled.RBuffer'.
2014-05-13 08:51:52 JRebel: Reloading class 'scaled.Buffer'.
@extempore2 One pest is lack of single line method support (def foo = bar). I can probably cope with a -> a.foo() instead of _.foo().
object R2 {
trait R2[A] {
def f (a :A) :A
}
trait R2Gen {
def gen[A] :R2[A]
}
def foo (gen :R2Gen) {
val x = "one"