another day rotting in vain
944 subscribers
20 photos
3 files
36 links
low-key nerds wanted
Download Telegram
погуглить про Knapsack problem мне подсказал @dead_lesbian, кстати, он сделал бота для поиска скидосов на asos - @gdeskidos_bot (возможно, эта информация из сегодняшнего поста окажется для вас наиболее полезной)

так вот, Knapsack problem или задача о рюкзаке - задача комбинаторной оптимизации. если очень просто и понятно, то допустим есть набор предметов, у каждого предмета есть стоимость (vi) и вес (wi), есть рюкзак, у которого есть максимальный вес (W) - больше не запихнешь. наша задача - собрать рюкзак так, чтобы не превысить его максимальный вес, но при этом собрать максимальную суммарную стоимость предметов внутри (max V).

есть много версий этой задачи, https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BE_%D1%80%D1%8E%D0%BA%D0%B7%D0%B0%D0%BA%D0%B5

где ее используют и чо с ней делать? ну, она нужна финансистам, людям, которые занимаются выбором багажей для оптимальной загрузки транспортных средств, людям, которые занимаются выбором схем раскроя материалов, предполагаю, что этот алгоритм можно использовать и для сборов чемодана в отпуск.

допустим, каждый предмет мы можем брать только один раз.

задачу можно решить несколькими способами - первое, что приходит в голову - решить перебором, но тогда это экпоненциальный алгоритм и есть способы получше
например, я посмотрела первые 20 минут лекции по динамическому программированию, где как раз на первых 20 минутах рассматривают эту задачу

итоговая формула выглядит как-то так Мw,i = (max(Mw-1, i, Mw-wi, i-1 )+ vi)

звучит и выглядит жутко, но по сути решение похоже на разложение суммы на слагаемые

и вот на этом видео человек объясняет, как вывести эту формулу - пока сам не начертишь табличку - ничего не понятно и лучше 20 минут посмотреть https://www.youtube.com/watch?time_continue=124&v=7qTfENjWiHw

ну а поскольку я личинка программиста, то нашла решение этой задачи на js - https://www.youtube.com/watch?v=WkGd9C9hO9M (кстати, очень крутой канал <3), лектор (?) даже сравнивает это с компьютерными игрушками

воот.
Софья Васильевна - мой любимый сорт грусти

высказывания от "всё в жизни кажется таким бледным и неинтересным, в такие минуты нет ничего лучше математики" до "почему же любят самых незначительных, и только меня никто не любит?"

https://postnauka.ru/longreads/91842
теперь это мой любимый телеграм-канал про фронтенд и считаю преступлением не поделиться, воот
Недавно на youtube появился очень ламповый документальный фильм, посвящённый Ember.js. В нём создатели Ember.js рассказывают про историю появления фреймворка и рассказывают про то, какое место он занимает в современном мире фронтенд разработки.

Ember.js это эволюционное развитие SproutCore, другого фреймворка, котрый был разработан в Apple (используется на icloud.com). Чарльз Джоли, который был лидом SproutCore вместе с Йехуда Катц, основали стартап, в котором Йехуда и Том Дейл фуллтайм работали над новым фреймворком Amber.js, который затем переименовали в Ember.js. Сейчас вокруг Ember есть небольшое сильное коммьюнити. Фреймворк используют как в стартапах (Tilde), так и в больших корпорациях (linkedin.com). Ребята видят рост популярности React, Angular и Vue.js, но сдаваться не собираются.

#jsframeworks #emberjs #documentary

https://www.youtube.com/watch?v=Cvz-9ccflKQ
Forwarded from Веб-стандарты (Веб-стандарты)
Паттерны итераторов в JavaScript. Лучиано Маммино рассматривает разные способы создания последовательности чисел Фибоначчи — https://loige.co/javascript-iterator-patterns/
пусть эта статья полежит здесь
кроме диаграммы Вороного, которую в своём окрасе используют жирафы, из примечательного ещё и шутка про разбитое сердечко (было сложно пройти мимо)
https://tympanus.net/codrops/2019/03/26/exploding-3d-objects-with-three-js/
👆 внимание! первый действительно полезный пост за всю историю канала

недавно проходила крым рым и медные трубы (собеседования) и поняла, что всем собеседующим от собеседуемых нужно только одно - числа фибоначчи

минутка каминаута: я не умею в рекурсию. предположим, вы тоже (извините).

так вот, числа фибоначчи это последовательность 1, 1, 2, 3, 5, 8, 13, 21...
каждое следующее - это сумма двух предыдущих.

когда на собеседовании просят написать функцию, которая вернет энное по счету число фибоначчи, то предполагается, что вы должны сообразить нечто подобное (можно ещё поиграть с зачеркнуто шрифтами генераторами)

function fibonacci(n) {
let num;
if (n >= 2) {
num = fibonacci(n - 1) + fibonacci(n - 2);
} else {
num = n
}
return num;
}
по формуле Fn = Fn-1 + Fn-2
это я тут такая умная, а на деле толстый лев
так вот, если в рекурсию не получается, а плакать перед чужими людьми как-то "извините, не сегодня", то гуглится такое решение https://css-live.ru/javascript/chisla-fibonachchi-kak-uchat-v-uchebnikax-i-kak-ix-luchshe-iskat.html

function fibonacci2(n) {
var sq5 = Math.sqrt(5);
var a = (1 + sq5) / 2;
var b = (1 - sq5) / 2;
return (Math.pow(a, n) - Math.pow(b, n)) / sq5;
}

автор рассказывает про решение с помощью формулы Бине, но не так стыдно не уметь в рекурсию, как позорно зазубривать формулы, не понимая, что и откуда берется, как оно работает, откуда взялся корень из пяти, например

сейчас разберём (спасибо Эдварду Шейнерману!)

допустим, у нас игривое настроение и мы решили ни с того, ни с сего посмотреть, что получится, если число фибоначчи разделить на предшествующее

1/1 = 1
2/1 = 2
3/2 = 1,5
5/3 = 1.66666666667
8/5 = 1,6
13/8 = 1,625
21/13 = 1.61538461538
...
987/610 = 1.61803278689
1597/987 = 1.61803444782

чем дальше в лес, тем больше соотношение Fn+1/Fn становится похожим на 1,61803.
выведем из этого формулу:

x = Fn+1/Fn = Fn+2/Fn+1 = Fn+3/Fn+2
то есть, Fn+1 = xFn, Fn+2 = xFn+1
Fn+2 = xFn+1 =x^2Fn
поскольку Fn+2 = Fn+1 + Fn, то x^2Fn = xFn + Fn

если поделить обе части на Fn, то вот оно нормальное квадратное уравнение:
x^2-x-1 = 0

у него два решения:
x1 = (1+ √5)/2 ≈ 1, 61803
x1 = (1- √5)/2 ≈ -0, 61803

а 1,61803, кстати, не просто число, а φ (фи) - обозначает золотое сечение

если у нас опять таки игривое настроение, то можно чекнуть соотношение Fn/ Фn и заметить, что оно приблизительно равно 0, 723607 = Ф/√5

и та-даам Fn = Ф^n+1/ √5

и как бы вот откуда у формулы Бине ноги растут (и после всего этого проделаного пути даже не очень-то и стыдно не уметь в рекурсию) 🦄🥂
вот тут Савватеев рассказывает про сам проект - 100 уроков математики

чувствую, что пора ставить майлстоун - впервые по-старушечьи подумала "эх, жаль, в мое время такого не было"
https://youtu.be/wgf3uHhUzWM
5 долларов - мой предел
(буду скидывать видосы, которые смотрю, потому что это мой канал чо хочу то и делаю и что ты мне сделаешь я в другмо городе)
https://www.youtube.com/watch?v=_2-3uY0IAro