Last active
June 15, 2025 03:59
-
-
Save hhimanshu/55564b70dac97d0aa4eb to your computer and use it in GitHub Desktop.
Revisions
-
hhimanshu revised this gist
Sep 24, 2015 . 1 changed file with 1 addition and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -119,3 +119,4 @@ scala> 1048576.0 9.5367431640625E-7 */ // skipping 6-10 -
hhimanshu revised this gist
Sep 24, 2015 . 1 changed file with 43 additions and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -76,4 +76,46 @@ res11: Double = 15.36 scala> numbers.sum/numbers.size res12: Double = 3.84 /** * 5. Write a Scala program that writes the powers of 2 and their reciprocals to a file, with the exponent ranging from 0 to 20. Line up the columns: 1 1 2 0.5 4 0.25 ... ... */ scala> val out = new java.io.PrintWriter("out.txt") out: java.io.PrintWriter = java.io.PrintWriter@259aec72 scala> for (i <- 0 to 20) { | val pow = scala.math.pow(2, i) | out.println(pow + "\t" + 1/pow) | } scala> out.close scala> /** * $ cat out.txt 1.0 1.0 2.0 0.5 4.0 0.25 8.0 0.125 16.0 0.0625 32.0 0.03125 64.0 0.015625 128.0 0.0078125 256.0 0.00390625 512.0 0.001953125 1024.0 9.765625E-4 2048.0 4.8828125E-4 4096.0 2.44140625E-4 8192.0 1.220703125E-4 16384.0 6.103515625E-5 32768.0 3.0517578125E-5 65536.0 1.52587890625E-5 131072.0 7.62939453125E-6 262144.0 3.814697265625E-6 524288.0 1.9073486328125E-6 1048576.0 9.5367431640625E-7 */ -
hhimanshu revised this gist
Sep 15, 2015 . 1 changed file with 21 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -55,4 +55,25 @@ scala> Source.fromURL("http://www.gutenberg.org/cache/epub/4809/pg4809.txt", "UT res7: Array[String] = Array(redistributing, Volunteers*****, council--Policy, Orange--Corrupt, government--Efforts, reform--Influence, Armenteros--Painful, retire--Secret, Philip--Ominous, persecution--Execution, Antwerp--Horrible, Protestants--Remonstrance, Titelmann--Obduracy, Philip--Council, Trent--Quarrel, envoys--Order, Netherlands--Opposition, measure--Reluctance, Spain--Violent, instructions--Remarkable, Orange--Apoplexy, Viglius--Temporary, Hopper--Departure, Cambray--Character, Archbishop--Egmont, Spain--Flattery, bribery--Council, Doctors--Vehement, --Proceedings, principality--Egmont's, persecution--Indignation, Egmont--Habitual, dissimulation, King--Reproof, Orange--Assembly, Brussels--Result, deliberations, Philip--Universal, Netherlands--New, heretics--Interview, subject-... scala> /** * 4. Write a Scala program that reads a text file containing only floating-point numbers. Print the sum, average, maximum, and minimum of the numbers in the file. */ scala> import scala.io.Source import scala.io.Source scala> val numbers = Source.fromFile("/Users/harit/Downloads/floating.txt", "UTF-8").getLines.map(_.toDouble).toArray numbers: Array[Double] = Array(3.14, 2.34, 1.54, 8.34) scala> numbers.min res9: Double = 1.54 scala> numbers.max res10: Double = 8.34 scala> numbers.sum res11: Double = 15.36 scala> numbers.sum/numbers.size res12: Double = 3.84
-
hhimanshu revised this gist
Sep 15, 2015 . 1 changed file with 11 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -45,3 +45,14 @@ scala> out.flush scala> out.close /** *“3. Write a Scala code snippet that reads a file and prints all words with more than 12 characters to the console. Extra credit if you can do this in a single line. */ scala> import scala.io.Source import scala.io.Source scala> Source.fromURL("http://www.gutenberg.org/cache/epub/4809/pg4809.txt", "UTF-8").mkString.split("\\s").filter(_.length > 12) res7: Array[String] = Array(redistributing, Volunteers*****, council--Policy, Orange--Corrupt, government--Efforts, reform--Influence, Armenteros--Painful, retire--Secret, Philip--Ominous, persecution--Execution, Antwerp--Horrible, Protestants--Remonstrance, Titelmann--Obduracy, Philip--Council, Trent--Quarrel, envoys--Order, Netherlands--Opposition, measure--Reluctance, Spain--Violent, instructions--Remarkable, Orange--Apoplexy, Viglius--Temporary, Hopper--Departure, Cambray--Character, Archbishop--Egmont, Spain--Flattery, bribery--Council, Doctors--Vehement, --Proceedings, principality--Egmont's, persecution--Indignation, Egmont--Habitual, dissimulation, King--Reproof, Orange--Assembly, Brussels--Result, deliberations, Philip--Universal, Netherlands--New, heretics--Interview, subject-... scala>
-
hhimanshu revised this gist
Sep 15, 2015 . 1 changed file with 47 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,47 @@ /** * 1. Write a Scala code snippet that reverses the lines in a file (making the last line the first one, and so on). */ scala> import scala.io.Source import scala.io.Source scala> val source = Source.fromURL("http://www.gutenberg.org/cache/epub/4809/pg4809.txt", "UTF-8") source: scala.io.BufferedSource = non-empty iterator scala> source.getLines.toArray.reverse res10: Array[String] = Array(*END THE SMALL PRINT! FOR PUBLIC DOMAIN EBOOKS*Ver.02/11/02*END*, "", express permission.], they hardware or software or any other related product without, used in any sales of Project Gutenberg eBooks or other materials be, Michael S. Hart. Project Gutenberg is a TradeMark and may not be, when distributed free of all fees. Copyright (C) 2001, 2002 by, [Portions of this eBook's header and trailer may be reprinted only, "", hart@pobox.com, software or other items, please contact Michael Hart at:, If you are interested in contributing scanning equipment or, "", "Project Gutenberg Literary Archive Foundation.", Money should be paid to the:, public domain materials, or royalty free copyright licenses., The Project gratefully accepts contributions of money, tim... scala> /** * 2. Write a Scala program that reads a file with tabs, replaces each tab with spaces so that tab stops are at n-column boundaries, and writes the result to the same file. */ // File (with tabs) /** * $ cat ~/Downloads/fileWithTabs.txt a b c d e f */ scala> val tabPattern = """\t""".r tabPattern: scala.util.matching.Regex = \t scala> val source = Source.fromFile("/Users/harit/Downloads/fileWithTabs.txt") source: scala.io.BufferedSource = non-empty iterator scala> val lines = source.getLines.toArray lines: Array[String] = Array(a b c, d e f) scala> lines(0) res13: String = a b c scala> import java.io.PrintWriter import java.io.PrintWriter scala> val out = new PrintWriter("/Users/harit/Downloads/fileWithTabs.txt") out: java.io.PrintWriter = java.io.PrintWriter@106e6dfe scala> for(line <- replacedLines) {out.println(line)} scala> out.flush scala> out.close -
hhimanshu revised this gist
Aug 28, 2015 . 1 changed file with 22 additions and 4 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -49,15 +49,15 @@ res60: Double = 25.4 * 4. Define a Point class with a companion object so that you can construct * Point instances as Point(3, 4), without using new. */ scala> :paste // Entering paste mode (ctrl-D to finish) object Point { def apply(x: Int, y: Int) = new Point(x,y) } class Point private(x:Int, y: Int) { override def toString = s"New Point Created (${x}, ${y}))" } // Exiting paste mode, now interpreting. @@ -66,6 +66,24 @@ defined object Point defined class Point scala> Point(3,4) res0: Point = New Point Created (3, 4)) /** * 5. Write a Scala application, using the App trait, that prints the command-line arguments * in reverse order, separated by spaces. For example, scala Reverse Hello World should print World Hello.” */ // Open a new file called MyApp.scala and paste the following contents object MyApp extends App { if(args.length < 1) println("Provide enough arguments to print") println(args.reverse.mkString(" ")) } $ scalac MyApp.scala $ scala MyApp Hello World Scala Scala World Hello $ scala MyApp Provide enough arguments to print // Not attempting 6,7,8 (Enumeration) -
hhimanshu revised this gist
Aug 28, 2015 . 1 changed file with 68 additions and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,4 +1,71 @@ /** * 1. Write an object Conversions with methods inchesToCentimeters, gallonsToLiters, and milesToKilometers. */ scala> object Conversions { | def inchesToCentimeters(inches: Double): Double = 2.54 * inches | def gallonsToLiters(gallons: Double): Double = 3.78541 * gallons | def milesToKilometers(miles: Double): Double = 1.61 * miles | } defined object Conversions scala> Conversions.inchesToCentimeters(10) res56: Double = 25.4 scala> Conversions.gallonsToLiters(1) res57: Double = 3.78541 scala> Conversions.milesToKilometers(7) res58: Double = 11.270000000000001 /** * 2. The preceding problem wasn’t very object-oriented. Provide a general superclass UnitConversion and define objects InchesToCentimeters, * GallonsToLiters, and MilesToKilometers that extend it. */ scala> abstract class UnitConversion { | def convert(input: Double): Double | } defined class UnitConversion scala> object InchesToCentimeters extends UnitConversion { | def convert(input: Double) = 2.54 * input | def apply(input: Double) = convert(input) | } defined object InchesToCentimeters scala> InchesToCentimeters(1) res59: Double = 2.54 scala> InchesToCentimeters(10) res60: Double = 25.4 /** * 3. Define an Origin object that extends java.awt.Point. * Why is this not actually a good idea? (Have a close look at the methods of the Point class.) */ // Not a good idea since it has setXXX methods and in singleton since everybody shares, anyone can // change value causing trouble /** * 4. Define a Point class with a companion object so that you can construct * Point instances as Point(3, 4), without using new. */ scala> :paste // Entering paste mode (ctrl-D to finish) object Point { def apply(x: Int, y: Int) = new Point(x,y) } class Point private(x:Int, y: Int) { println(s"New Point Created (${x}, ${y}))") } // Exiting paste mode, now interpreting. defined object Point defined class Point scala> Point(3,4) New Point Created (3, 4)) res61: Point = Point@e042502 -
hhimanshu revised this gist
Aug 28, 2015 . 1 changed file with 4 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,4 @@ /** * 1. Write an object Conversions with methods inchesToCentimeters, gallonsToLiters, and milesToKilometers. */
-
hhimanshu revised this gist
Aug 26, 2015 . 1 changed file with 26 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -206,3 +206,29 @@ ftp.nonProxyHosts |local|*.local|169.254/16|*.169.254/16 sun.cpu.isalist | res42: Iterable[Unit] = ArrayBuffer((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) /** * 8. Write a function minmax(values: Array[Int]) that returns a pair containing the smallest and largest values in the array. */ scala> def minmax(values: Array[Int]):(Int, Int) = (values.min, values.max) minmax: (values: Array[Int])(Int, Int) scala> minmax(Array(1, 100, -1, 20)) res45: (Int, Int) = (-1,100) /** * 9. Write a function lteqgt(values: Array[Int], v: Int) that returns a triple * containing the counts of values less than v, equal to v, and greater than v. */ scala> def lteqgt(values: Array[Int], v: Int): (Int, Int, Int) = (values.count(_ < v), values.count(_ == v), values.count(_ > v)) lteqgt: (values: Array[Int], v: Int)(Int, Int, Int) scala> lteqgt(Array(0,0,1,1,1,2,2), 1) res47: (Int, Int, Int) = (2,3,2) /** * 10. What happens when you zip together two strings, such as "Hello".zip("World")? Come up with a plausible use case. */ scala> "Hello".zip("World") res52: scala.collection.immutable.IndexedSeq[(Char, Char)] = Vector((H,W), (e,o), (l,r), (l,l), (o,d)) // use-case? May be sum 2 arrays -
hhimanshu revised this gist
Aug 26, 2015 . 1 changed file with 85 additions and 2 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -121,5 +121,88 @@ weekdays: scala.collection.mutable.LinkedHashMap[String,Int] = Map(Monday -> 2, scala> weekdays res0: scala.collection.mutable.LinkedHashMap[String,Int] = Map(Monday -> 2, Tuesday -> 3, Sunday -> 1, Friday -> 6) /** * 7. Print a table of all Java properties, like this: java.runtime.name | Java(TM) SE Runtime Environment sun.boot.library.path | /home/apps/jdk1.6.0_21/jre/lib/i386 java.vm.version | 17.0-b16 java.vm.vendor | Sun Microsystems Inc. java.vendor.url | http://java.sun.com/ path.separator | : java.vm.name | Java HotSpot(TM) Server VM You need to find the length of the longest key before you can print the table. */ // https://stackoverflow.com/questions/32217170/how-to-have-width-between-values scala> import scala.collection.JavaConversions.propertiesAsScalaMap import scala.collection.JavaConversions.propertiesAsScalaMap scala> val props: scala.collection.Map[String, String] = System.getProperties() props: scala.collection.Map[String,String] = Map(env.emacs -> "", java.runtime.name -> Java(TM) SE Runtime Environment, sun.boot.library.path -> /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib, java.vm.version -> 25.51-b03, gopherProxySet -> false, java.vm.vendor -> Oracle Corporation, java.vendor.url -> http://java.oracle.com/, path.separator -> :, java.vm.name -> Java HotSpot(TM) 64-Bit Server VM, file.encoding.pkg -> sun.io, user.country -> US, sun.java.launcher -> SUN_STANDARD, sun.os.patch.level -> unknown, java.vm.specification.name -> Java Virtual Machine Specification, user.dir -> /Users/harit, java.runtime.version -> 1.8.0_51-b16, java.awt.graphicsenv -> sun.awt.CGraphicsEnvironment, java.endorsed.dirs -> /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk... scala> props.keys.map(_.length).max res24: Int = 29 scala> for ((k,v) <- props) yield println(k.padTo(29, " ").mkString + "|" + v) env.emacs | java.runtime.name |Java(TM) SE Runtime Environment sun.boot.library.path |/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib java.vm.version |25.51-b03 gopherProxySet |false java.vm.vendor |Oracle Corporation java.vendor.url |http://java.oracle.com/ path.separator |: java.vm.name |Java HotSpot(TM) 64-Bit Server VM file.encoding.pkg |sun.io user.country |US sun.java.launcher |SUN_STANDARD sun.os.patch.level |unknown java.vm.specification.name |Java Virtual Machine Specification user.dir |/Users/harit java.runtime.version |1.8.0_51-b16 java.awt.graphicsenv |sun.awt.CGraphicsEnvironment java.endorsed.dirs |/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/endorsed os.arch |x86_64 java.io.tmpdir |/var/folders/39/rrqhhzfn42bf7qcwqg2kywtr0000gn/T/ line.separator | java.vm.specification.vendor |Oracle Corporation os.name |Mac OS X sun.jnu.encoding |UTF-8 java.library.path |/Users/harit/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:. java.specification.name |Java Platform API Specification java.class.version |52.0 sun.management.compiler |HotSpot 64-Bit Tiered Compilers os.version |10.10.4 http.nonProxyHosts |local|*.local|169.254/16|*.169.254/16 user.home |/Users/harit user.timezone |America/Los_Angeles scala.home |/usr/local/Cellar/scala/2.11.7/libexec java.awt.printerjob |sun.lwawt.macosx.CPrinterJob file.encoding |UTF-8 java.specification.version |1.8 scala.usejavacp |true java.class.path |"" user.name |harit java.vm.specification.version|1.8 sun.java.command |scala.tools.nsc.MainGenericRunner java.home |/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre sun.arch.data.model |64 user.language |en java.specification.vendor |Oracle Corporation awt.toolkit |sun.lwawt.macosx.LWCToolkit java.vm.info |mixed mode java.version |1.8.0_51 java.ext.dirs |/Users/harit/Library/Java/Extensions:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/ext:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java sun.boot.class.path |/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/sunrsasign.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre/classes:/usr/local/Cellar/scala/2.11.7/libexec/lib/akka-actor_2.11-2.3.10.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/config-1.2.1.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/jline-2.12.1.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-actors-2.11.0.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-actors-migration_2.11-1.1.0.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-compiler.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-continuations-library_2.11-1.0.2.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-continuations-plugin_2.11.7-1.0.2.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-library.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-parser-combinators_2.11-1.0.4.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-reflect.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-swing_2.11-1.0.2.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scala-xml_2.11-1.0.4.jar:/usr/local/Cellar/scala/2.11.7/libexec/lib/scalap-2.11.7.jar java.vendor |Oracle Corporation file.separator |/ java.vendor.url.bug |http://bugreport.sun.com/bugreport/ sun.io.unicode.encoding |UnicodeBig sun.cpu.endian |little socksNonProxyHosts |local|*.local|169.254/16|*.169.254/16 ftp.nonProxyHosts |local|*.local|169.254/16|*.169.254/16 sun.cpu.isalist | res42: Iterable[Unit] = ArrayBuffer((), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()) -
hhimanshu revised this gist
Aug 26, 2015 . 1 changed file with 37 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -86,3 +86,40 @@ scala> for(word <- words) { scala> wordCountSorted res2: scala.collection.immutable.SortedMap[String,Int] = Map("'Second -> 1, "1001 -> 1, "A -> 3, "All -> 2, "And -> 1, "Any -> 1, "But -> 1, "Defects," -> 1, "Do -> 1, "Draw -> 1, "Either -> 1, "First -> 5, "For -> 2, "From -> 1, "Here -> 1, "How -> 1, "In -> 2, "Information -> 1, "No -> 1, "Non-Exclusive" -> 1, "Not -> 1, "Open -> 1, "Pardon -> 1, "Pay-As-You-Leave" -> 1, "Plain -> 2, "Project -> 5, "Right -> 1, "Second -> 3, "Sell" -> 1, "Shoot -> 1, "Should -> 1, "Sky." -> 1, "Sneezing -> 1, "Speed-Pictures," -> 1, "Study -> 1, "The -> 10, "There -> 1, "There's -> 1, "Transference -> 1, "We -> 1, "Well, -> 1, "What -> 2, "Where -> 1, "Winter-Sports," -> 1, "Work -> 1, "_'How -> 1, "a -> 1, "arrow-points-to-the-scene-of-the-crime" -> 1, "author" -> 1, "barrels -> 1, "before -> 2, "by ... /** * 5. Repeat the preceding exercise with a java.util.TreeMap that you adapt to the Scala API. */ scala> import java.util.TreeMap import java.util.TreeMap scala> var wordCountTreeMap = new TreeMap[String, Int]() wordCountTreeMap: java.util.TreeMap[String,Int] = {} scala> for(word <- words) { | val count = wordCountTreeMap.getOrDefault(word, 0) | wordCountTreeMap.put(word, count+1) | } scala> wordCount wordCountSorted wordCountTreeMap scala> wordCountTreeMap res7: java.util.TreeMap[String,Int] = {"'Second=1, "1001=1, "A=3, "All=2, "And=1, "Any=1, "But=1, "Defects,"=1, "Do=1, "Draw=1, "Either=1, "First=5, "For=2, "From=1, "Here=1, "How=1, "In=2, "Information=1, "No=1, "Non-Exclusive"=1, "Not=1, "Open=1, "Pardon=1, "Pay-As-You-Leave"=1, "Plain=2, "Project=5, "Right=1, "Second=3, "Sell"=1, "Shoot=1, "Should=1, "Sky."=1, "Sneezing=1, "Speed-Pictures,"=1, "Study=1, "The=10, "There=1, "There's=1, "Transference=1, "We=1, "Well,=1, "What=2, "Where=1, "Winter-Sports,"=1, "Work=1, "_'How=1, "a=1, "arrow-points-to-the-scene-of-the-crime"=1, "author"=1, "barrels=1, "before=2, "by=1, "cashed=1, "dead"=1, "deliver=1, "delivers=2, "eaten=1, "either=1, "film-eater."=1, "flivver"=1, "for=1, "fuzzy."=1, "get=1, "he=1, "heart-trouble."=1, "hot=1, "it's=1, "my... /** * 6. Define a linked hash map that maps "Monday" to java.util.Calendar.MONDAY, and similarly for the other weekdays. Demonstrate that the elements are visited in insertion order. */ scala> import scala.collection.mutable.LinkedHashMap import scala.collection.mutable.LinkedHashMap scala> import java.util.Calendar._ import java.util.Calendar._ scala> val weekdays = LinkedHashMap[String, Int]("Monday" -> MONDAY, "Tuesday" -> TUESDAY, "Sunday" -> SUNDAY, "Friday" -> FRIDAY) weekdays: scala.collection.mutable.LinkedHashMap[String,Int] = Map(Monday -> 2, Tuesday -> 3, Sunday -> 1, Friday -> 6) scala> weekdays res0: scala.collection.mutable.LinkedHashMap[String,Int] = Map(Monday -> 2, Tuesday -> 3, Sunday -> 1, Friday -> 6)
-
hhimanshu revised this gist
Aug 20, 2015 . 1 changed file with 88 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,88 @@ /** * 1. Set up a map of prices for a number of gizmos that you covet. * Then produce a second map with the same keys and the prices at a 10 percent discount. */ scala> val items = Map("Tesla" -> 80000, "iWatch" -> 700) items: scala.collection.immutable.Map[String,Int] = Map(Tesla -> 80000, iWatch -> 700) scala> for ((item, value) <- items) yield(item, value - (value * 0.1)) res2: scala.collection.immutable.Map[String,Double] = Map(Tesla -> 72000.0, iWatch -> 630.0) /** * 2. Write a program that reads words from a file. Use a mutable map to count how often each word appears. */ // source file: https://www.gutenberg.org/cache/epub/35709/pg35709.txt scala> val words = scala.io.Source.fromFile("pg35709.txt").mkString.split("\\s+") words: Array[String] = Array(The, Project, Gutenberg, EBook, of, Making, Your, Camera, Pay,, by, Frederick, C., Davis, This, eBook, is, for, the, use, of, anyone, anywhere, at, no, cost, and, with, almost, no, restrictions, whatsoever., You, may, copy, it,, give, it, away, or, re-use, it, under, the, terms, of, the, Project, Gutenberg, License, included, with, this, eBook, or, online, at, www.gutenberg.net, Title:, Making, Your, Camera, Pay, Author:, Frederick, C., Davis, Release, Date:, March, 29,, 2011, [EBook, #35709], Language:, English, ***, START, OF, THIS, PROJECT, GUTENBERG, EBOOK, MAKING, YOUR, CAMERA, PAY, ***, Produced, by, The, Online, Distributed, Proofreading, Team, at, http://www.pgdp.net, (This, file, was, produced, from, images, generously, made, available, by, The, In... scala> val wordCount = scala.collection.mutable.HashMap[String, Int]() wordCount: scala.collection.mutable.HashMap[String,Int] = Map() scala> for (word <- words) { | val count = wordCount.getOrElse(word, 0) | wordCount(word) = count + 1 | } scala> word wordCount words scala> wordCount res1: scala.collection.mutable.HashMap[String,Int] = Map(arts -> 1, follow -> 3, request, -> 1, Lines. -> 1, demand -> 7, 1.E.4. -> 1, PRODUCT -> 2, 470 -> 1, Chicago, -> 3, scenic -> 1, J2 -> 1, untrimmed -> 1, photographs--not -> 1, basis. -> 1, "prints -> 1, instances. -> 1, Onion-Planter -> 1, trick -> 1, illustrating -> 3, prefer. -> 1, detected -> 1, non-exclusive. -> 1, famous -> 1, Competition -> 2, expense -> 1, created -> 2, renamed. -> 1, maggot -> 1, calendar-photographs, -> 1, widely-read -> 1, Publisher, -> 1, producers -> 1, Shapes -> 1, ARTICLES -> 2, yearly -> 2, retoucher -> 1, satisfy -> 2, agrees: -> 1, Gentleman_, -> 1, intellectual -> 2, hard -> 2, Porch. -> 1, sold.) -> 1, START -> 1, House -> 2, welcome -> 1, Dealers' -> 1, ... -> 2, pasted -> 1, _Cosmopolitan_ -... /** * 3. Repeat the preceding exercise with an immutable map. */ scala> val words = scala.io.Source.fromURL("https://www.gutenberg.org/cache/epub/35709/pg35709.txt").mkString.split("\\s+") words: Array[String] = Array(The, Project, Gutenberg, EBook, of, Making, Your, Camera, Pay,, by, Frederick, C., Davis, This, eBook, is, for, the, use, of, anyone, anywhere, at, no, cost, and, with, almost, no, restrictions, whatsoever., You, may, copy, it,, give, it, away, or, re-use, it, under, the, terms, of, the, Project, Gutenberg, License, included, with, this, eBook, or, online, at, www.gutenberg.net, Title:, Making, Your, Camera, Pay, Author:, Frederick, C., Davis, Release, Date:, March, 29,, 2011, [EBook, #35709], Language:, English, ***, START, OF, THIS, PROJECT, GUTENBERG, EBOOK, MAKING, YOUR, CAMERA, PAY, ***, Produced, by, The, Online, Distributed, Proofreading, Team, at, http://www.pgdp.net, (This, file, was, produced, from, images, generously, made, available, by, The, In... scala> var wordCount = Map[String, Int]() wordCount: scala.collection.immutable.Map[String,Int] = Map() scala> for (word <- words) { | val count = wordCount.getOrElse(word, 0) | wordCount = wordCount + (word -> (count + 1)) | } scala> wordCount res2: scala.collection.immutable.Map[String,Int] = Map("Should -> 1, serious -> 1, Farm-buildings -> 1, container, -> 1, comply -> 6, forgotten -> 1, stop, -> 2, Spell -> 1, Washington, -> 6, Advertises -> 1, rate -> 2, lights -> 1, submitted -> 1, engraver -> 3, generalize -> 2, Produced -> 2, Furniture: -> 1, Redistributing -> 1, non-fictionist, -> 1, Archive/American -> 2, wiser -> 1, "snap-shooters" -> 1, action. -> 3, 6, -> 1, supplementary -> 2, botany, -> 1, glean -> 1, locations -> 1, tenth, -> 1, Features -> 1, Advertising -> 1, Lens. -> 1, trade, -> 1, SHAPE -> 2, particularly -> 1, bird-dogs, -> 1, used -> 24, Mo., -> 1, eye -> 1, PUNITIVE -> 1, striking -> 2, gloss." -> 1, job--as -> 1, picture. -> 1, instance, -> 1, READ -> 1, Sets -> 1, Medical: -> 1, advertising-medium. -... scala> /** * 4. Repeat the preceding exercise with a sorted map, so that the words are printed in sorted order. */ scala> val words = scala.io.Source.fromURL("https://www.gutenberg.org/cache/epub/35709/pg35709.txt").mkString.split("\\s+") words: Array[String] = Array(The, Project, Gutenberg, EBook, of, Making, Your, Camera, Pay,, by, Frederick, C., Davis, This, eBook, is, for, the, use, of, anyone, anywhere, at, no, cost, and, with, almost, no, restrictions, whatsoever., You, may, copy, it,, give, it, away, or, re-use, it, under, the, terms, of, the, Project, Gutenberg, License, included, with, this, eBook, or, online, at, www.gutenberg.net, Title:, Making, Your, Camera, Pay, Author:, Frederick, C., Davis, Release, Date:, March, 29,, 2011, [EBook, #35709], Language:, English, ***, START, OF, THIS, PROJECT, GUTENBERG, EBOOK, MAKING, YOUR, CAMERA, PAY, ***, Produced, by, The, Online, Distributed, Proofreading, Team, at, http://www.pgdp.net, (This, file, was, produced, from, images, generously, made, available, by, The, In... scala> var wordCountSorted = scala.collection.immutable.SortedMap[String, Int]() wordCountSorted: scala.collection.immutable.SortedMap[String,Int] = Map() scala> for(word <- words) { | val count = wordCountSorted.getOrElse(word, 0) | wordCountSorted = wordCountSorted + (word -> (count + 1)) | } scala> wordCountSorted res2: scala.collection.immutable.SortedMap[String,Int] = Map("'Second -> 1, "1001 -> 1, "A -> 3, "All -> 2, "And -> 1, "Any -> 1, "But -> 1, "Defects," -> 1, "Do -> 1, "Draw -> 1, "Either -> 1, "First -> 5, "For -> 2, "From -> 1, "Here -> 1, "How -> 1, "In -> 2, "Information -> 1, "No -> 1, "Non-Exclusive" -> 1, "Not -> 1, "Open -> 1, "Pardon -> 1, "Pay-As-You-Leave" -> 1, "Plain -> 2, "Project -> 5, "Right -> 1, "Second -> 3, "Sell" -> 1, "Shoot -> 1, "Should -> 1, "Sky." -> 1, "Sneezing -> 1, "Speed-Pictures," -> 1, "Study -> 1, "The -> 10, "There -> 1, "There's -> 1, "Transference -> 1, "We -> 1, "Well, -> 1, "What -> 2, "Where -> 1, "Winter-Sports," -> 1, "Work -> 1, "_'How -> 1, "a -> 1, "arrow-points-to-the-scene-of-the-crime" -> 1, "author" -> 1, "barrels -> 1, "before -> 2, "by ... -
hhimanshu revised this gist
Aug 20, 2015 . 1 changed file with 1 addition and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -37,6 +37,7 @@ negative: Array[Int] = Array(-1, -10, 0, -12) scala> positive ++ negative res11: Array[Int] = Array(2, 3, 4, -1, -10, 0, -12) // better approach - https://stackoverflow.com/questions/32109281/produce-new-array-where-all-positive-comes-first-then-negative-or-zero-but-in-s /** * 5. How do you compute the average of an Array[Double]? -
hhimanshu revised this gist
Aug 20, 2015 . 1 changed file with 69 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -23,3 +23,72 @@ res17: Array[Int] = Array(2, 1, 4, 3, 5) scala> (for {b <- a.grouped(2); c <- b.reverse} yield c).toArray res16: Array[Int] = Array(2, 1, 4, 3, 5) /** * 4. Given an array of integers, produce a new array that contains all positive values * of the original array, in their original order, followed by all values that are zero or negative, * in their original order */ scala> val b = Array(-1, 2,3,4, -10, 0, -12) b: Array[Int] = Array(-1, 2, 3, 4, -10, 0, -12) scala> val(positive, negative) = b partition(_ > 0) positive: Array[Int] = Array(2, 3, 4) negative: Array[Int] = Array(-1, -10, 0, -12) scala> positive ++ negative res11: Array[Int] = Array(2, 3, 4, -1, -10, 0, -12) /** * 5. How do you compute the average of an Array[Double]? */ scala> val doubleArray = Array(12.3, 12.3) doubleArray: Array[Double] = Array(12.3, 12.3) scala> doubleArray.sum/doubleArray.length res15: Double = 12.3 /** * 6. How do you rearrange the elements of an Array[Int] so that they appear in reverse sorted order? * How do you do the same with an ArrayBuffer[Int]? */ scala> val arrayInt = Array(1,2,3,4,5,6,7,8,9) arrayInt: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9) scala> arrayInt sortWith(_>_) res32: Array[Int] = Array(9, 8, 7, 6, 5, 4, 3, 2, 1) scala> import scala.collection.mutable.ArrayBuffer import scala.collection.mutable.ArrayBuffer scala> val arrayBufferInt = ArrayBuffer(1,3,2,4,5,6,7,9,8) arrayBufferInt: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 3, 2, 4, 5, 6, 7, 9, 8) scala> arrayBufferInt sortWith(_>_) res33: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(9, 8, 7, 6, 5, 4, 3, 2, 1) /** * 7. Write a code snippet that produces all values from an array with duplicates removed. (Hint: Look at Scaladoc.) */ scala> val arrayWithDups = Array(2,2,4,5,6,6,3,3,1,1,1,1,0) arrayWithDups: Array[Int] = Array(2, 2, 4, 5, 6, 6, 3, 3, 1, 1, 1, 1, 0) scala> arrayWithDups.distinct res35: Array[Int] = Array(2, 4, 5, 6, 3, 1, 0) /* Not Attempting 08 */ /** * 9. Make a collection of all time zones returned by java.util.TimeZone.getAvailableIDs that are in America. * Strip off the "America/" prefix and sort the result. */ scala> java.util.TimeZone.getAvailableIDs filter(t => t.contains("America/")) map (t => t.split('/') last) sortWith(_ < _) warning: there was one feature warning; re-run with -feature for details res45: Array[String] = Array(Adak, Anchorage, Anguilla, Antigua, Araguaina, Aruba, Asuncion, Atikokan, Atka, Bahia, Bahia_Banderas, Barbados, Belem, Belize, Beulah, Blanc-Sablon, Boa_Vista, Bogota, Boise, Buenos_Aires, Buenos_Aires, Cambridge_Bay, Campo_Grande, Cancun, Caracas, Catamarca, Catamarca, Cayenne, Cayman, Center, Chicago, Chihuahua, ComodRivadavia, Coral_Harbour, Cordoba, Cordoba, Costa_Rica, Creston, Cuiaba, Curacao, Danmarkshavn, Dawson, Dawson_Creek, Denver, Detroit, Dominica, Edmonton, Eirunepe, El_Salvador, Ensenada, Fort_Wayne, Fortaleza, Glace_Bay, Godthab, Goose_Bay, Grand_Turk, Grenada, Guadeloupe, Guatemala, Guayaquil, Guyana, Halifax, Havana, Hermosillo, Indianapolis, Indianapolis, Inuvik, Iqaluit, Jamaica, Jujuy, Jujuy, Juneau, Knox, Knox_IN, Kralendijk, La_Paz, L... scala> /** Not attempting 10 */ -
hhimanshu revised this gist
Aug 19, 2015 . 1 changed file with 8 additions and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -15,4 +15,11 @@ scala> val a = Array(1, 2, 3, 4, 5) a: Array[Int] = Array(1, 2, 3, 4, 5) scala> a.grouped(2).flatMap(_.reverse).toArray res17: Array[Int] = Array(2, 1, 4, 3, 5) /** * 3. Repeat the preceding assignment, but produce a new array with the swapped values. Use for/yield. */ scala> (for {b <- a.grouped(2); c <- b.reverse} yield c).toArray res16: Array[Int] = Array(2, 1, 4, 3, 5) -
hhimanshu revised this gist
Aug 6, 2015 . 1 changed file with 18 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,18 @@ /** * 1. Write a code snippet that sets a to an array of n random integers between 0 (inclusive) and n (exclusive) */ scala> def randomInRange(n:Int) = for(i <- 0 to n) yield Random.nextInt(n) randomInRange: (n: Int)scala.collection.immutable.IndexedSeq[Int] scala> randomInRange(100) res7: scala.collection.immutable.IndexedSeq[Int] = Vector(68, 47, 1, 20, 35, 93, 53, 24, 75, 46, 23, 61, 98, 62, 60, 38, 82, 69, 10, 82, 96, 30, 14, 50, 20, 42, 44, 11, 31, 18, 70, 13, 25, 77, 85, 89, 55, 45, 16, 44, 13, 50, 71, 58, 86, 16, 7, 79, 60, 31, 79, 52, 56, 86, 31, 85, 32, 84, 14, 54, 79, 56, 7, 68, 62, 87, 77, 4, 47, 28, 36, 23, 88, 19, 28, 41, 47, 3, 92, 88, 29, 22, 52, 8, 14, 76, 83, 45, 42, 45, 36, 77, 50, 12, 89, 28, 70, 97, 35, 70, 32) /** * 2. Write a loop that swaps adjacent elements of an array of integers. For example, Array(1, 2, 3, 4, 5) becomes Array(2, 1, 4, 3, 5). */ // http://stackoverflow.com/a/10160082/379235 scala> val a = Array(1, 2, 3, 4, 5) a: Array[Int] = Array(1, 2, 3, 4, 5) scala> a.grouped(2).flatMap(_.reverse).toArray res17: Array[Int] = Array(2, 1, 4, 3, 5) -
hhimanshu revised this gist
Aug 6, 2015 . 1 changed file with 29 additions and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -124,4 +124,32 @@ scala> prod("") res5: Long = 0 scala> prod("Hello") res6: Long = 9415087488 /** * 10. Write a function that computes xn, where n is an integer. Use the following recursive definition: * • xn = y2 if n is even and positive, where y = xn / 2. * • xn = x·xn – 1 if n is odd and positive. * • x0 = 1. * • xn = 1 / x–n if n is negative. * Don’t use a return statement. */ scala> def pow(x:Int, n:Int) = n match { | case n if n > 0 && (n%2 == 0) => scala.math.pow(x, n/2) | case n if n > 0 && (n%2 == 1) => x * scala.math.pow(x, n-1) | case 0 => 1 | case n if n < 0 => 1/scala.math.pow(x, -n) | } pow: (x: Int, n: Int)Double scala> pow(2, 4) res0: Double = 4.0 scala> pow(2, 5) res1: Double = 32.0 scala> pow(2, 0) res2: Double = 1.0 scala> pow(2, -1) res3: Double = 0.5 -
hhimanshu revised this gist
Aug 5, 2015 . 1 changed file with 31 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -94,3 +94,34 @@ res19: Long = 9415087488 /** * 7. Solve the preceding exercise without writing a loop. (Hint: Look at the StringOps Scaladoc.) */ scala> "Hello".map(c => c.toLong).product res22: Long = 9415087488 /** * 8. Write a function product(s : String) that computes the product, as described in the preceding exercises. */ scala> def product(s:String) = s.map(c => c.toLong).product product: (s: String)Long scala> product("Hello") res23: Long = 9415087488 /** * 9. Make the function of the preceding exercise a recursive function. */ scala> def product(s:String, p:Long):Long = s.isEmpty match { | case false => product(s.tail, p * s.head.toLong) | case true => p | } scala> def prod(s:String):Long = s.isEmpty match { | case false => product(s, 1) | case true => 0 | } prod: (s: String)Long scala> prod("") res5: Long = 0 scala> prod("Hello") res6: Long = 9415087488 -
hhimanshu revised this gist
Jul 30, 2015 . 1 changed file with 82 additions and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -12,4 +12,85 @@ scala> signum(0) res5: Int = 0 scala> signum(-123) res6: Int = -1 /** * 2. What is the value of an empty block expression {}? What is its type? */ // Value is 'no value' and type is Unit scala> val empty = {} empty: Unit = () scala> empty /** * 3. Come up with one situation where the assignment x = y = 1 is valid in Scala. * (Hint: Pick a suitable type for x.) */ scala> var x: Any = _ x: Any = null scala> var y: Int = _ y: Int = 0 scala> x = y = 1 x: Any = () scala> x res0: Any = () scala> y res1: Int = 1 /** * 4. Write a Scala equivalent for the Java loop * for (int i = 10; i >= 0; i--) System.out.println(i); */ // Range.by: Create a new range with the start and end values of this range and a new step. scala> for(i<- 10 to 0 by -1) println(i) 10 9 8 7 6 5 4 3 2 1 0 /** * 5. Write a procedure countdown(n: Int) that prints the numbers from n to 0. */ scala> def countdown(n:Int) = for(i <- n to 0 by -1) println(i) countdown: (n: Int)Unit scala> countdown(10) 10 9 8 7 6 5 4 3 2 1 0 /** * 6. Write a for loop for computing the product of the Unicode codes of all letters in a string. * For example, the product of the characters in "Hello" is 9415087488L. */ // IndexedSeq.product: Multiplies up the elements of this collection. // returns // the product of all elements in this sequence of numbers of type Int. // Instead of Int, any other type T with an implicit Numeric[T] implementation can be used as element type of the sequence and as result type of product. // Examples of such types are: Long, Float, Double, BigInt. scala> (for(i <- "Hello") yield i.toLong).product res19: Long = 9415087488 /** * 7. Solve the preceding exercise without writing a loop. (Hint: Look at the StringOps Scaladoc.) */ -
hhimanshu renamed this gist
Jul 30, 2015 . 1 changed file with 0 additions and 0 deletions.There are no files selected for viewing
File renamed without changes. -
hhimanshu renamed this gist
Jul 30, 2015 . 1 changed file with 0 additions and 0 deletions.There are no files selected for viewing
File renamed without changes. -
hhimanshu renamed this gist
Jul 30, 2015 . 1 changed file with 0 additions and 0 deletions.There are no files selected for viewing
File renamed without changes. -
hhimanshu renamed this gist
Jul 30, 2015 . 1 changed file with 0 additions and 0 deletions.There are no files selected for viewing
File renamed without changes. -
hhimanshu revised this gist
Jul 30, 2015 . 2 changed files with 109 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,94 @@ /** * 2. In the Scala REPL, compute the square root of 3, and then square that value. By how much does the result differ from 3? (Hint: The res variables are your friend.) */ scala> math.sqrt(3) res1: Double = 1.7320508075688772 scala> res1*res1 res2: Double = 2.9999999999999996 scala> 3 - res2 res3: Double = 4.440892098500626E-16 // 3. Are the res variables val or var? scala> res1 = 3 <console>:11: error: reassignment to val res1 = 3 ^ /** * 4. Scala lets you multiply a string with a number—try out "crazy" * 3 in the REPL. * What does this operation do? Where can you find it in Scaladoc? */ // StringOps.* : Return the current string concatenated n times. scala> "crazy "*3 res6: String = "crazy crazy crazy " /** * 5. What does 10 max 2 mean? In which class is the max method defined? */ // Int.max: Returns this if this > that or that otherwise. scala> 10 max 2 res7: Int = 10 scala> 10.max(2) res8: Int = 10 /** * 6. Using BigInt, compute 21024. */ scala> BigInt(2) pow 1024 res13: scala.math.BigInt = 179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216 /** * 7. What do you need to import so that you can get a random prime as probablePrime(100, Random), * without any qualifiers before probablePrime and Random? */ scala> import scala.util.Random import scala.util.Random scala> import scala.math.BigInt import scala.math.BigInt scala> import scala.math.BigInt.probablePrime import scala.math.BigInt.probablePrime scala> probablePrime(100, Random) res14: scala.math.BigInt = 931669304734992063893063804797 /** * 8. One way to create random file or directory names is to produce a random BigInt * and convert it to base 36, yielding a string such as "qsnvbevtomcj38o06kul". * Poke around Scaladoc to find a way of doing this in Scala. */ scala> probablePrime(100, Random) toString 36 res15: String = 2mojnrl2508jtnu26t01 /** * 9. How do you get the first character of a string in Scala? The last character? */ scala> "Hello".head res20: Char = H scala> "Hello".last res21: Char = o /** * 10. What do the take, drop, takeRight, and dropRight string functions do? * What advantage or disadvantage do they have over using substring? */ // StringOps.drop: Selects all elements except first n ones. // StringOps.dropRight: Selects all elements except last n ones. // StringOps.take: Selects first n elements. // StringOps.takeRight: Selects last n elements. scala> "Hello World!" take 6 res22: String = "Hello " scala> "Hello World!" drop 6 res23: String = World! scala> "Hello World!" takeRight 6 res24: String = World! scala> "Hello World!" dropRight 6 res25: String = "Hello " This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,15 @@ /** * 1. The signum of a number is 1 if the number is positive, –1 if it is negative, and 0 if it is zero. * Write a function that computes this value. */ scala> def signum(num:Int) = if (num > 0) 1 else if (num < 0) -1 else 0 signum: (num: Int)Int scala> signum(10) res4: Int = 1 scala> signum(0) res5: Int = 0 scala> signum(-123) res6: Int = -1 -
hhimanshu created this gist
Jul 30, 2015 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1 @@ This gist will contain all the exercises from the book