Перейти к публикации
  • Сейчас на странице   Всего пользователей: 1   (0 пользователей, 1 гость)

Rooster

Программирование[10]

Перепись  

313 пользователей проголосовало

У вас нет прав на голосование в этом опросе, или на просмотр результатов опроса. Пожалуйста, войдите или зарегистрируйтесь для голосования в опросе.

Рекомендованные сообщения

Так мэпа:

std::map<ListNode*, int>

Первым проходом заполняешь ее также, как ты сделал с вектором, потом уже можешь в любой момент достать индекс по ноде. Конечно, по идее тут лучше контейнер на основе сортированного вектора, но не уверен, что в стандарте он уже есть, а возиться с upper/lower_bounds не хочется.

Поделиться сообщением


Ссылка на сообщение
Olololnet написал 5 минут назад:

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

Поиску чего?

У тебя ведь задача сериализовать лист и десерилозать, сходу и целиком.

Сериализация - записываешь ноды вместе с их ключом (адресом в памяти), указатель на случайную ноду тудаже, сразу на месте. Ниче считать не нужно, просто по списочку идешь друг за дружкой и все.

Десериализация - Выписываешьв все ноды, друг за дружкой составляя список, паралельно наполняя мапу-хеш-дерево-вектор (контейнер всетаки зависит от количества элементов и их распределения, тут я не эксперт) индексами. После того как загрузил все элементы, проходишься еще разок по ним и подменяешь адресс уже настойщим вытаскивая настойщий из мапы (или нулл если адресса нету, очевидно).


ward написал 04.01.2022 в 02:54:

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

mazt3r написал 20.09.2019 в 11:27:

ласт оф ас - хуета для лисят и прочих мальчиков с вагиной между ног.

 

Поделиться сообщением


Ссылка на сообщение

Лучше скажите, как в питоме сорту отдать КОМПАРАТОР именно в сорт.

 

Цитата

In Py3.0, the cmp parameter was removed entirely (as part of a larger effort to simplify and unify the language, eliminating the conflict between rich comparisons and the __cmp__() magic method).

 

Гениально нахуй, просто гениально. :onneponimaet:


ward написал 04.01.2022 в 02:54:

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

mazt3r написал 20.09.2019 в 11:27:

ласт оф ас - хуета для лисят и прочих мальчиков с вагиной между ног.

 

Поделиться сообщением


Ссылка на сообщение

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


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение
(изменено)

или я чего-то не понял или вы :)

 

в ноде хранится не индекс ноды, куда она ссылается, а адрес. т.е. допустим 100000 нод, нода 1 ссылается на 777. но номер ноды куда ссылается мы не знаем, т.к. есть только указатель. и чтобы определить индекс, надо ходить по нодам до тех пор, пока указатель не совпадёт с элементом. как совпадёт - его номер уже можно записать хоть в вектор, как у меня, хоть в мапу.

 

соответственно у меня в решении на сериализации строится вектор из n элементов. каждая позиция хранит номер, кто на кого ссылается. т.е. vector[10] = 500; т.е. нода 10 ссылается на ноду 500. получив данные связи формируется файл

 

[n элементов] n [связи, т.е. номера -1; 20; 10 (-1 = никуда не ссылается, 2й элемент ссылается на 20й, 3й на 10й] далее n[размер строки, строка]

 

на десериализации наполняется вектор связей - данные готовы. вектор указателей на элементы + заполнение данными строк

 

далее по вектору соединяются ноды двусвязного списка. и благодаря вектору индексов за константу заполняется связь. т.е. проход на элементе 2, его указатель rand присваивается к значению, которое берётся из вектора связей. т.е. по вектору связи 2й элемент связан с 20. тогда element.rand = vector<node*>[ вектор_связей[2] ] (т.е. нода* = вектор_нод[20)]. в один проход хз как это возможно сделать (т.е. одновременно соединять и сразу линковать их между собой), т.к. если грузим элемент 10, а он ссылается на 500й, то 500й ещё не построен и указателя на него нет.

 

во всей этой схеме проёб только в идее хранить индексы или в том, как эти индексы получены (поиском по элементам)


Изменено пользователем Olololnet

Поделиться сообщением


Ссылка на сообщение

Дай ссылку голдроботу куда ты устраивался на сеньора. Он быстренько собес пройдет и наконец-то свалит со своей шараги.

^p1x, Drakonian, GoldRobot и 1 другому понравилось это

Поделиться сообщением


Ссылка на сообщение
Olololnet написал 3 минуты назад:

в ноде хранится не индекс ноды, куда она ссылается, а адрес

Вот и возьми эти адресса. Зачем ты чето там ходишь, считаешь, туда сюда, непонятно абсолютно.

 

Olololnet написал 5 минут назад:

в один проход хз как это возможно сделать (т.е. одновременно соединять и сразу линковать их между собой), т.к. если грузим элемент 10, а он ссылается на 500й, то 500й ещё не построен и указателя на него нет.

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


ward написал 04.01.2022 в 02:54:

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

mazt3r написал 20.09.2019 в 11:27:

ласт оф ас - хуета для лисят и прочих мальчиков с вагиной между ног.

 

Поделиться сообщением


Ссылка на сообщение
GoldRobot написал 2 минуты назад:

Вот и возьми эти адресса. Зачем ты чето там ходишь, считаешь, туда сюда, непонятно абсолютно.

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

Поделиться сообщением


Ссылка на сообщение

Что-то тебя совсем поплавило. Голдробот же вроде понятно описал.

Поделиться сообщением


Ссылка на сообщение

хмм, не знаю то ли имеется ввиду, но если сохранять

 

[n число нод] каждая нода [указатель на ноду текущий; указатель на произвольную ноду; n байт данных в строке; n байт самих данных]

 

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

Поделиться сообщением


Ссылка на сообщение
GoldRobot said 38 minutes ago:

Лучше скажите, как в питоме сорту отдать КОМПАРАТОР именно в сорт.

 

Quote

In Py3.0, the cmp parameter was removed entirely (as part of a larger effort to simplify and unify the language, eliminating the conflict between rich comparisons and the __cmp__() magic method).

 

Гениально нахуй, просто гениально. :onneponimaet:

покажи зачем тебе

 

наверняка можно обойтись простейшей лямбой, переданной в key

 

если ты всё-таки настаиваешь на компараторе, то оберни его в functools.cmp_to_key и передай опять же как key

Поделиться сообщением


Ссылка на сообщение
GoldRobot написал 28 минут назад:

Лучше скажите, как в питоме сорту отдать КОМПАРАТОР именно в сорт.

 

Цитата

In Py3.0, the cmp parameter was removed entirely (as part of a larger effort to simplify and unify the language, eliminating the conflict between rich comparisons and the __cmp__() magic method).

 

Гениально нахуй, просто гениально. :onneponimaet:

Я внимательнее почитал доку, и докопался

У метода sort (и sorted функции свободной) есть аргумент key, который описан вот так:

Цитата

 

key specifies a function of one argument that is used to extract a comparison key from each element in iterable (for example, key=str.lower). The default value is None (compare the elements directly).

Both list.sort() and sorted() have a key parameter to specify a function (or other callable) to be called on each list element prior to making comparisons.

The value of the key parameter should be a function (or other callable) that takes a single argument and returns a key to use for sorting purposes. This technique is fast because the key function is called exactly once for each input record.

 

И такой дают пример:

Цитата

 

sorted("This is a test string from Andrew".split(), key=str.lower)

['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']

 

Ну тоесть четко сказано что у нас короч лямдочка туда уходить должна, которая из объекта списка получает фактическое значение используемое для сортировки. Окй.

 

Полистав еще ниже наткнулся "The Old Way Using the cmp Parameter" где и сказали что воту нас был cmp, но мы решили что он путает народ.

Там же пример (без фактической документации) что можно в key отдать объект вида

class CMP:
	def __init__(self, obj, *args):
		self.obj = obj
	def __lt__(self, other):
		return self.obj < other.obj
	def __gt__(self, other):
		return self.obj > other.obj
	def __eq__(self, other):
		return self.obj == other.obj
	def __le__(self, other):
		return self.obj <= other.obj
	def __ge__(self, other):
		return self.obj >= other.obj
	def __ne__(self, other):
		return self.obj != other.obj

 

И таким образом отдать комаратор. И там же указано что в 3.2 они добавили хелпер в стандартной библиотеке что бы отдавать компараторы "functools.cmp_to_key(func)". Колесо сансары дало новый оборот.

Сука вголос, ну чисто питоник вей стандартный. Убрали cmp аргумент что бы было проще, ну ну, вижу. :onneponimaet::onneponimaet::onneponimaet::onneponimaet::onneponimaet::onneponimaet::onneponimaet:

 


ward написал 04.01.2022 в 02:54:

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

mazt3r написал 20.09.2019 в 11:27:

ласт оф ас - хуета для лисят и прочих мальчиков с вагиной между ног.

 

Поделиться сообщением


Ссылка на сообщение
moonfangtopich написал 4 минуты назад:
GoldRobot написал 45 минут назад:

Лучше скажите, как в питоме сорту отдать КОМПАРАТОР именно в сорт.

 

Цитата

In Py3.0, the cmp parameter was removed entirely (as part of a larger effort to simplify and unify the language, eliminating the conflict between rich comparisons and the __cmp__() magic method).

 

Гениально нахуй, просто гениально. :onneponimaet:

покажи зачем тебе

 

наверняка можно обойтись простейшей лямбой, переданной в key

 

если ты всё-таки настаиваешь на компараторе, то оберни его в functools.cmp_to_key и передай опять же как key

Да раскопал уже, ага, спасибо.

 

А по задачи, лист из имен файликов которые содержат дату, и нужно эти файлики сортануть по дате с учетом того что с одинаковой датой нужно обратить внимание на конкретно имя файла (не порядок по алфавиту, а типа "Прием_2021" должнен быть раньше обработан чем "Уход_2021").

 

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


ward написал 04.01.2022 в 02:54:

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

mazt3r написал 20.09.2019 в 11:27:

ласт оф ас - хуета для лисят и прочих мальчиков с вагиной между ног.

 

Поделиться сообщением


Ссылка на сообщение
GoldRobot написал 4 минуты назад:

"Прием_2021" должнен быть раньше обработан чем "Уход_2021"

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

 

scarppy, Kant, Grohuf и 1 другому понравилось это

Поделиться сообщением


Ссылка на сообщение
Olololnet написал 12 минут назад:

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

Вот и воспользуйся этим. Смапь старый указатель, и новый при чтении.


ward написал 04.01.2022 в 02:54:

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

mazt3r написал 20.09.2019 в 11:27:

ласт оф ас - хуета для лисят и прочих мальчиков с вагиной между ног.

 

Поделиться сообщением


Ссылка на сообщение
madvlaydin написал 1 минуту назад:

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

 

Это тут причем :chel:

Темболее что мы про питон говорим :onneponimaet:


ward написал 04.01.2022 в 02:54:

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

mazt3r написал 20.09.2019 в 11:27:

ласт оф ас - хуета для лисят и прочих мальчиков с вагиной между ног.

 

Поделиться сообщением


Ссылка на сообщение
GoldRobot said 16 minutes ago:
moonfangtopich said 19 minutes ago:
GoldRobot said 1 hour ago:

Лучше скажите, как в питоме сорту отдать КОМПАРАТОР именно в сорт.

 

Quote

In Py3.0, the cmp parameter was removed entirely (as part of a larger effort to simplify and unify the language, eliminating the conflict between rich comparisons and the __cmp__() magic method).

 

Гениально нахуй, просто гениально. :onneponimaet:

покажи зачем тебе

 

наверняка можно обойтись простейшей лямбой, переданной в key

 

если ты всё-таки настаиваешь на компараторе, то оберни его в functools.cmp_to_key и передай опять же как key

Да раскопал уже, ага, спасибо.

 

А по задачи, лист из имен файликов которые содержат дату, и нужно эти файлики сортануть по дате с учетом того что с одинаковой датой нужно обратить внимание на конкретно имя файла (не порядок по алфавиту, а типа "Прием_2021" должнен быть раньше обработан чем "Уход_2021").

 

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

from datetime import datetime


FILENAMES = [
    'priem_31.12.2020.txt',
    'uhod_21.02.2012.txt',
    'uhod_18.05.2007.txt',
    'priem_18.05.2007.txt',
]


def extract_date(filename: str) -> datetime:
    d = filename.split('_')[-1]
    d = '.'.join(d.split('.')[:-1])
    return datetime.strptime(d, '%d.%m.%Y')


sorted(FILENAMES, key=lambda f: (extract_date(f), f))
# ............................................... ^ второй элемент для сравнения в кортеже
# ...............................................   оставляем нетронутым, потому что "приём" по алфавиту и так идёт раньше "ухода"

результат:

image.png.acc9f8159c684fd6a947736c31c9f4ca.png

--------------

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

Поделиться сообщением


Ссылка на сообщение
moonfangtopich написал 20 минут назад:

которая например строки на "залупа..." маппит в 0, а строки на "абоба..." в 1

На самом деле так и нужно

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

Но у меня сейчас 2 типа файлов которые я решил побыстрому одним ифом заговнокодить в компаратор 

И очень удивился что его "выпилили".


ward написал 04.01.2022 в 02:54:

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

mazt3r написал 20.09.2019 в 11:27:

ласт оф ас - хуета для лисят и прочих мальчиков с вагиной между ног.

 

Поделиться сообщением


Ссылка на сообщение

А я вот тоже делал тестовое недавно,

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


65881.png

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...