Skip to content

Instantly share code, notes, and snippets.

@katzkb
katzkb / 0_reuse_code.js
Created November 8, 2016 04:45
Here are some things you can do with Gists in GistBox.
// Use Gists to store code you would like to remember later on
console.log(window); // log the "window" object to the console
<?php
// Your code here!
echo "Hello World!\n";
echo "Hi, I'm Katsuya\n";
echo "Who are you?\n";
?>
import scala.math.abs
// 気温リスト1~12月
val temperatureSeq:Seq[Int] =
Seq(4, 5, 11, 17, 19, 22, 28, 28, 22, 19, 14, 7)
def diffTemperature1(tSeq: Seq[Int]) = {
@scala.annotation.tailrec
def f(diffSeq:Seq[Int], tSeq: Seq[Int]): Seq[Int] = {
tSeq match {
case head +: second +: tail =>
f(diffSeq :+ abs(head - second), second +: tail)
import scala.math.abs
// 気温リスト1~12月
val temperatureSeq:Seq[Int] =
Seq(4, 5, 11, 17, 19, 22, 28, 28, 22, 19, 14, 7)
def diffTemperature2(tSeq: Seq[Int]) = {
tSeq.sliding(2).foldLeft(Seq.empty[Int])((totalSeq, numSeq) =>
totalSeq :+ abs(numSeq.head - numSeq.last)
)
}
diffTemperature2(temperatureSeq)
case class UserId(value: Long)
case class User (
id: UserId,
name: String
)
case class GroupId(value: Long)
case class Group (
id: GroupId,
name: String
)
case class UserView(
id: UserId,
name: String,
groups: Seq[Group]
)
val result: Seq[UserView] = ???
val userSeq: Seq[User] = UserRepository.findAll();
val groupSeq: Seq[Group] = GroupRepository.findAll();
val groupMemberSeq: Seq[GroupMember] = GroupMembersRepository.findAll();
val result: Seq[UserView] = userSeq.map(user => { // ①
val groupIdSeq: Seq[GroupId] =
groupMemberSeq
.filter(_.userId == user.id) // ②
.map(_.groupId)
val userGroups: Seq[Group] = // ③
groupSeq.filter(group =>
// データを10件用意
val userSeq: Seq[User] =
(1L to 10L).map(id => User(UserId(id), "name" + id.toString))
val groupSeq: Seq[Group] =
(1L to 10L).map(id => Group(GroupId(id), "name" + id.toString))
val groupMemberSeq: Seq[GroupMember] =
(1L to 10L).map(id => GroupMember(GroupMemberId(id), UserId(id), GroupId(id)))
val startTime = System.currentTimeMillis
val result: Seq[UserView] = ...
println((System.currentTimeMillis - startTime).toString + "ミリ秒")
// データを10,000件用意
val userSeq: Seq[User] =
(1L to 10000L).map(id => User(UserId(id), "name" + id.toString))
val groupSeq: Seq[Group] =
(1L to 10000L).map(id => Group(GroupId(id), "name" + id.toString))
val groupMemberSeq: Seq[GroupMember] =
(1L to 10000L).map(id => GroupMember(GroupMemberId(id), UserId(id), GroupId(id)))
...
val result: Seq[UserView] = userSeq.map(user => { // ①ユーザー人数分回る
val groupIdSeq: Seq[GroupId] =
groupMemberSeq
.filter(_.userId == user.id) // ②マッピング数分回る
.map(_.groupId)
val userGroups: Seq[Group] =
groupSeq.filter(group => // ③グループ数分回る
groupIdSeq.contains(group.id)
)
UserView(