Kirill
func main() { s := []float64{2, 3, 4, 5, 6, 6, 8, 1} sort.Slice(s, func(i, j int) bool { return i < j }) fmt.Println("min:", s[0]) }
рофлишь? можно ж сделать сильно меньше итераций https://play.golang.org/p/anyuIwcAWDi
$continue$
а покажите что там в resp
ах, да... я говорю о body в CallMethod. Там он не пустой и возврат тоже не пустой, но сейчас покажу, что в resp
Cat
и не читаемо
Artem
и не читаемо
обычный алгоритм, его читать не нужно, нужно понимать
Cat
чтобы понять, нужно прочитать
$continue$
а покажите что там в resp
байты там... я не очень хочу показывать строку, ибо подключен мой основной аккаунт вк.
Kirill
чтобы понять, нужно прочитать
ты рофлишь? это простейший алгоритм
$continue$
чтобы понять, нужно прочитать
так поиск min/max он и в Африке поиск min/max
Kirill
что там читать?
heavycharged
сейчас бы рофлить
Artem
нахождение наименьшего элемента не нужно читать
Kirill
единственное отличие этой реализации в том, что на слайсе в 7168 значений он делает 3585 итераций: https://play.golang.org/p/EOIev6jh3_2
Cat
вообще, предлагаю хранить нужные данные в бинарном дереве, чтобы не париться с поиском минимума
Alexey
Оверинжиниринг какой-то
.
Оверинжиниринг какой-то
Только хотел написать)
Kirill
сделал. не решило проблему.
перекомпиль после этого
$continue$
перекомпиль после этого
перекомпилил :D https://i.imgur.com/EI0yvkD.png
Kirill
Блеванул
Kirill
анмаршальни в interface{} для начала, да посмотри, что возвращается
Илья
Я думаю начать можно с string(resp)
$continue$
Я думаю начать можно с string(resp)
так, Unmarshal принимает byte[]. это тогда все методы переписывать, а ещё легче написать свой враппер
Илья
Так ты принтани себе fmt.Println(string(resp))
Илья
Может сразу поймёшь
Zver
Окажется что там ничего нет или хрень какая.
Илья
Взять эту строку, закинуть куда то в json2struct и понять, что там у тебя
$continue$
Может сразу поймёшь
там не пусто...
$continue$
https://i.imgur.com/X7JfcDl.png
Kirill
чот орнул :D
Kirill
сам-то заметил ошибку? :)
Илья
Лол
Илья
Google golang json to struct
Kirill
дайте человеку попытку исправиться :)
Kirill
а не, не спасло)
Kirill
с url'ом то?
снимательнее посмотри на json
Kirill
ты не находишь ли странным то, что ты пытаешься раздекодить struct { Response []struct{...}} в struct {url, title string}?
саша
ты рофлишь? это простейший алгоритм
когда логика усеяна такими вот простейшими алгоритмами, которые идентичны с точностью до типа, тогда читать не очень то и просто
саша
вообще, предлагаю хранить нужные данные в бинарном дереве, чтобы не париться с поиском минимума
> бинарное дерево го Ну опять реализации бинарного дерева для каждого типа писать, ну скока можна ((9
Cat
interface{} же
саша
interface{} же
Ты хотел сказать Comparable?
Cat
Ты хотел сказать Comparable?
ну если тебе так хочется, type Comparable interface{}
саша
Хотя не, не сработает. Типы же затираются ((9
саша
А?!
Б!
Kirill
А, я забыл. Ну - напиши на русте, там генерики есть
Kirill
а так разве не медленнее??
Забенчи, я уже от кампа отошёл
Tigran
я правильно вижу, что местные сверхразумы находят минимум через сортировку?
L
Забенчи, я уже от кампа отошёл
BenchmarkMinInt-4 20000 62446 ns/op BenchmarkMinIntHalf-4 20000 77901 ns/op
саша
А, я забыл. Ну - напиши на русте, там генерики есть
let a = vec![1, 2, 3, 4, 5, -20]; let min = vec.iter().min();
L
на таких данных: rand.Perm(100000)
L
и это ожидаемо. в первом случае ты просто итерируешься по сласу, во втором у тебя еще проверка лишняя и получение элемента по индексу
Kirill
BenchmarkMinInt-4 20000 62446 ns/op BenchmarkMinIntHalf-4 20000 77901 ns/op
Код закидывай, чё ты стесняешься
L
Код закидывай, чё ты стесняешься
да че там закидыать.. for _, v := range ints { if v < min { min = v } }
L
а Half ваш случай: for i, v := range ints { if i >= len(ints)/2+1 { break } if v < min { min = v } if mirrorV := ints[len(ints)-i-1]; mirrorV < min { min = mirrorV } }
саша
да че там закидыать.. for _, v := range ints { if v < min { min = v } }
а если хочешь найти структуру минимальную по какому-то полю, но не хочешь структуры копировать?
Cat
for i := 0; i < len(...); ... { ... } и т.д.
Kirill
for i := 0; i < len(...); ... { ... } и т.д.
Не надо делать или перезаписывать переменные len
Cat
это было сокращение на len(collection)
Kirill
Не надо делать или перезаписывать переменные len
Я сегодня килотонну такого кода вычитал
L
Тьфу. Я ж набросок закидывал. Надо ж хотя бы закешить len и len/2+1
l := len(ints) lHalf := l/2 + 1 for i, v := range ints { if i >= lHalf { break } if v < min { min = v } if mirrorV := ints[l-i-1]; mirrorV < min { min = mirrorV } } BenchmarkMinInt-4 20000 65284 ns/op BenchmarkMinIntHalf-4 20000 78790 ns/op
Kirill
Как вам функция math()? :)