-
Notifications
You must be signed in to change notification settings - Fork 140
Expand file tree
/
Copy pathplus_one.scala
More file actions
32 lines (31 loc) · 793 Bytes
/
plus_one.scala
File metadata and controls
32 lines (31 loc) · 793 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// list to number and back to list
def plus_one(input:List[Int]) : List[Int] = {
var number = input.foldLeft(0){(t,x) => t * 10 + x}
number += 1
var result = List[Int]()
while (number > 9){
result = (number % 10) :: result
number /= 10
}
result = number :: result
return result
}
//digit arithmetic over the list
def plus_one2(input:List[Int]): List[Int] = {
var result = input.toArray
var stop = false
for (i <- input.length-1 to 0 by -1 if !stop){
if (result(i) == 9){
result(i) = 0
if (i > 0)
result(i - 1) += 1
else
result = 1 +: result
}
else{
result(i) += 1
stop = true
}
}
return result.toList
}