Giter VIP home page Giter VIP logo

learningscalamaterials's People

Contributors

swartzrock avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

learningscalamaterials's Issues

Error in output

In chapter One, 3rd assignment question, it is mentioned to half the result before converting back to centigrade but in solution, res0 is not halved.

Actual result is Double = 2.361111111111111 but result present in solution is Double = 22.5

OpenWeather API requires API Key

Hello,

First off, great book.

Second, OpenWeather's API changed so you need an API key now. Unfortunately, at least from my testing, the API does not return the same results as displayed in Chapter 6 making those sections/exercises difficult to understand what is supposed to be happening.

In chapter 7 it appears to work if I manually call cityTempe, but otherwise the code itself as written doesn't appear to execute. If I call cityTemp("Scottsdale") and hit save multiple times within the Eclipse IDE or command line, it will show up eventually every fifth or sixth time.

def cityTemp(name: String): Double = {
        val url = "http://api.openweathermap.org/data/2.5/weather?appid=[APIKEY]"
        val cityUrl = s"$url&q=$name"
        val json = io.Source.fromURL(cityUrl).mkString.trim
        val pattern = """.*"temp":([\d.]+).*""".r
        val pattern(temp) = json
        temp.toDouble
  }                                               //> cityTemp: (name: String)Double

    val cityTemps = Future sequence Seq(
            Future(cityTemp("Fresno")), Future(cityTemp("Tempe"))
    )                                         //> cityTemps  : scala.concurrent.Future[Seq[Double]] = List()

    cityTemps onSuccess {
        case Seq(x,y) if x > y => println(s"Fresno is warmer: $x K")
        case Seq(x,y) if x < y => println(s"Tempe is warmer: $y K")
    }

Thoughts?

Issue in exersises solution.

For exercise 3 in chapter 1 we have to half value, but in answer it's not halved.

  1. Take the result from exercise 2, half it, and convert it back to Centigrade. You can use the generated constant variable (e.g. "res0") instead of copying and pasting the value yourself.

Answer

Using parentheses around the subtraction, which needs to occur before the multiplication and division, will give it highest precedence.

scala> 22.5 * 9 / 5 + 32
res0: Double = 72.5

scala> (res0 - 32) * 5 / 9
res1: Double = 22.5

Use long to get first 100 fibonacci will cause overflow

In Chapter 7 exercise 1.c, as the first 100 of fibonacci numbers will exceed 64bits numbers, you can't use Int but also Long too! See the result below(The answer here just show first 60 numbers which is OK):

fib: (a: Long, b: Long)Stream[Long]
1,1,2,3,5,8,13,21,34,55
89,144,233,377,610,987,1597,2584,4181,6765
10946,17711,28657,46368,75025,121393,196418,317811,514229,832040
1346269,2178309,3524578,5702887,9227465,14930352,24157817,39088169,63245986,102334155
165580141,267914296,433494437,701408733,1134903170,1836311903,2971215073,4807526976,7778742049,12586269025
20365011074,32951280099,53316291173,86267571272,139583862445,225851433717,365435296162,591286729879,956722026041,1548008755920
2504730781961,4052739537881,6557470319842,10610209857723,17167680177565,27777890035288,44945570212853,72723460248141,117669030460994,190392490709135
308061521170129,498454011879264,806515533049393,1304969544928657,2111485077978050,3416454622906707,5527939700884757,8944394323791464,14472334024676221,23416728348467685
37889062373143906,61305790721611591,99194853094755497,160500643816367088,259695496911122585,420196140727489673,679891637638612258,1100087778366101931,1779979416004714189,2880067194370816120
4660046610375530309,7540113804746346429,-6246583658587674878,1293530146158671551,-4953053512429003327,-3659523366270331776,-8612576878699335103,6174643828739884737,-2437933049959450366,3736710778780434371

We can verify this using the following code:

val test: Long = 4660046610375530309l + 7540113804746346429l
val maxLong = Long.MaxValue
val max: BigInt = BigInt(2).pow(63) - 1
val big: BigInt = BigInt(4660046610375530309l) + BigInt(7540113804746346429l)

The output is:

test: Long = -6246583658587674878
maxLong: Long = 9223372036854775807
max: BigInt = 9223372036854775807
big: BigInt = 12200160415121876738

As we can see use BigInt will fix the overflow problem:

fib: (a: BigInt, b: BigInt)Stream[BigInt]
1,1,2,3,5,8,13,21,34,55
89,144,233,377,610,987,1597,2584,4181,6765
10946,17711,28657,46368,75025,121393,196418,317811,514229,832040
1346269,2178309,3524578,5702887,9227465,14930352,24157817,39088169,63245986,102334155
165580141,267914296,433494437,701408733,1134903170,1836311903,2971215073,4807526976,7778742049,12586269025
20365011074,32951280099,53316291173,86267571272,139583862445,225851433717,365435296162,591286729879,956722026041,1548008755920
2504730781961,4052739537881,6557470319842,10610209857723,17167680177565,27777890035288,44945570212853,72723460248141,117669030460994,190392490709135
308061521170129,498454011879264,806515533049393,1304969544928657,2111485077978050,3416454622906707,5527939700884757,8944394323791464,14472334024676221,23416728348467685
37889062373143906,61305790721611591,99194853094755497,160500643816367088,259695496911122585,420196140727489673,679891637638612258,1100087778366101931,1779979416004714189,2880067194370816120
4660046610375530309,7540113804746346429,12200160415121876738,19740274219868223167,31940434634990099905,51680708854858323072,83621143489848422977,135301852344706746049,218922995834555169026,354224848179261915075

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.