d03.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package main
  2. import "strings"
  3. import "bufio"
  4. import "strconv"
  5. import "fmt"
  6. import "os"
  7. func isPossibleTriangle(sides [3]int) bool {
  8. sum := 0
  9. for _, i := range(sides) {
  10. sum += i
  11. }
  12. for _, i := range(sides) {
  13. if (sum -i <= i) {
  14. return false
  15. }
  16. }
  17. return true
  18. }
  19. func lineToIntArr(line string) [3]int {
  20. words := strings.Fields(line)
  21. if len(words) == 3 {
  22. var wints [3]int
  23. i := 0
  24. for _, wstr := range(words) {
  25. wints[i], _ = strconv.Atoi(wstr)
  26. i++
  27. }
  28. return wints
  29. }
  30. return [3]int { 0, 0, 0 }
  31. }
  32. func isPossible(line string) bool {
  33. wints := lineToIntArr(line)
  34. return isPossibleTriangle(wints)
  35. }
  36. func byLine() int {
  37. reader := bufio.NewReader(os.Stdin)
  38. result := 0
  39. for true {
  40. read, _, err := reader.ReadLine()
  41. if isPossible(string(read)) {
  42. result++
  43. }
  44. if (err != nil) {
  45. break
  46. }
  47. }
  48. return result
  49. }
  50. func byCol() int {
  51. result := 0
  52. reader := bufio.NewReader(os.Stdin)
  53. i := 0
  54. var triangles [3][3]int
  55. for true {
  56. read, _, err := reader.ReadLine()
  57. currentLine := lineToIntArr(string(read))
  58. triangles[0][i] = currentLine[0]
  59. triangles[1][i] = currentLine[1]
  60. triangles[2][i] = currentLine[2]
  61. if (i == 2) {
  62. for _, triangle := range(triangles) {
  63. if isPossibleTriangle(triangle) {
  64. result++
  65. }
  66. }
  67. i = 0
  68. } else {
  69. i++
  70. }
  71. if (err != nil) {
  72. break
  73. }
  74. }
  75. return result
  76. }
  77. func main() {
  78. result := byCol()
  79. fmt.Println("result is ", result)
  80. }