новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума
Форум

Обсуждение к заданию: Разработать функцию определения свойств содержимого ячеек

    • #61
    • 02.03.2019 02:53
    0
    Денис
    Видимо задача несколько иная: на основе однозначно определяемых строк понять работу генератора случайных чисел, который перемешивает строки исходной правильной таблицы, и после этого определить позиции в неоднозначных строках.

    Даже если так... случайный генератор чисел на то и "случайный", чтобы перемешивать числа в строке хаотично.
    • #62
    • 02.03.2019 02:56
    0
    Николай
    Из-за таких программистов потом ракеты в космос не долетают ;)


    Николай, я считаю не прилично хамить и ругаться. Я глубоко убежден, что среди программистов нет идиотов. И абсолютно все, включая меня, понимают что в общем случаи расположение (10*20=200 20*10=200) абсолютно равнозначное. Но задачу надо решить! Используя любые возможные алгоритмы.
    • #63
    • 02.03.2019 02:57
    0
    Это
    ГАР
    Ячейка с "10" находится ближе к правильному расположению, чем "20", а значит имеет больший вес и расположение 10 20 200... более вероятное чем 20 10 200...

    противоречит этому

    ГАР
    В ТЗ в произвольном порядке находятся данные: Количество, Цена, Сумма без НДС, Сумма НДС, Сумма с НДС.

    И если, как Вы утверждаете, сошлись все 100% строк из миллиона, тогда задача поставлена изначально НЕ верно! Т.к. порядок размещения строк не произвольный (ну либо кто-то не понимает значения слова "произвольный")
    • #64
    • 02.03.2019 02:58
    0
    ГАР
    Ячейка с "10" находится ближе к правильному расположению, чем "20"


    а если будут ячейки 1 и 10, какая из них ближе к правильному расположению? что из них штука, а что цена?
    • #65
    • 02.03.2019 03:00
    0
    ГАР
    И абсолютно все, включая меня, понимают что в общем случаи расположение (10*20=200 20*10=200) абсолютно равнозначное.

    Это Вы потом бухгалтеру будете доказывать, когда (или если) устроитесь на работу.
    Хамить и не собирался, но если написана глупость - сложно назвать это решением.
    • #66
    • 02.03.2019 03:01
    • Отредактировано: 02.03.2019 03:02:11
    0
    Я так понимаю, заказчик хочет получить код, близкий к желаемому, но изначально не отвечающему заданию, чтобы не платить
    • #67
    • 02.03.2019 03:16
    0
    Виталий
    Я так понимаю, заказчик хочет получить код, близкий к желаемому, но изначально не отвечающему заданию, чтобы не платить

    Вряд ли. Заказчик либо сам не понимает задачу, либо некорректно ее сформулировал.
    ГАР
    а значит имеет больший вес и расположение 10 20 200

    Иначе при его решении (если речь действительно идет о данных о товаре) получится так, что во время очередной инвентаризации на складе могут спросить с него недостающие 10 товаров по накладной (это в том варианте, когда расположение таки будет "20 10 200"). А когда заплатит за эти 10 товаров двойную стоимость (20, как сам и насчитал, вместо 10) - вот тогда напрочь выветрится вся эта глупость про "больший вес" и "теорию вероятности".
    • #68
    • 02.03.2019 03:20
    0
    Николай
    Иначе при его решении (если речь действительно идет о данных о товаре) получится так, что во время очередной инвентаризации на складе могут спросить с него недостающие 10 товаров по накладной (это в том варианте, когда расположение таки будет "20 10 200"). А когда заплатит за эти 10 товаров двойную стоимость (20, как сам и насчитал, вместо 10) - вот тогда напрочь выветрится вся эта глупость про "больший вес" и "теорию вероятности".


    Прошу прощения, какая разница в этой ситуации где цена, а где количество - сумма ответственности не меняется
    • #69
    • 02.03.2019 03:42
    • Отредактировано: 02.03.2019 03:45:32
    0
    ГАР
    Ячейка с "10" находится ближе к правильному расположению, чем "20", а значит имеет больший вес и расположение 10 20 200... более вероятное чем 20 10 200...


    Как заметил Николай, если перемешивание действительно произвольное - а под этим я понимаю случайный выбор из всех вариантов перестановки - то вероятность равнозначная, так что никакого бОльшего веса. Перестановка в данном случае - это термин из комбинаторики - у каждой строки 120 вариантов перестановок, включая правильную. Из этих 120 вариантов нужно случайным образом выбрать один - это и будет произвольным перемешиванием. Походу, ГАР, ошиблись с перемешиванием, оно у Вас не произвольное.
    • #70
    • 02.03.2019 08:24
    0
    ГАР
    Ячейка с "10" находится ближе к правильному расположению, чем "20", а значит имеет больший вес и расположение 10 20 200... более вероятное чем 20 10 200...


    Лукавите. Вот в этом примере
    Было 0.12, 1000, 123, 143,3, 12.3
    стало 1000, 0.12, 123, 12.3, 143,3
    вы почему-то переставили местами 0,12 и 1000
    Объясните, почему?
    • #71
    • 02.03.2019 10:22
    0
    Я так понимаю что колонки не перемешаны в одной таблице, то есть в каждой строке порядок одинаковый. По сути по одной строке всегда можно определить где сумма, ндс, и сумма с ндс, за счет пропорциональности. Но вот количество и цена их можно менять местами. Может нужно просто перебирать строки до тех пор пока не найдется вариант где можно отличить цену и количество. Но тут тоже только одно условие, если количество всегда не должно иметь дроби. 80 блоков чего именно? Уложиться меньше чем в 80 строк кода?
    • #72
    • 02.03.2019 10:23
    0
    На инфостарте есть обработка загрузки из табличных документов, которая сама определяет в произвольном формате файла, что там есть что. То есть какая сущность в какой колонке находится. Автор заявляет, что он "гений" и использует ну очень интеллектуальный эвристический анализ для этого, при этом его код закрыт. Самое интересное, что люди ведутся и покупают. Это не тот ли автор пытается свой "эвристический анализ" допилить за 100 рублей?
    • #73
    • 02.03.2019 10:50
    • Отредактировано: 02.03.2019 10:56:38
    0
    ГАР
    расположение 10 20 200... более вероятное чем 20 10 200
    Даже если Ваш алгоритм перемешивания дает "более вероятно" - значит есть ненулевая вероятность, что после перемешивания выпадет вариант 20 10 200. Тут-то и даст сбой Ваш "алгоритм 80 блоков" - который выбрал цену по более вероятному варианту, но ему не повезло - он встретил маловероятный вариант. Для 100% гарантии "алгоритма 80" нужно, чтобы в перемешанной таблице целая цена была всегда справа. Видимо, это и есть недостающее условие Вашей исходной задачи: в перемешанной таблице целая цена всегда правее количества.
    • #74
    • 02.03.2019 10:55
    0
    Задача решаема только при условии отсутствия дроби в количестве, и наоборот. Чтобы она была где то в цене. А раскидать суммы за 80 блоков или за 50 я думаю не имеет особого значения. Все равно алгоритм сведется к поиску дробной части в колонках цены и количества. Наверное просто по первой строке определить колонки сумм и ндс. И потом перебирать оставшиеся две колонки, пока не попадется дробь, значит там и будет колонка цены. Ну а если таблица маленькая, 10 строк и дробной цены нет, то се ля ви. ))))
    • #75
    • 02.03.2019 10:57
    0
    Кстати можете загнать в ваш алгоритм таблицу из одинаковых строк вида 10 20 200 40 240 и например 20 10 200 40 240. Можете хоть миллион таких строк надублировать, и ваш алгоритм не найдет где цена где количество. )))
    • #76
    • 02.03.2019 10:58
    0
    Миллиона строк не надо, достаточно двух. Пусть в изначальном файле
    5, 6, 30, 3, 33
    6, 5, 30, 3, 33
    Неважно, что после перемешивания
    Программа после "восстановления" по-любому выдаст
    5, 6, 30, 3, 33
    5, 6, 30, 3, 33
    С исходным файлом не совпадает -> задача не решена -> фиг вам, а не деньги
    • #77
    • 02.03.2019 10:59
    0
    #75 опередил с той же мысью
    • #78
    • 02.03.2019 11:08
    0
    Да и поиск чисел формулы Сумма + НДС = Сумма с НДС. по моему ее можно решить быстрее чем за 80 блоков. Если так прикинуть 5 переборов по 5 = 25 и 25 проверок. Вроде за 50 можно решить. А сколько строк перебирать для поиска дроби это и будет основной затратой времени.
    • #79
    • 02.03.2019 11:11
    • Отредактировано: 02.03.2019 11:14:03
    0
    Что это было?
    Раз не тролль - то день шофера )

    ps Наталья, я не про Ваш случай, а про весь наш флейм.
    • #80
    • 02.03.2019 11:24
    • Отредактировано: 02.03.2019 11:25:35
    0
    Tagir
    Я так понимаю что колонки не перемешаны в одной таблице, то есть в каждой строке порядок одинаковый.
    Кстати, вариант. Во всех строках смешанной таблицы выполнена одинаковая перестановка. Иначе говоря, случайным образом переставлялась не каждая ячейка каждой строки исходной таблицы, переставлялись целиком столбцы исходной таблицы - как в экселе - взяли вертикальный столбец и перетянули его в случайное другое место.
    • #81
    • 02.03.2019 12:29
    • Отредактировано: 02.03.2019 12:37:54
    0
    Наталья9
    можете ли выражать мысль четче?

    Пример перемешивания целым столбцом
    ПеремешаннаяТаблицаЗначений= ИсходнаяТаблицаЗначений.Скопировать();
    ПеремешаннаяТаблицаЗначений.Колонки.Сдвинуть(0,1);

    Т.е. не каждая строка по отдельности перемешивается случайным образом, а перемешиваются целиком столбцы. В во всей перемешанной таблице цена будет в одной и той же колонке, но заранее неизвестен индекс этой колонки.
    • #82
    • 02.03.2019 13:08
    0
    Денис
    Кстати, вариант. Во всех строках смешанной таблицы выполнена одинаковая перестановка.

    Я именно так и понял задачу. На практике же именно так должно быть. Но даже в этом случае задача не решаема, если есть допущение про количество с дробью и цены без дробей. Если упростить всю задачу. Все сводиться к тому что из выражения х * у невозможно решить что должно быть х а что у. Никакой анализ и алгоритм тут не поможет выбрать один из множителей, без допусловий. Которые еще могут и не встретиться в примере.
    • #83
    • 02.03.2019 13:41
    • Отредактировано: 02.03.2019 13:47:46
    +1
    Tagir
    Я именно так и понял задачу

    ГАР
    данные в каждой строке будут размешаны в произвольном порядке (таблица 2)
    Вроде задача однозначно поставлена. Особенно с учетом
    ГАР
    Пример:
    на входе:
    где однозначно нет единой колонки с ценой. Или Вы имеете в виду, что сразу поняли ошибку постановки задачи, и правильная формулировка "столбцы исходной таблицы будут размешаны в произвольном порядке", а на "пример: на входе:" не обращайте внимания?
    • #84
    • 03.03.2019 03:14
    • Отредактировано: 03.03.2019 03:16:22
    +1
    Tagir
    А раскидать суммы за 80 блоков или за 50 я думаю не имеет особого значения.
    Просто у ГАРа на самом деле нет решения сформулированной задачи даже за 80 блоков. Думаю, он будет рад даже тысяче блоков ) Но увы, ясновидцы не подтянулись.
    • #85
    • 03.03.2019 17:44
    0
    Денис, Вы отчасти правы. Но даже в общем случаи большая часть свойств цен имеет отличия от свойств количества.
    • #86
    • 03.03.2019 18:34
    0
    Главное, чтобы после перемешивания все цены были в одном, пусть и неизвестном заранее столбце - тогда шансы резко повышаются. Если еще и количества после перемешивания все в одном неизвестном столбце - то шансы приблизятся к идеалу.
    • #87
    • 03.03.2019 18:50
    0
    Денис
    Или Вы имеете в виду, что сразу поняли ошибку постановки задачи, и правильная формулировка "столбцы исходной таблицы будут размешаны в произвольном порядке", а на "пример: на входе:" не обращайте внимания?

    Да, именно так и получается. По заданным условиям задача не решаема. Поэтому и предположил, что неизвестно имя колонки, но они по всей таблице в одном порядке, и не перемешаны. Это посчитал более вероятным, чем полностью перемешанная таблица. )))
    • #88
    • 04.03.2019 01:21
    • Отредактировано: 04.03.2019 01:24:39
    0
    ГАР
    Ячейка с "10" находится ближе к правильному расположению, чем "20", а значит имеет больший вес и расположение 10 20 200... более вероятное чем 20 10 200...
    Пока упражнялся с алгоритмами перемешивания из комбинаторики, вдруг понял Вашу мысль: в счетах сначала идет количество, а потом цена. Вы бы сразу поставили это в условие задачи, а то гадай тут - зачем все это Вам. Если количество не "более вероятно", а если количество в перемешанной строке всегда левее цены - то задача конечно имеет решение. Но тогда "пример на входе: 0.12, 1000, 123, 143,3, 12.3, на выходе 1000, 0.12, 123, 12.3, 143,3" неуместен.
    • #89
    • 04.03.2019 10:12
    0
    Денис, я безусловно рад что Вы наконец посмотрели на задачу под правильным углом, но Вы идете тем же путем что и я шел, а значит лучше у Вас не получится. Нужно принципиально новый подход, с одним из коллег обсуждаем применение "Байесовского подхода".

    Денис
    ...пример на входе: 0.12, 1000, 123, 143,3, 12.3, на выходе 1000, 0.12, 123, 12.3, 143,3" неуместен.


    это как раз самый легкий пример со 100% вероятностью определения количества и цены
    1000 - не имеет знаков после запятой, значит это количество
    0.12 - 2 знака после запятой, значит это цена
    • #90
    • 04.03.2019 10:29
    0
    ГАР
    1000 - не имеет знаков после запятой, значит это количество


    А где в условиях задачи сказано, что кол-во всегда целое число?
Страницы:123
Для участия в обсуждении Вам необходимо авторизоваться либо   зарегистрироваться