object Main2 extends App{
println("test:")
val b = List("banana", "pear", "apple", "orange").sorted.foreach(println)
val c =List(10,5,4,8,1)
print(c)
List(10, 5, 8, 1, 7).sortWith(_ > _).sorted.foreach(println)
val x = List.range(1,10)
println(x)
val names = List("Bob", "Fred", "Joe", "Julia", "Kim")
for (noms <- names) println(noms)
println("with J")
for (name <- names if name.startsWith("J"))
println(name)
println("valeur paire")
val evens = x.filter(a => a % 2 == 0)
println("evens")
print(evens)
println("copier par deux")
val doubler = x.map(a => a * 2)
println(doubler)
val z1 = x.map(_ * 2)
println(z1)
val names1 = List("Fred", "Joe", "Bob")
val lower = names1.map(_.toLowerCase)
println(lower)
println("result traitement list:")
val a = List(10, 20, 30, 40, 10)
println(a)
a.drop(2)
println(a)
println(a.drop(20))
println(a.dropWhile(_ < 25))
println(a.filter(_ < 25))
println(a.slice(2,4))
println(a.take(3))
println(a.tail)
val x1 = List.tabulate(5)(n => n * n)
println(x1)
val d = List(1,2,3)
val e = List(4,5,6)
val g = List.concat(d, e)
println(g)
(1 to 6).toList
(1 until 5).toList
// List(1, 2, 3, 4)
println( (1 to 10 by 2).toList)
//List(1, 3, 5, 7, 9)
(1 until 10 by 2).toList
('d' to 'h').toList
val fruits = List("apple", "pear")
println(fruits.map(_.toUpperCase))
println(fruits.flatMap(_.toUpperCase))
val name2=Array(1,2,3,4,5,6,7).reduce((e1,e2) => e1+e2)
println(name2)
//tupple
println("tupple")
val myTuple = (3500, "Foo")
println(myTuple._1) // 3500
println(myTuple._2) // Foo
val l = List(1,2,3,4,5)
println(l)
println("l.map(x => x*2)")
println(l.map(x => x*2))
println("fonction")
def f(x: Int) = if (x > 2) Some(x) else None
l.map(x => f(x))
println(l.map(x => f(x)))
//pattern matching
val name = "Max"
name match {
// test on exact value
case "Phil" =>
println("It's Phil")
case "Max" =>
println("Oh it's Max")
// default case
case _ =>
println("Not recognized")
}
//Map vers List
println("traitement de Map vers list:")
var m = Map(1 -> 2, 2 -> 4, 3 -> 6)
println(m)
println(m.keys)
println(m.values)
//insertion d'un élément d'une map
//insertion d'un élément
m += (4-> 8)
println(m)
println("HERE")
println(m.toList)
println(m.toVector)
val fruits2 = Seq("apple", "banana", "orange")
println(fruits2)
println(fruits2.map(_.toUpperCase))
println(fruits2.flatMap(_.toUpperCase))
//avec flatten
val mapResult = fruits2.map(_.toUpperCase)
val flattenResult = mapResult.flatten
println(flattenResult )
val list = List(1,2,3,4,5)
println(list)
def g(v:Int) = List(v-1, v, v+1)
//list.map(f = x => g(x))
val map = Map(1 -> "one", 2 -> "two", 3 -> "three")
println( 1 to map.size flatMap(map.get))
}