Skip to content

Commit dbb63e5

Browse files
golang solutions
1 parent 3b63e45 commit dbb63e5

File tree

3 files changed

+141
-0
lines changed

3 files changed

+141
-0
lines changed

solutions/golang/fibonacci.go

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"unicode"
6+
"strconv"
7+
)
8+
9+
// 1 - Receber o input do utilizador
10+
// 2 - Armazenar o número numa variavel
11+
// 3 - Se o numero for diferente de inteiro vai retornar 'The value entered is not a number'
12+
// 4 - Iterar até o número que foi recebido
13+
// 5 - executar a função fibonacci dentro da iteração
14+
// 6 - como a sequência de fibonacci consiste na soma dos seus dois números anteriores
15+
// então declaramos duas variaveis: first e second para receber as primeiras sequencia de fibonnaci e utilizá-las no próximo for
16+
// 7 - Iteramos até o número que recebemos
17+
// 8 - dentro da iteração declaramos mais uma variável chamada tempo que vai servir para trocar os valores de first e second
18+
// 9 - armazenamos o valor da variavel second dentro da variavel first
19+
// 10 - armazemos a soma das variaveis tempo e first dentro da variavel second para seguir a sequencia de fibonnaci (soma dos seus dois números anteriores)
20+
// 11 - depois da iteração imprimimos a variável first que é a que vai ter sempre o resultado da variavel second (soma dos seus dois números anteriores)
21+
22+
23+
func fibonacci(n int) int {
24+
first := 0
25+
second := 1
26+
for i := 0; i < n; i++ {
27+
tempo := first
28+
first = second
29+
second = tempo + first
30+
}
31+
return first
32+
}
33+
34+
func main() {
35+
36+
var number string
37+
38+
fmt.Print("Enter number: ")
39+
fmt.Scanln(&number) // 1
40+
41+
if (isInt((number))) {
42+
i1, _ := strconv.Atoi(number)
43+
for n := 0; n < i1; n++ {
44+
result := fibonacci(n)
45+
fmt.Printf("%v\n", result)
46+
}
47+
} else {
48+
fmt.Printf("The value entered is not a number\n", number)
49+
}
50+
51+
}
52+
53+
func isInt(s string) bool {
54+
for _, c := range s {
55+
if !unicode.IsDigit(c) {
56+
return false
57+
}
58+
}
59+
return true
60+
}

solutions/golang/palindrome.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
)
6+
7+
// 1 - Receber o input do utilizador
8+
// 2 - Armazenar o que foi digitado numa variavel numa variável do tipo String
9+
// 3 - Criamos uma função que recebe uma string e retorna um boleano
10+
// 4 - Iteraramos até a divisão do tamanho do valor que foi recebido dividido por dois
11+
// 5 - dentro do for fizemos a condição para verificar se cada posição do nosso contador(i) do valor recebido for diferente do
12+
// do inverso que é o valor na posisão da quantidade do valor que recebemos menos o nosso contador menos um
13+
14+
func IsPalindromic(value string) bool {
15+
for i := 0; i < len(value)/2; i++ {
16+
if value[i] != value[len(value)-i-1] {
17+
return false
18+
}
19+
}
20+
return true
21+
}
22+
23+
24+
func main() {
25+
26+
var input string
27+
28+
fmt.Print("Enter a number or word to see if is palindrome or not: ")
29+
fmt.Scanln(&input) // 1
30+
31+
fmt.Printf("IsPalindromic ??\nA: %v",IsPalindromic(input))
32+
}

solutions/golang/sumIntDigits.go

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"unicode"
6+
"strconv"
7+
)
8+
9+
// 1 - Receber o input do utilizador
10+
// 2 - Armazenar o número numa variavel do tipo int "number"
11+
// 3 - Se o numero for 0 vai retornar 0
12+
// 4 - calcular o resto da divisõa por 10 do número recebido e somar o numero recebido dividido por 10 chamando a mesma função (recursividade) ---> result = number%10 + sum(number/10)
13+
// 5 - imprimir o resultado
14+
15+
func sum(number int) int {
16+
result := 0 // 2
17+
18+
if number == 0 { //3
19+
return 0
20+
}
21+
22+
result = number%10 + sum(number/10)
23+
return result
24+
}
25+
26+
27+
func main() {
28+
var number string
29+
30+
fmt.Print("Enter number: ")
31+
fmt.Scanln(&number) // 1
32+
33+
if (isInt((number))) {
34+
i1, _ := strconv.Atoi(number)
35+
fmt.Printf("Digits of %d is equal to %d\n", i1, sum(i1))
36+
} else {
37+
fmt.Printf("The value entered is not a number\n", number)
38+
}
39+
40+
}
41+
42+
func isInt(s string) bool {
43+
for _, c := range s {
44+
if !unicode.IsDigit(c) {
45+
return false
46+
}
47+
}
48+
return true
49+
}

0 commit comments

Comments
 (0)