Skip to content

Instantly share code, notes, and snippets.

@ryoppy
ryoppy / getQueryParams.js
Last active March 28, 2019 17:31
Parse query string. use Underscore.js.
/**
* Parse query string.
* ?a=b&c=d to {a: b, c: d}
* @param {String} (option) queryString
* @return {Object} query params
*/
getQueryParams: function(queryString) {
var query = (queryString || window.location.search).substring(1); // delete ?
if (!query) {
return false;
@ryoppy
ryoppy / view_test.scala
Last active October 12, 2017 04:47
正格と遅延(view)の計測
object Main extends App {
val a = (1 to 1000000)
// map2個
println("map2個-------------")
util.b { a.map(_+1).map(_+1) }.map(println)
util.b { a.map(_+1).map(_+1) }.map(println)
util.b { a.view.map(_+1).map(_+1).force }.map(println)
util.b { a.view.map(_+1).map(_+1).force }.map(println)

Genericを使った型クラスインスタンスの導出

@ryoppy516


アジェンダ

  1. HListについて
  2. Genericについて
@ryoppy
ryoppy / on_sort.scala
Created January 19, 2014 09:49
数え上げソート。バケツソート。スリープソート。
object Main {
def main(args: Array[String]) {
val l = Seq(3,1,5,3,2)
val range = l.max + 1
println(countingSort(l, range))
println(bucketSort(l, range))
sleepSort(l)
}
// 数え上げソート
@ryoppy
ryoppy / SpanningTree.scala
Last active January 3, 2016 12:59
最小全域木。プリム法とクラスカル法。UnionFind。
import scala.annotation.tailrec
object Main {
def main(args: Array[String]) {
println("prim")
prim(sampleGraph).sortBy(_.weight).foreach(println)
println("kruskal")
kruskal(sampleGraph).sortBy(_.weight).foreach(println)
}
@ryoppy
ryoppy / mt_safe.scala
Created January 15, 2014 09:56
Scalaでスレッドセーフのメモ
// 複数スレッドで++していくとスレッドセーフでないので値がおかしくなる
var a = 0
(0 until 10000).par.foreach { _ => a += 1 }
println(a) // 6772
// synchronizedを使っても可。
var b = 0
(0 until 10000).par.foreach { _ => synchronized { b += 1 } }
println(b) // 10000
@ryoppy
ryoppy / prim.scala
Last active January 3, 2016 07:39
プリム法は、重み付き連結グラフの最小全域木を求めるアルゴリズム
import scala.annotation.tailrec
object Main {
def main(args: Array[String]) {
prim(sampleGraph).foreach(println)
}
// 参考 : http://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AA%E3%83%A0%E6%B3%95
// 例のグラフもwikipediaのものと同じに。
def prim(g :Graph): Seq[Edge] = {
@ryoppy
ryoppy / WarshallFloyd.scala
Created January 14, 2014 13:23
ワーシャルフロイド法は、重み付き有向グラフの全ペアの最短経路問題を求めるアルゴリズム
import scala.annotation.tailrec
object Main {
def main(args: Array[String]) {
val s = 3
val m = Vector.fill(s, s)(0)
val r = floid(makeData(m))
printMatrix(r)
}
@ryoppy
ryoppy / bellmanFord.scala
Created January 13, 2014 04:35
ベルマンフォード法は、重みつき有向グラフにおける単一始点の最短経路問題を解くラベル修正アルゴリズム。負の閉路(負の値により最短距離が更新され続けてしまうループ)を見つけることもできる。
import scala.annotation.tailrec
object Main {
def main(args: Array[String]) {
bellmanFord(sampleGraph, Vertex("C"))
.toSeq.sortBy(_._2).map(println)
}
def bellmanFord(graph: Graph, start: Vertex): ShortestPath = {
@ryoppy
ryoppy / dikstra.scala
Created January 9, 2014 08:13
ダイクストラ法はグラフ理論における最短経路問題を解くためのアルゴリズム
import scala.annotation.tailrec
/*
[C] >2 [A] >2 [E]
\ >1 [D]
\ >1
\ \
>1 [B] >6 [F]
C>A>F が最短