Решение на Разлика в сумите от Ангел Ангелов

Обратно към всички решения

Към профила на Ангел Ангелов

Резултати

  • 10 точки от тестове
  • 0 бонус точки
  • 10 точки общо
  • 15 успешни тест(а)
  • 0 неуспешни тест(а)

Код

package main
import "strings"
// ExtractColumn gets specified column from each line
func ExtractColumn(logContents string, column uint8) (columnContents string) {
columnItems := []string{}
for _, line := range strings.Split(logContents, "\n") {
columns := strings.Split(line, " ")
if column == 0 && len(columns) > 1 {
columnItems = append(columnItems, columns[0]+" "+columns[1])
} else if column == 1 && len(columns) > 2 {
columnItems = append(columnItems, columns[2])
} else if column == 2 && len(columns) > 3 {
columnItems = append(columnItems, strings.Join(columns[3:], " "))
}
}
if len(columnItems) == 0 {
return ""
}
return strings.Join(columnItems, "\n") + "\n"
}

Лог от изпълнението

PASS
ok  	_/tmp/d20151103-24541-awp2vw	0.003s
PASS
ok  	_/tmp/d20151103-24541-awp2vw	0.003s
PASS
ok  	_/tmp/d20151103-24541-awp2vw	0.003s
PASS
ok  	_/tmp/d20151103-24541-awp2vw	0.003s
PASS
ok  	_/tmp/d20151103-24541-awp2vw	0.003s
PASS
ok  	_/tmp/d20151103-24541-awp2vw	0.003s
PASS
ok  	_/tmp/d20151103-24541-awp2vw	0.003s
PASS
ok  	_/tmp/d20151103-24541-awp2vw	0.003s
PASS
ok  	_/tmp/d20151103-24541-awp2vw	0.004s
PASS
ok  	_/tmp/d20151103-24541-awp2vw	0.003s
PASS
ok  	_/tmp/d20151103-24541-awp2vw	0.004s
PASS
ok  	_/tmp/d20151103-24541-awp2vw	0.003s
PASS
ok  	_/tmp/d20151103-24541-awp2vw	0.003s
PASS
ok  	_/tmp/d20151103-24541-awp2vw	0.003s
PASS
ok  	_/tmp/d20151103-24541-awp2vw	0.003s

История (3 версии и 6 коментара)

Ангел обнови решението на 23.10.2015 15:30 (преди над 2 години)

+package main
+
+import "strings"
+
+// ExtractColumn gets specified column from each line
+func ExtractColumn(logContents string, column uint8) (columnContents string) {
+ for _, line := range strings.Split(logContents, "\n") {
+ columns := strings.Split(line, " ")
+ if column == 0 && len(columns) > 1 {
+ columnContents += columns[0] + " " + columns[1] + "\n"
+ } else if column == 1 && len(columns) > 2 {
+ columnContents += columns[2] + "\n"
+ } else if column == 2 && len(columns) > 3 {
+ columnContents += strings.Join(columns[3:], " ") + "\n"
+ }
+ }
+ return
+}

Ангел обнови решението на 25.10.2015 09:41 (преди над 2 години)

package main
-import "strings"
+import (
+ "fmt"
+ "strings"
+)
// ExtractColumn gets specified column from each line
func ExtractColumn(logContents string, column uint8) (columnContents string) {
for _, line := range strings.Split(logContents, "\n") {
columns := strings.Split(line, " ")
if column == 0 && len(columns) > 1 {
- columnContents += columns[0] + " " + columns[1] + "\n"
+ columnContents = fmt.Sprintf("%s%s %s\n",
+ columnContents, columns[0], columns[1])
} else if column == 1 && len(columns) > 2 {
- columnContents += columns[2] + "\n"
+ columnContents = fmt.Sprintf("%s%s\n",
+ columnContents, columns[2])
} else if column == 2 && len(columns) > 3 {
- columnContents += strings.Join(columns[3:], " ") + "\n"
+ columnContents = fmt.Sprintf("%s%s\n",
+ columnContents, strings.Join(columns[3:], " "))
}
}
return
}

по-скоро вече отнема и повече време:

Sprintf ще трябва да направи нов стринг така че се правят същото количество стрингове на същите места в кода

в допълнение *printf трябва да парснат форматиращия стринг и да го "изпълнят", което отнема време.

Ангел обнови решението на 25.10.2015 23:26 (преди над 2 години)

package main
-import (
- "fmt"
- "strings"
-)
+import "strings"
// ExtractColumn gets specified column from each line
func ExtractColumn(logContents string, column uint8) (columnContents string) {
+ columnItems := []string{}
for _, line := range strings.Split(logContents, "\n") {
columns := strings.Split(line, " ")
if column == 0 && len(columns) > 1 {
- columnContents = fmt.Sprintf("%s%s %s\n",
- columnContents, columns[0], columns[1])
+ columnItems = append(columnItems, columns[0]+" "+columns[1])
} else if column == 1 && len(columns) > 2 {
- columnContents = fmt.Sprintf("%s%s\n",
- columnContents, columns[2])
+ columnItems = append(columnItems, columns[2])
} else if column == 2 && len(columns) > 3 {
- columnContents = fmt.Sprintf("%s%s\n",
- columnContents, strings.Join(columns[3:], " "))
+ columnItems = append(columnItems, strings.Join(columns[3:], " "))
}
}
- return
+ if len(columnItems) == 0 {
+ return ""
+ }
+ return strings.Join(columnItems, "\n") + "\n"
}