Решение на Нормализация на пътища от Дойчин Атанасов

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

Към профила на Дойчин Атанасов

Резултати

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

Код

package main
import "path"
func parsePath(input_path string) string {
var out = path.Clean(path.Join("/", input_path))
if len(out) == 1 {
return out
}
return out + "/"
}

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

PASS
ok  	_/tmp/d20131015-29033-1dz73b3	0.014s
PASS
ok  	_/tmp/d20131015-29033-1dz73b3	0.011s
PASS
ok  	_/tmp/d20131015-29033-1dz73b3	0.011s
PASS
ok  	_/tmp/d20131015-29033-1dz73b3	0.011s
PASS
ok  	_/tmp/d20131015-29033-1dz73b3	0.011s
PASS
ok  	_/tmp/d20131015-29033-1dz73b3	0.011s
PASS
ok  	_/tmp/d20131015-29033-1dz73b3	0.014s
PASS
ok  	_/tmp/d20131015-29033-1dz73b3	0.011s

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

Дойчин обнови решението на 10.10.2013 18:34 (преди над 4 години)

+package stupiderPaths
+
+import "path"
+
+const separator string = "/"
+const root string = separator
+
+func parsePath(input_path string) string {
+ var out = path.Clean(path.Join(root, input_path))
+ if len(out) == 1 {
+ return out
+ }
+ return out + separator
+}

Браво, браво... Очаквах, че ще ви отнеме повече време, докато почнете да намирате полезните неща от стандартната библиотека. :)

Между другото добавихме указанията за предаване на домашни, след като си предал домашното си. Би ли нанесъл промените от там?

Дойчин обнови решението на 14.10.2013 19:49 (преди над 4 години)

-package stupiderPaths
+package main
import "path"
-const separator string = "/"
-const root string = separator
-
func parsePath(input_path string) string {
- var out = path.Clean(path.Join(root, input_path))
+ var out = path.Clean(path.Join("/", input_path))
if len(out) == 1 {
return out
}
- return out + separator
+ return out + "/"
}

Много сходни решения имаме!

Аз съм напълно съгласен с Кирил, че тия константи са по-зле отвън, отколкото вътре. Той като няма повторение, по-добре нещата да са локализирани в един метод, отколкото да са разхвърляни.

Иначе, аз съм направил нещо много подобно на теб, но вярвам, че експлицитната проверка out == "//" прави причината за if-а много по-ясна отколкото иначе.

Причината да ги искам като константи е, че си представям как в операционните системи тези неща са различни от "/". При нужда не ми се иска да променям метода, а константите. Още не съм сигурен как се оправя стандартната библиотека на Go в подобни ситуации, но със сигурност забелязах много "/" из кода им. Сигурно има нещо, което не разбирам. Сигурно това ще е по темата - http://plan9.bell-labs.com/sys/doc/lexnames.html , но не съм го изчел.

За проверката съм напълно съгласен.