- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
module.exports = leftpad;
function leftpad (str, len, ch) {
str = String(str);
var i = -1;
if (!ch && ch !== 0) ch = ' ';
len = len - str.length;
while (++i < len) {
str = ch + str;
}
return str;
}
Soul_re@ver 25.03.2016 08:28 # +2
roman-kashitsyn 25.03.2016 09:54 # +6
Миллионы скачиваний, "абсракция", и ни один JS-адепт не обратил внимания на то, что алгоритм квадратичный.
В теории, конечно, для больших строк паддинг врядли кто-то будет вызывать, не узкое место, но в модуле из ОДНОЙ ФУНКЦИИ, КАРЛ можно было и не за квадрат реализовать.
wvxvw 25.03.2016 10:25 # 0
roman-kashitsyn 25.03.2016 10:42 # +2
В V8 какая-то другая оптимизация для конкатенаций в цикле.
Ок, теперь понятно, что рассуждать об алгоритмической сложности программ на JS можно только эмпирически.
wvxvw 25.03.2016 11:11 # +2
roman-kashitsyn 25.03.2016 11:46 # +1
Балансировка нужна, чтобы быстро искать, неизменяемость тут не при чём.
Если тупо приклеивать, получается колбаса вида
Доступ по индексу будет медленным.
> Может лучше просто склеить их при доступе по индексу?
Наверное, можно, но тогда в каждый доступ по индексу приезжают нетривиальные ветвления. В целом оптимизаторы могут и такое выпилить, но уж как-то всё сложно и непредсказуемо получается.
kegdan 25.03.2016 11:13 # +6
nihau 25.03.2016 15:40 # 0
guest 25.03.2016 14:00 # 0
wvxvw 25.03.2016 14:14 # +2
У разных деревьев могут быть разные контракты относительно того, как соотносятся значения в узлах. Конкретно в ropes нужно поддерживать контракт, что количество дочерних узлов в правой ветке примерно равно количеству узлов в левой ветке.
Вставка может нарушить контракт, но вот вопрос когда нужно заниматься исправлением: можно это делать при каждой вставке, а можно это делать при доступе к элементам.
guest 25.03.2016 14:16 # 0
уже читаю
https://en.wikipedia.org/wiki/Rope_(data_structure)
Soul_re@ver 25.03.2016 10:25 # +2
Abbath 25.03.2016 14:14 # 0
1024-- 25.03.2016 14:48 # 0
Наш сайт точно откроется за время жизни Бога*
* При условии существования Вселенной, планеты Земля, человечества на определённом этапе развития, ЭВМ определённой архитектуры, доступности энергии и ежедневных взносов пользователей в размере 0.05 МРОТ.
kipar 25.03.2016 10:29 # 0
nihau 25.03.2016 09:50 # 0
https://www.npmjs.com/package/isnumber
Цирк.
inkanus-gray 25.03.2016 15:38 # 0
nihau 25.03.2016 15:51 # 0
istem 25.03.2016 19:41 # 0
guest 25.03.2016 17:08 # 0
Kozel 25.03.2016 15:21 # 0
str = Array(len+1).join(ch) + str; //так лучше?
И вообще, как это лучше всего делается?
1024-- 25.03.2016 15:31 # 0
Иначе это - какие-то догадки и споры о внутреннем мире неразделанного медведя.
> str = Array(len+1).join(ch) + str; //так лучше?
Зависит от версии интерпретатора. Может, в какой-то эту операцию сильно соптимизировали.
3.14159265 25.03.2016 15:45 # 0
Двоичный поискДвоичное склеивание рулит.
Polyfill
This method has been added to the ECMAScript 6 specification and may not be available in all JavaScript implementations yet. However, you can polyfill String.prototype.repeat() with the following snippet:
LispGovno 25.03.2016 15:38 # 0
Kozel 25.03.2016 16:33 # 0
s=Array(6).join('.')
> "....."
s.length
> 5
Вроде, всё в порядке
3.14159265 25.03.2016 19:00 # 0
We should do that for each language we like to troll.
A Java left pad implementing a Padder class instanciated by a PadderFactory that you can get by a PadderInjector from a PadderRegistry all that accepting an AbstractPaddingString.
Then one in Ruby where you monkey patch the string that it pads, then add an AUTO_PAD settings set to True by default and a fluent API to chain padding.
Then one version PHP version containing pad_string, then real_pad_string that deals with unicode, then real_pad_string_i_swear_this_time that that call str() on parameters automatically.
Then a Haskell one with a monad and a trampolin and some |=> giberrish to mix it all.
Then a Go one that creates a string padding microservice based on goroutine. With a docker file, just in case.
And because we should never forget to be able to mock ourself, an aio_string_pad which gives you an asyncronous padding coroutine, but under the wood calling run_in_executor, and optionally auto start an event loop.
3.14159265 25.03.2016 19:01 # +2
http://left-pad.io/
3.14159265 25.03.2016 19:01 # +3
guest 25.03.2016 19:02 # 0
так им и надо, так им и надо!!!!!!
CHayT 28.03.2016 17:17 # +3
https://meduza.io/feature/2016/03/28/kak-slomat-internet
kak slomat internet, my ass
gost 28.03.2016 17:35 # +1
CHayT 28.03.2016 18:41 # +3
я думал, там какую-нибудь архитектурную уязвимость в протоколе IP нашли или что-то вроде этого, а они пишут про обосрамс каких-то тупых хиптеров
inkanus-gray 28.03.2016 19:11 # +4
И вообще облачные сервисы — это ловушка.
dxd 28.03.2016 23:08 # +1
guest 28.03.2016 23:18 # +2
Soul_re@ver 25.03.2016 20:30 # +3
3_dar 25.03.2016 20:44 # 0
guest 25.03.2016 20:47 # +1
3.14159265 25.03.2016 20:53 # +1
breal_pad.io has deploys worldwide, then call str=padding ruby where you can\'t currible the we str
on php vert ' to preved follow manyway, most make array(count var robust must string.prototype.repeated from a monkey partup ecosystem occurrenting
guest 25.03.2016 20:59 # +1
guest 25.03.2016 20:46 # +1