Камиль
new_arr.push(arr.slice(smallest, 1))
Камиль
ворт так хочу добавить элемент в массив и удалить его со старого массива
Rafael 🌵
new_arr.push(arr.splice(t, 1))
Rafael 🌵
new_arr.push(arr.splice(t, 1))
Только t должен быть индексом, а не элементом массива
Камиль
ага
Камиль
но чет он не особо сортирует
Rafael 🌵
Сортирует?
Камиль
function find_small(arr) { let small_element = arr[0] let index_small_element = 0 arr.forEach(function(item, i) { if (item < small_element) { small_element = item index_small_element = i } }); return index_small_element } function selectionSort(arr) { let new_arr = [] arr.forEach(function(item) { smallest = find_small(arr) new_arr.push(arr.splice(smallest, 1)) }) return new_arr } console.log(selectionSort([3,8,2,5,0,1,6]))
Камиль
сорри щас
Камиль
https://jsfiddle.net/s8700geL/
Константин
function find_small(arr) { return Math.min(...arr) } так вроде можно на es6
Камиль
ну это понятно что есть готовые методы
Камиль
я просто читаю книгу по алгоритмам и пытаюсь их реализацию на js перенести
Камиль
щас разбирусь
Rafael 🌵
щас разбирусь
Меня смущает arr.forEach() в selectionSort
Rafael 🌵
Я не могу сходу сказать, как он работает на списке arr переменной длинны
Rafael 🌵
Попробуй переписать через обычный цикл
Камиль
ага я тоже обратил внимание
Rafael 🌵
Потому что список - итерируемый
Rafael 🌵
Но нет, тут нам это не подойдет
Rafael 🌵
Потому что нам нужен индекс, а не значение
Andrey
ребят как удалить произваольный элемент из массива
произвольный элемент по индексу в строке и массиве удаляются одинакого: https://gist.github.com/tyllo/50acfc3f3d61dc5475d8f01205e9b649#file-permutation-generator-js-L18
Константин
Потому что нам нужен индекс, а не значение
function find_small(arr) { return arr.indexOf(Math.min(...arr)); }
Rafael 🌵
function find_small(arr) { return arr.indexOf(Math.min(...arr)); }
Это ты уже 2 прохода делаешь
Rafael 🌵
Сортировка выбором — Википедия https://ru.m.wikipedia.org/wiki/%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2%D1%8B%D0%B1%D0%BE%D1%80%D0%BE%D0%BC
Камиль
находит наименьший элемент и пушит в начало нового массива
Дима
[3,8,2,5,0,1,6].sort((a,b)=>a-b))
Rafael 🌵
[3,8,2,5,0,1,6].sort((a,b)=>a-b))
Не, ну он же хочет сам, ручками
Камиль
получается так
Rafael 🌵
Минут через 20 доберусь до компа, все напишу
Камиль
https://jsfiddle.net/mcj58pjw/
Rafael 🌵
[3,8,2,5,0,1,6].sort((a,b)=>a-b))
js может в хвостовую рекурсию?
Камиль
вот так и в итоге он почему то на массиве [3,8,2,5,0,1,6] возвращает 0,1,2,3
Andrey
вот так и в итоге он почему то на массиве [3,8,2,5,0,1,6] возвращает 0,1,2,3
Потому что splice - изменяет исходный массив и потому что алгоритм неправильный, @Fl0pZz скинул опиание этой ссылки, осталось повторить одну из реализаций goo.gl/kBLu4V
Дима
Дима
Дима
andrei
Что за плагин
Дима
Дима
Я недавно чот угорел по бабель-плагинам, и перепробовал кажется вообще всё интересное, что было в npm 😄
Дима
babel-plugin-tailcall-optimization
Дима
Я правда не припоминаю, чтобы явно пользовался хвостовой рекурсией 🤔 Но пусть будет
Sergey
index.h ?
Дима
😄
Дима
Все про это спрашивают))
Sergey
handlebars или c header?
Дима
flow типы, h.eaders, короче
Дима
Меня реально начала напрягать мешашина из типов и кода в файлах, поэтому когда совсем уже перебор,, то выношу)
Sergey
забавно) но вполне разумно, я тоже так делал, но в .types.ts (да, это был ts, не кидайтесь яблоками)
Дима
Дима
Ну и, разумеется, у меня там index.h.js, просто расширение можно опускать)
Дима
забавно) но вполне разумно, я тоже так делал, но в .types.ts (да, это был ts, не кидайтесь яблоками)
По поводу яблок, я до сих пор не уверен, за что надо больше кидаться, за ts или за flow 😄
Sergey
мне симпатизирует flow ибо просто надстройка над js а юзать отдельный язык (причем не полный), как то странно
Processor
ts норм штука, он позволяет писать так, чтобы даже просто ввести типы в js, т.е. там можно писать и обычный js код и эта фича при переводе в js не будет ругаться
Processor
Довольно удобно
Processor
Каждому своё, но как по мне удобно
Дима
Плюс практически пустая библиотеа тайпингов, по сравнению с ts
Sergey
Ну это да, довод. Но какой же flow неповоротливый, это ппц 😑
в смысле "не поворотливый"? медленный? или система типов не гибкая?
Дима
Медленный и крайне ресурсоёмкий
Anonymous
Я вот думаю, не изучить ли мне, тогда уж, Elm.
Дима
А нормальный интероп с ide только в процессе создания
Anonymous
Хотелось бы услышать чуть больше, чем просто нет. =))
Anonymous
А нормальный интероп с ide только в процессе создания
Ну, меня всё устраивает, и свистоперделка есть для vscode.
Sergey
Медленный и крайне ресурсоёмкий
мб в будущем поправят но это грустный факт...
Ivan
там 25 кадр?
Дима
Ну, меня всё устраивает, и свистоперделка есть для vscode.
ну вот они только-только в 42 версии создали экспериментальную команду flow ide. Интеграции ещё нигде конечно нет. Нередки ситуации, когда типы изволят обновляться только после сейва
Дима
Причём в самых запущенных случаях у меня HRM в браузере быстрее отрабатывает)
Kirill
flow в вебшторм интергирован
Дима
"вставлен"
Anonymous
Не, ну серьёзно. Почему?