计算一组Range所覆盖的不重复整数的个数,求 < O(n*n) 的算法。
def cover(rs: Range*):Int = ???
assert(cover(0 to 4, 1 to 5) == 6)
assert(cover(0 to 4, 1 to 3) == 5)
assert(cover(0 to 4, 6 to 7) == 7)
assert(cover(0 to 4, 6 to 7, 2 to 6) == 8)
source "https://rubygems.org" | |
gem "progressbar" |
scala> import scala.reflect.runtime.universe._ | |
import scala.reflect.runtime.universe._ | |
scala> showCode(reify { | |
| for{ | |
| x <- 1 to 5 | |
| _ = print("hi") | |
| } print(x) | |
| }.tree) | |
res1: String = |
grammar ECMAScript; | |
options { | |
// Allow any char but \uFFFF (16 bit -1) | |
charVocabulary='\u0000'..'\uFFFE'; | |
} | |
/* this comes from section A.5 but is really the starting point, so | |
* it is present here. | |
*/ | |
program: |
object Constants { | |
val MaterialSep = "," | |
} | |
case class Client(need: Option[String], product: Option[String]) | |
def optionsIntoMap(x1: (String, Option[String]), | |
x2: (String, Option[String])): Map[String, List[String]] = { | |
List(x1, x2).collect { |
package com.gtan.parsers | |
import org.parboiled2._ | |
import shapeless._ | |
/** | |
* val MavenFormat = """(/.+)+/((.+?)(_(.+?)(_(.+))?)?)/(.+?)/(\3-\8(-(.+?))?\.(.+))""".r | |
* "/org/scala-lang/modules/scalajs/scalajs-sbt-plugin_2.10_0.13/0.5.6/scalajs-sbt-plugin-0.5.6.pom" | |
* "/io/spray/sbt-revolver_2.10_0.13/0.7.2/sbt-revolver-0.7.2.pom" | |
* "/org/scala-lang/modules/scalajs/scalajs-tools_2.10/0.5.6/scalajs-tools_2.10-0.5.6.pom" |
计算一组Range所覆盖的不重复整数的个数,求 < O(n*n) 的算法。
def cover(rs: Range*):Int = ???
assert(cover(0 to 4, 1 to 5) == 6)
assert(cover(0 to 4, 1 to 3) == 5)
assert(cover(0 to 4, 6 to 7) == 7)
assert(cover(0 to 4, 6 to 7, 2 to 6) == 8)
Kris Nuttycombe asks:
I genuinely wish I understood the appeal of unityped languages better. Can someone who really knows both well-typed and unityped explain?
I think the terms well-typed and unityped are a bit of question-begging here (you might as well say good-typed versus bad-typed), so instead I will say statically-typed and dynamically-typed.
I'm going to approach this article using Scala to stand-in for static typing and Python for dynamic typing. I feel like I am credibly proficient both languages: I don't currently write a lot of Python, but I still have affection for the language, and have probably written hundreds of thousands of lines of Python code over the years.
def bubbleSort[A: Ordering](xs: List[A]): List[A] = { | |
@annotation.tailrec | |
def bubble(ys: List[A], init: List[A], max: A): (List[A], A) = ys match { | |
case Nil => (init, max) | |
case h :: tail => | |
if(implicitly[Ordering[A]].compare(h, max) > 0) | |
bubble(tail, max::init, h) | |
else |
@annotation.tailrec | |
def isSorted[A](as: Seq[A], ordered: (A, A)=>Boolean):Boolean = { | |
as match { | |
case Seq() => true | |
case Seq(_) => true | |
case Seq(head, second, rest@_*) => | |
ordered(head, second) && isSorted(second +: rest, ordered) | |
} | |
} |
/* | |
* Copyright (C) 2013 Square, Inc. | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software |