Valery
c# насколько помню все в паскаль-кейсе пишут
он сопротивляется называть это паскаль кейсом
Valery
почему-то
Artem
свифтер, наверное
Artem
(как и мы все)
Artem
я ждал тебя))
Anonymous
вот что значит русскоязычное коммюнити, на стэке не смог найти ответа почему)
Ты хоть базу изучил бы, а потом уже на комьюнити гнал
Деда
Вообщем в рандоме нихуя интересного
Valery
Вообщем в рандоме нихуя интересного
Потому что по-настоящему жаркие обсуждения искуственно не зародить
Деда
Это да
Деда
Нельзя ли нам как нибудь такое тут внедрить?
Деда
😒
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
писать код лень
Anonymous
тогда нужно сортировать по первой цифре числа наверное
Anonymous
лан, пофиг
john
виталя, ну ты не уймешься
john
я ж опять сделаю лекциюна два часа
Artur
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.
Преобразовать в массив чисел 0-9 Дальше умножая на 10 двигаться +число
john
Преобразовать в массив чисел 0-9 Дальше умножая на 10 двигаться +число
я тоже всяко разно думал, уже собирался строить дерево и писать обходчик дерева
Artem
так, ну значит надо 2 программиста и 100 часов на первичное исследование проблемы
john
я три дня жевал
john
фильтер мап редюс всяко разно крутил
Artur
фильтер мап редюс всяко разно крутил
Не нужно никаких фильтров и мапов тут Задача на листке решается за 5 мин
Александр
зафигачить алгоритм генерации сочетаний с стековерфлоу @ взять максимальный элемент
john
я решил уже, доказательства в другом чате уже лежат
john
зафигачить алгоритм генерации сочетаний с стековерфлоу @ взять максимальный элемент
да, такое предложили сразу, просто взять все пермутации сделать и взять наибольшее число
john
но мы же понимаем что перебор это не совсем алгоритм
Александр
да, такое предложили сразу, просто взять все пермутации сделать и взять наибольшее число
Задача вроде как и решена, но на всяких ACM и Я.Алгоритмах всегда стоит жесткое ограничение по времени
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
как то подозрительно просто задача стоит...все упирается в сортировку
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