Valery
почему-то
Artem
свифтер, наверное
Artem
(как и мы все)
Artem
я ждал тебя))
Anonymous
Artem
Деда
Вообщем в рандоме нихуя интересного
Деда
Это да
Деда
Нельзя ли нам как нибудь такое тут внедрить?
Алексей
Деда
😒
john
пацаны, жувачку хотите?
Деда
С перцем? Весело на входе, весело на выходе?
john
You get an array of positive integers. Write a function that creates from them the largest possible number. For example, given [81, 8, 299, 85] the result will be 88581299.
john
жуйте
Anonymous
return INT_MAX;
john
[81, 8, 299, 85]
john
"88581299"
Anonymous
теоретически, мы берем числа с меньшим числом разрядов, вставляем их в порядке убывания, потом переходим к числам с большим числом разрядов, делаем тоже самое, и так далее
Anonymous
писать код лень
Александр
теоретически, мы берем числа с меньшим числом разрядов, вставляем их в порядке убывания, потом переходим к числам с большим числом разрядов, делаем тоже самое, и так далее
может быть ситуация, когда 8, 7, 5, 999, тогда ответ будет 875999
Anonymous
Anonymous
тогда нужно сортировать по первой цифре числа наверное
Anonymous
лан, пофиг
john
виталя, ну ты не уймешься
john
я ж опять сделаю лекциюна два часа
Artur
Artem
так, ну значит надо 2 программиста и 100 часов на первичное исследование проблемы
john
я три дня жевал
Artur
john
фильтер мап редюс всяко разно крутил
Александр
зафигачить алгоритм генерации сочетаний с стековерфлоу
@
взять максимальный элемент
john
я решил уже, доказательства в другом чате уже лежат
john
но мы же понимаем что перебор это не совсем алгоритм
john
скажем так, перебор - это прям гарантированно точное решение, можно использовать для формирования проверки алгоритма
john
но сам алгоритм - это не перебор всех сочетаний
Александр
рекурсию можно попробовать. Ищем все числа, у которых первая цифра - девятка. Если их несколько - запускаем рекурсию с входными данными с этими же числами, но сдвигаем поиски уже правее. Числа с одной цифрой ставим на первые места, далее вставляем числа с наибольшей второй цифрой и так далее
john
john
все это бралось в размышления
Eugene
[81, 8, 299, 85]:
—---81----
| |
299 —-8
|
85
8-85-81-299
[8, 7, 5, 999]:
—--8----
| |
—--7 999
|
5
999-8-7-5
На примере последнего: если аппенд 7 к 8 даст больше, чем 8 к 7, то влево, если нет, то вправо. Затем, если ап 5 к 8 даст больше, чем 8 к 5, то влево, нет - вправо. затем если 5 к 7 больше, то влево. затем ап 999 к 8 больше, то влево, если 8 к 999, то вправо.
Затем обход справа налево снизу
Александр
А я думал просто взять и реализовать лексикографическую сортировку строк, только с одним нюансом - короткие строки вверх ставить, но вспомнил про индексы строк в свифте и закрыл икскод
john
да, задача решена по сути, решение по сути раскрыто
john
могу засветить решение?
Ilkhom
давно пора
David
David
как то подозрительно просто задача стоит...все упирается в сортировку
john
.sort{ |a,b| [b,a].join<=>[a,b].join }.join
john
.sort((a,b) => [b,a].join('') - [a,b].join('') ).join('')
john
первое - руби, второе js
Ilkhom
даешь свифт
john
нету у меня, яж безлошадный
Dmitriy
Есть еще портированный перловый вариант
Dmitriy
my $sub = sub {
print join '', (sort {join('', ($b, $a)) <=> join ('', ($a, $b))} @_);
};
$sub->(81, 8, 2, 299, 85, 89);
john
у димки есть и другое решение - зря не показывает
Dmitriy
Оно многословное сильно
john
можешь словами сказать
john
привести к общей "цене" так сказать и сравнить
Dmitriy
Приведение перед сортировкой массива чисел в обший вид
Dmitriy
Например, 81 становится 818, 85 => 858
Dmitriy
8 => 888
Dmitriy
А потом сорт и джоин по первому массиву
Eugene
А какой метод сортировки? Не займёт ли сортировка O(n^2)?
Eugene
Которая в .sort используется
Eugene
Или если кто-то не юзает вшитые сортировки
Eugene
А, пофиг
Anonymous
Подскажите |> что это за оператор такой в Свифт?
Anonymous
Это не в свифт. Ищи какая либа его определяет
Anonymous
Anonymous
https://github.com/peter-iakovlev/TelegramCore/blob/master/TelegramCore/AccountManager.swift
Anonymous
Какой то extension ?
Vadim
https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/AdvancedOperators.html
Anonymous
ну так нажми cmd+control+click на этом операторе и перейдешь в его определение
Anonymous
это все из функциональщины. линзы и это все
Anonymous