mirror of https://github.com/01-edu/public.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.0 KiB
87 lines
2.0 KiB
package main |
|
|
|
import ( |
|
"bufio" |
|
"fmt" |
|
"os" |
|
"strconv" |
|
"strings" |
|
) |
|
|
|
// counts in the Cartesian coordinates x and y |
|
func countXY(output []rune) (x, y int) { |
|
countX := 0 |
|
countY := 0 |
|
flag := false |
|
for _, s := range output { |
|
if s == '\n' { |
|
countY++ |
|
flag = true |
|
} else if !flag { |
|
countX++ |
|
} |
|
} |
|
return countX, countY |
|
} |
|
|
|
func determineInput(output []rune) { |
|
x, y := countXY(output) |
|
// the leftC and rightC -> position of the corners |
|
// this will be to see what raid1 is being used |
|
// for the lower left corner |
|
leftC := ((x * y) + y - 1) - x |
|
// for the lower right corner |
|
rightC := (x * y) + y - 2 |
|
// for the upper right corner |
|
rightUpC := x - 1 |
|
|
|
X := strconv.Itoa(x) |
|
Y := strconv.Itoa(y) |
|
result := isPipedWith(output, leftC, rightC, rightUpC, X, Y) |
|
fmt.Println(strings.Join(result, " || ")) |
|
} |
|
|
|
func isPipedWith(output []rune, leftC, rightC, rightUpC int, x, y string) []string { |
|
result := []string{} |
|
|
|
if output[0] == 'o' { |
|
result = append(result, "[raid1a] ["+x+"] ["+y+"]") |
|
} else if output[0] == '/' { |
|
result = append(result, "[raid1b] ["+x+"] ["+y+"]") |
|
} else if output[0] == 'A' { |
|
if (output[rightUpC] == 'A' && output[rightC] == 'C') || |
|
(output[rightUpC] == 'A' && y == "1") || |
|
(x == "1" && y == "1") { |
|
result = append(result, "[raid1c] ["+x+"] ["+y+"]") |
|
} |
|
if (output[rightUpC] == 'C' && output[leftC] == 'A') || |
|
(output[leftC] == 'A' && x == "1") || |
|
(x == "1" && y == "1") { |
|
result = append(result, "[raid1d] ["+x+"] ["+y+"]") |
|
} |
|
if (output[leftC] == 'C' && x == "1") || |
|
(output[rightUpC] == 'C' && y == "1") || |
|
(output[rightUpC] == 'C' && output[leftC] == 'C') || |
|
(x == "1" && y == "1") { |
|
result = append(result, "[raid1e] ["+x+"] ["+y+"]") |
|
} |
|
} |
|
return result |
|
} |
|
|
|
func main() { |
|
reader := bufio.NewReader(os.Stdin) |
|
var output []rune |
|
for { |
|
input, _, err := reader.ReadRune() |
|
if err != nil { |
|
break |
|
} |
|
output = append(output, input) |
|
} |
|
if output[0] != 'o' && output[0] != '/' && output[0] != 'A' { |
|
fmt.Println("Not a Raid function") |
|
return |
|
} |
|
determineInput(output) |
|
}
|
|
|