-
Notifications
You must be signed in to change notification settings - Fork 36
2014년3월7일
Brandon JeongYeol Choi edited this page Jun 3, 2014
·
2 revisions
- Programming in Scala 30분 읽기
- Fair and Square ( https://code.google.com/codejam/contest/2270488/dashboard#s=p2 ) 문제 풀이
기분/근황/기대
- SK님
- 주말이니까... 저 생일입니다(박수 짝짝~~)
- 오늘 문제를 끝까지 풀 수 있으면 좋겠습니다.
- JY님
- 영화 삼백 관람이후, 피곤한 상태였지만 스터디 참가하니까 기분이 좋습니다.
- 문제가 어렵기는 하지만, 3단계까지 도전 가능할꺼 같습니다.
- SK님
- 두 번째 문제까지 풀어와서... 3 번째 문제까지 풀 수 있었으면 합니다.
- 오니까 기분이 좋습니다.
- Wayne Jo
- 이번 주에 모임에 오는 거 좋았는데...
- 다음 주에는 출장, 다다음주는 워크샵 스케쥴이 있어서.. 걱정이었습니다.
- 선결제를 지원해서 다행이라고 생각하고 있습니다.
- 두 번째 문제까지 풀어봤는데... 3 번째 문제까지 풀 수 있었으면 좋겠습니다.
- JS님
- 브레이킹 베드를 정주행 중입니다 :)
- 금요일에 별일이 없어서 개근 중이라 기분은 좋습니다.
- YH
- 어제 술먹고 뻗어서 회사를 안 가서 컨디션이 좋습니다.
- 문제를 오늘도 끝까지 풀어봤으면 좋겠습니다.
- SK님
- 차근차근 진척이 되어가는 점이 좋았습니다.
- 문제를 다 풀려면 많이 남은 점이 아쉽습니다.
- 다음에는 문제를 다 풀어보고 오겠습니다.
- JS님
- 어려운 문제를 푸는 것보다 쉬운 문제를 깔끔하게 푸는 것에 더 목적을 두게 바뀌었습니다.
- 코드를 서로 공유하지 못해서 아쉽습니다.
- JY
- 많이 피곤했지만 덕분에 에너지가 많이 올라갔고 재밌었던점이 큰 수확이었습니다.
- 진도를 많이 나가지 못해서 아쉽지만 그래도 스몰케이스는 통과해서 즐거웠습니다.
- YH
- 페어 프로그래밍을 해서 즐거웠습니다.
- 라지 케이스를 풀지 못해서 아쉬웠습니다.
- SK님
- 숫자가 나오는 패턴을 생각해 보지 않았었는데, 아이디어를 얻어서 좋았습니다.
- 집에서 풀면 라지2도 풀 수 있을 것 같은 희망을 얻었습니다.
- HT님
- 테스트케이스 쓰면서 작업하는 걸 처음 봐서 좋았습니다.
- 평소에 회사에서는 UI개발하느라 경험을 많이 못 했었다.
- 다음주에 못 와서 아쉽다.
- 소스: https://github.com/myeesan/codejam/blob/master/src/main/scala/fairandsquare/FairAndSquare.scala
- 테스트: https://github.com/myeesan/codejam/blob/master/src/test/scala/codejam/fairandscala/FairAndSquareTest.scala
object FairAndSquare extends App {
def count(from: BigInt, to: BigInt): Int =
fairAndSquares.filter(x => from <= x && x <= to).size
lazy val fairAndSquares: Seq[BigInt] =
(1 to 100).flatMap(roots(_)).map(BigInt(_) pow 2)
def roots(d: Int): Seq[String] = halfSrc((d + 1) / 2, 10, 2 - d % 2).map { xs =>
xs ++ (if (d % 2 == 0) xs.reverse else xs.reverse.tail)
}.map(_.mkString).sorted
def halfSrc(d: Int, limit: Int, lastTermMultiplier: Int): Seq[Seq[Int]] = for {
z <- if (d == 1) (1 to 3) else (0 to 2) if lastTermMultiplier * z * z < limit
xs <- if (d == 1) Seq(collection.immutable.Queue.empty)
else halfSrc(d - 1, limit - lastTermMultiplier * z * z, 2)
} yield xs :+ z
import java.io._
def process(iter: Iterator[String])(out: PrintStream) = {
for (i <- 1 to iter.next().toInt) {
val Array(a, b) = iter.next().split(' ').map(s => BigInt(s.trim))
out.println(s"Case #$i: ${count(a, b)}")
}
}
val out = new PrintStream(new File("out"))
try {
process(io.Source.fromFile("C-large-practice-2.in").getLines)(out)
} finally {
out.flush; out.close
}
}