Rename folders

This commit is contained in:
Javier-Orestis MANTZIOS
2025-01-08 14:00:10 +02:00
parent fa11582a25
commit 89ca6f60df
31 changed files with 0 additions and 0 deletions

115
02/main.go Normal file
View File

@@ -0,0 +1,115 @@
package main
import (
"bufio"
"fmt"
"math"
"os"
// "slices"
"strconv"
"strings"
)
func rmIndex(s []int, i int) []int {
result := make([]int, 0)
result = append(result, s[:i]...)
result = append(result, s[i+1:]...)
return result
}
func isSorted(s []int) bool {
n := len(s)
asc := true
desc := true
for i := 1; i < n; i++ {
if s[i-1] < s[i] {
desc = false
}
if s[i-1] > s[i] {
asc = false
}
}
if asc || desc {
return true
} else {
return false
}
}
func isSafe(r []int) bool {
if isSorted(r) {
for i := range r {
if i < len(r)-1 {
if math.Abs(float64(r[i]-r[i+1])) < 1 || math.Abs(float64(r[i]-r[i+1])) > 3 {
return false
}
}
}
return true
} else {
return false
}
}
func main() {
file, err := os.Open("input")
if err != nil {
panic(err)
}
defer file.Close()
scanner := bufio.NewScanner(file)
reports := [][]int{}
for scanner.Scan() {
line := scanner.Text()
parts := strings.Fields(line)
levels := []int{}
for i := range parts {
level,_ := strconv.Atoi(parts[i])
levels = append(levels, level)
}
reports = append(reports, levels)
}
safeCount := 0
dampSafeCount := 0
for i := range reports {
if isSafe(reports[i]) {
safeCount++
} else {
for j := range reports[i] {
dampenedReport := rmIndex(reports[i], j)
if isSafe(dampenedReport) {
dampSafeCount++
break
}
}
}
}
fmt.Println("Safe Reports: ", safeCount)
fmt.Println("Dampened Safe Reports: ", dampSafeCount)
fmt.Println("Total Safe Reports: ", safeCount+dampSafeCount)
// sorted := 0
// unsorted := 0
// sortedUnsafe := 0
// for i := range reports {
// if ! isSorted(reports[i]) {
// unsorted++
// continue
// } else {
// sorted++
// for j := range reports[i] {
// if j < len(reports[i])-1 {
// if math.Abs(float64(reports[i][j]-reports[i][j+1])) < 1 || math.Abs(float64(reports[i][j]-reports[i][j+1])) > 3 {
// fmt.Println(reports[i])
// sortedUnsafe++
// break
// }
// }
// }
// }
// }
// fmt.Println(len(reports))
// fmt.Println("sorted lines: ", sorted)
// fmt.Println("unsorted lines: ", unsorted)
// fmt.Println("sortedUnsafe lines: ", sortedUnsafe)
// fmt.Println("safeCount math : ", len(reports) - unsorted - sortedUnsafe)
}