Skip to content

Instantly share code, notes, and snippets.

@rirakkumya
rirakkumya / scalaCheckGeneratorSample.scala
Created January 24, 2012 05:39
ScalaCheckGeneratorSample
//ランダムにユーザーデータを作成
//name⇒20文字以内の英字
//age⇒1~100歳
import org.scalacheck.Gen
case class User(name:String, age:Int)
val userGen = for{
s <- Gen.choose(1,20)
n <- Gen.alphaStr
a <- Gen.choose(1,100)
}yield User(n.take(s),a)
@rirakkumya
rirakkumya / oneline.java
Created January 30, 2012 08:39
java vs scala
//文字列で構成された配列から、大文字の数をカウントし配列毎に改行して表示する
//Java
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Aaa {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
@rirakkumya
rirakkumya / prime.scala
Created February 1, 2012 01:12
素数判定
def prime(n:Int) = !(2 to scala.math.sqrt(n).toInt exists(n % _ == 0))
assert(List(2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97).filter(prime(_) == false).size == 0)
assert(List(4,6,8,9,10).filter(prime(_) == true).size == 0)
//2~nまでの素数リスト
def plist(n:Int) = 2 to n filter(prime(_) == true)
def plist(n:Int) = 2 to n filter(BigInt(_).isProbablePrime(64) == true)
@rirakkumya
rirakkumya / primeDec.scala
Created February 1, 2012 06:47
素因数分解
//scalaっぽい素因数分解
import scala.annotation.tailrec
object PrimeTest extends App {
def primeDec(n: Int) = {
@tailrec
def r(in: Int, plist: List[Int], result: List[Int] = List()): List[Int] = {
plist match {
case x :: xs if in % x == 0 => r(in / x, plist, x :: result)
case x :: xs if in % x != 0 => r(in, xs, result)
@rirakkumya
rirakkumya / foldLeft.scala
Created February 1, 2012 08:11
fold関数の使い方
def hb(i1:String,i2:String) = (i1 zip i2).foldLeft((0,0)){(a, b) => if(b._1 == b._2) (a._1+1,a._2) else (a._1,a._2+1)}
def s(n:Int) = (1 to n).foldLeft(List("")){(l,_) => List("A","C","G","T").flatMap(x => l.map(_ + x))}.filter(_.contains("AAG"))
@rirakkumya
rirakkumya / Build.scala
Created February 8, 2012 02:26
Scala Storm × scala redis
import sbt._
import Keys._
object ScalaStromBuild extends Build {
lazy val root = Project(id = "ScalaStorm", base = file(".")) aggregate (scalaRedis) dependsOn(scalaRedis)
lazy val scalaRedis = Project(id = "scala-redis", base = file("scala-redis"))
}
@rirakkumya
rirakkumya / StormWordCount.scala
Created February 8, 2012 07:17
【twitter Storm】ScalaStormとscala-redisでword countっちゃうコード
package storm.scala.examples
import storm.scala.dsl._
import backtype.storm.Config
import backtype.storm.LocalCluster
import backtype.storm.topology.TopologyBuilder
import backtype.storm.tuple.{Fields, Tuple, Values}
import com.redis._
import collection.mutable.{Map, HashMap}
import util.Random
@rirakkumya
rirakkumya / build.sbt
Created March 2, 2012 06:25
lift-jsonの一番簡単な使い方メモ #scala
libraryDependencies += "net.liftweb" %% "lift-json" % "2.4"
@rirakkumya
rirakkumya / problem.scala
Created March 15, 2012 11:30
どう書けばいいのかな
この問題を解決するには、
scala> val f:Int => Int = x => x
f: (Int) => Int = <function1>
この関数に数値を代入して、同じ関数を返す事が出来ないとダメなので解決出来ない。
@rirakkumya
rirakkumya / strProblem.scala
Created March 18, 2012 15:00
最長重複文字列問題
def maxDupStr(str:String) = {
def tails:String => List[String] = {
case "" => Nil
case x => x :: tails(x.tail)
}
val sorted = tails(str) sorted
val pair = sorted zip sorted.tail
val maxPair = {
pair map { case (s1,s2) => (s1 zip s2 filter {c => c._1 == c._2} size, s1)} max
}