|
Кодирование числовой информации | ☑ | ||
---|---|---|---|---|
0
Rizhij_Nikitos
04.12.12
✎
12:44
|
Есть у меня много разных чисел размером 9 цифр, но мне нужно сделать так, чтобы каждое число обозначалось одним символом, а не 9.
Системы счисления не предлагать. |
|||
52
Rovan
гуру
04.12.12
✎
14:32
|
(42) можно впехнуть в 1 число
только оно будет комплексное :-) |
|||
53
HeroShima
04.12.12
✎
14:33
|
(47) png изучи)
|
|||
54
napagokc
04.12.12
✎
14:33
|
(47) Так не в шестнадцатиричную переводи, а свою придумай - это сильнее ужмет число. Дальше заменяй. К примеру, перевел ты в 32-ричную. Получились у тебя какие-то пары чисел. Берешь первую пару: "GH" и заменяешь ее символом "й", например :). Уже ужмешь в несколько раз
|
|||
55
BlackSeaCat
04.12.12
✎
14:34
|
(50) Твоя идея равносильна алгоритму сжатия файла любого размера до 1 байта.
|
|||
56
Rizhij_Nikitos
04.12.12
✎
14:34
|
(50) не прикалываюсь, это все тут троли пишут. Декодирование процесс обратный, если что потом оптимизирую.
(51) умею лучше многих. (55) чур я первый патентую. |
|||
57
Rizhij_Nikitos
04.12.12
✎
14:35
|
(54) в эту сторону и копаю
|
|||
58
Rovan
гуру
04.12.12
✎
14:35
|
(47) до 3 я тебе уже написал
|
|||
59
Rizhij_Nikitos
04.12.12
✎
14:35
|
(58)сейчас прикинем.
|
|||
60
Rovan
гуру
04.12.12
✎
14:38
|
еще вариант если число 9 цифр - это колво секунд
тогда результат кодировки имеет в 1С тип Дата\Время |
|||
61
napagokc
04.12.12
✎
14:39
|
(55) Не так. Дело в том, что предлагаемый мной способ, во-первых, стационарный (не больше 9 символов изначально), а во-вторых, число итераций сжатия напрямую зависит от количества изначального числа символов. То есть, для написания универсального алгоритма нужно, как минимум, где-то хранить еще число итераций. То есть, до 1 байта никак не ужать картинку в общем смысле.
|
|||
62
CrazyBear
04.12.12
✎
14:39
|
(0) алгоритмы архиваторов покури, по моему то что тебе надо
|
|||
63
Адимр
04.12.12
✎
14:44
|
(0) А что под символом подразумеваешь?
|
|||
64
Кирпич
04.12.12
✎
14:45
|
(63) наверное букву "А"
|
|||
65
Кирпич
04.12.12
✎
14:46
|
нужно число 16581375 засунуть в букву "А". и он это сделает!
|
|||
66
Asmody
04.12.12
✎
14:47
|
можно используя gravatar, получать красивые картинки. они будут разные.
пример http://www.gravatar.com/avatar/123456789.jpg?d=identicon http://www.gravatar.com/avatar/098765432.jpg?d=identicon http://www.gravatar.com/avatar/135792468.jpg?d=identicon |
|||
67
Fish
04.12.12
✎
14:49
|
(0) Пересмотри фильм Кин-дза-дза. Там эта проблема была легко решена: "Ку - все остальные слова."
Определи, что А - это у тебя любое число. Проблема решена. |
|||
68
Rizhij_Nikitos
04.12.12
✎
14:49
|
(66) Это, конечно, клево, но к сожалению не спасет меня.
|
|||
69
Rizhij_Nikitos
04.12.12
✎
14:49
|
(67)обратный перевод представь?
|
|||
70
Fish
04.12.12
✎
14:51
|
(69) в (0) про обратный перевод не было ни слова.
|
|||
71
Fish
04.12.12
✎
14:52
|
+(70) Да и не вижу никаких проблем:
Любое число = А А = любое число. В обе стороны работает. |
|||
72
Asmody
04.12.12
✎
14:52
|
(66)+ а, блин, там md5 нужен…
|
|||
73
HeroShima
04.12.12
✎
14:55
|
Теперь можно переходить к сравнению изображений, кажись.
|
|||
74
Rizhij_Nikitos
04.12.12
✎
14:59
|
(73) я этим и занимаюсь. Картинка есть уже в формате RGB попиксельно, алгоритм сравнения строк тоже есть хороший - метод Вагнера-Фишера. Осталось представить каждый пиксель в виде 1 символа, вытянуть весь рисунок в строку и сравнить...
|
|||
75
Privalov
04.12.12
✎
15:01
|
Что-то тут не так )))
|
|||
76
HeroShima
04.12.12
✎
15:05
|
(74) считай поканально
|
|||
77
HeroShima
04.12.12
✎
15:05
|
вытягивать в строку ничего не нужно
|
|||
78
Rizhij_Nikitos
04.12.12
✎
15:07
|
(76) объясни
|
|||
79
HeroShima
04.12.12
✎
15:08
|
(78) посчитай расстояния отдельно для R, G и B.
|
|||
80
mr_K
04.12.12
✎
15:10
|
(0) Тебя не смущает, что ты пытаешься закодировать 24битное число в один символ? Т.е. пространство таких символов должно содержать 2 в 24 степени элементов? И алгоритмы сжатия тут не причем
В качестве офф-топик: на студенческой олимпиаде по программированию, на финальном туре нужно было написать свой алгоритм архивации. Граничное условие - чтобы заархивированный файл был не больше исходного. Учитывались размер архива и время архивации/разархивации. Победил чел, который тупо копировал файл туда сюда. Ибо больше никто не прошел граничное условие на одном из тестов )) |
|||
81
Rizhij_Nikitos
04.12.12
✎
15:13
|
(80) кул стори, а про 24 битное число - не смущает. Как говорится - нет ничего невозможного.
(79) а теперь еще раз и желательно с примером. |
|||
82
BlackSeaCat
04.12.12
✎
15:17
|
(81) Ну, тогда классическая задачка выложить слово ВЕЧНОСТЬ из букв А, Ж, О и П как раз для тебя!
|
|||
83
HeroShima
04.12.12
✎
15:21
|
(81) я не даю рыбу, я учу её ловить)
|
|||
84
Rizhij_Nikitos
04.12.12
✎
15:24
|
(82)
1)Создаем соответствия сочетаниям букв: ВЕ=Ж; ЧН=П; О=О; СТЬ=А 2)Записываем ВЕЧНОСТЬ=ЖПОА 3)Свалил отсюда школьник (83) дай хоть ссылку где читать. Что за расстояния. |
|||
85
Лефмихалыч
04.12.12
✎
15:28
|
(81) тебе уже сказали, что для того, чтобы добиться сабже, тебе нужно 999999999 РАЗЛИЧНЫХ цифр (ну, или хотя бы символов).
|
|||
86
Rizhij_Nikitos
04.12.12
✎
15:29
|
(85) я хочу сыграть с тобой в одну игру:
//Смещение по таблице юникод на свободные символы Сч=770; //Кодируем все комбинации RGB в строку из 3 символов, а потом в один символ Для Х=0 По 255 Цикл Для У=0 По 255 Цикл Для К=0 По 255 Цикл НовыйЭлемент=Справочники.СоответствиеRGB.СоздатьЭлемент(); НовыйЭлемент.R=Х; НовыйЭлемент.G=У; НовыйЭлемент.B=К; НовыйЭлемент.СтрокаRGB=Символ(1+Х)+Символ(257+У)+Символ(513+К); НовыйЭлемент.СимволRGB=Символ(Сч); НовыйЭлемент.Записать(); Сч=Сч+1; КонецЦикла; КонецЦикла; Сообщить("Х-->"+ТекущаяДата()+"---"+Х); КонецЦикла; |
|||
87
BlackSeaCat
04.12.12
✎
15:31
|
(84) Вай, маладэц! А теперь слово ВЕРНОСТЬ теми же буквами.
P.S. 2 all: может, это тролль? |
|||
88
Лефмихалыч
04.12.12
✎
15:34
|
(68) и как это связано с (0)?
|
|||
89
Кирпич
04.12.12
✎
15:34
|
(87) ну тут все вроде для того чтобы на тролля посмотреть. а то всех забанили уже. а ты чо всерьёз его воспринимаешь чтоли?
|
|||
90
BlackSeaCat
04.12.12
✎
15:36
|
(89) Не, ну меня он подкупил своей искренностью - то ли человек настолько хорошо играет роль идиота, то ли...
|
|||
91
Кирпич
04.12.12
✎
15:40
|
Да врет он все. А с виду вроде нормальный человек. В очках...
Тьфу. |
|||
92
Адимр
04.12.12
✎
15:42
|
Значит имеем 362880 вариантов девятизначных цифр.
Все просто присвой 362880 символам соответствующие значения. |
|||
93
Rizhij_Nikitos
04.12.12
✎
15:43
|
(92) нет у меня к сожалению такого количества символов...
|
|||
94
HeroShima
04.12.12
✎
15:43
|
(84) http://goo.gl/EtUFB
|
|||
95
Адимр
04.12.12
✎
15:44
|
(93) А сколько есть?
|
|||
96
Адимр
04.12.12
✎
15:46
|
Теоретически можно использовать цифры Шредингера, а если поиграться количеством измерений то можно и уменьшить их до приемлемого значения.
|
|||
97
Rizhij_Nikitos
04.12.12
✎
15:47
|
(94) Окей, я боялся что ты это и пришлешь, но между чем и чем я буду искать расстояния то?
(95) 65 535 символов есть (96) не хотелось бы так усложнять, но если считаешь свою идею рабочей то давай пример тогда. |
|||
98
Адимр
04.12.12
✎
15:47
|
Я еще написал в службу поддержки 1С письмо может они что то посоветуют.
|
|||
99
Адимр
04.12.12
✎
15:49
|
(97) задача в новинку мне, примера нет, изыскания теоретические есть только.
|
|||
100
Rizhij_Nikitos
04.12.12
✎
15:49
|
(100)
|
|||
101
Лефмихалыч
04.12.12
✎
15:50
|
(93) В юникоде кодовых позиций примерно в 4 раза больше, так что все у тебя есть
|
|||
102
HeroShima
04.12.12
✎
15:51
|
(97) а между чем и чем надо?
|
|||
103
Dmitry77
04.12.12
✎
15:51
|
создать справочник в 1с в название запихать число., а вообще картинка в компьютере это файл - сравнивай файлы побитно и будет тебе счастье.
|
|||
104
Лефмихалыч
04.12.12
✎
15:52
|
А если исходная задача - сравнить два числа, то почему бы просто не сравнить два числа безо всяких преобразований?
|
|||
105
narayanan
04.12.12
✎
15:53
|
(104) потому что это какие-то новые синтетические наркотики...
|
|||
106
Rizhij_Nikitos
04.12.12
✎
15:54
|
(101) 1С функцией Символ цепляет только до 65535
(102) между строками считаются, такие расстояния, я вот и не понимаю где ты тут нашел строки? (103) а если я возьму и дорисую 1 пиксель в начало картинки - это будет одна и та же картинка побитно? (104) я собираюсь сравнивать две строки. |
|||
107
Лефмихалыч
04.12.12
✎
15:57
|
(106) а что, кроме функции Симв() вариантов получить символ нет? Ты их глазами сравнивать собрался?
|
|||
108
HeroShima
04.12.12
✎
15:58
|
(106) п.2 - п.4
|
|||
109
mozzga
04.12.12
✎
15:58
|
возмите свою 256-ричную систему сделайте через соответствие и кодируйте свои числа.
|
|||
110
Rizhij_Nikitos
04.12.12
✎
15:59
|
(109) подробнее пожалуйста
(107) строки я буду сравнивать методом Вагнера-Фишера (108) не понял |
|||
111
Dmitry77
04.12.12
✎
16:00
|
(106) ну так загони файл с картинкой в строку и сравнивай
а если я возьму и дорисую 1 пиксель в начало картинки - это будет одна и та же картинка побитно? нет, да и фиг ты один бит дорисуешь к картинку, минимум полосу битов. |
|||
112
Rizhij_Nikitos
04.12.12
✎
16:03
|
(111) я имел ввиду заменю один бит на другой.
как ты хочешь файл с картинкой загнать в строку подробнее пожалуйста. |
|||
113
mozzga
04.12.12
✎
16:05
|
1-1
2-2 3-3 4-4 5-5 6-6 7-7 8-8 9-9 10-а 11-б 12-в 13-г 14-д 255-какой-нибудь зю |
|||
114
Dmitry77
04.12.12
✎
16:08
|
(112) ну например 1с поддерживает строки неограниченной длинны, бит читаем из файла - записываем в строку.
|
|||
115
Лефмихалыч
04.12.12
✎
16:08
|
(0) у него 2^24 различных чисел, вот он и стонет, что буков столько нет
|
|||
116
Кирпич
04.12.12
✎
16:08
|
Может он хочет перевести картинку в 256 цветов(по байту на пиксел), а потом сравнивать? В любом случае либо тролль либо кретин.
|
|||
117
Rizhij_Nikitos
04.12.12
✎
16:11
|
(113) это просто, в итоге я получаю свою картину не в виде:
|255 255 255|128 128 128| 255 255 255| |100 120 200|250 255 000| 012 018 099| а в виде: |a a a|b b b|a a a| |c d e|f a g|p o q| А теперь как мне эти тройки символов преобразовать к одному символу? |
|||
118
acsent
04.12.12
✎
16:12
|
не уж то по итогам этой ветки родится решение на нобелевскую премию?
|
|||
119
Rizhij_Nikitos
04.12.12
✎
16:14
|
(118) обязательно что-нибудь придумаю...
|
|||
120
Mikeware
04.12.12
✎
16:14
|
(119)...на шнобелевскую.
|
|||
121
Mikeware
04.12.12
✎
16:15
|
(116) не, вряд ли тролль...
|
|||
122
Кирпич
04.12.12
✎
16:16
|
(121) Как же он тогда одинесником стал?
|
|||
123
Ёпрст
04.12.12
✎
16:16
|
Придумывай давай быстрее, пока калитку не закрыли.
|
|||
124
Jstunner
04.12.12
✎
16:18
|
Десятиелие назад пользовались популярностью архиваторы, которые мегабайты любой информации паковали в сотню байтов. Непонятно, правда, почему место на винче не высвобождалось, но мы то знаем, алгоритм существует!
|
|||
125
Кирпич
04.12.12
✎
16:18
|
пол мисты уже здесь))))
|
|||
126
Mikeware
04.12.12
✎
16:21
|
(124) это называлось "фрактальный архиватор"
|
|||
127
Mikeware
04.12.12
✎
16:22
|
(122) а что? "тупой, ленивый" - два необходимых условия точно выполнено...
|
|||
128
mozzga
04.12.12
✎
16:27
|
(117)
а в виде: |a a a|b b b|a a a| |c d e|f a g|p o q| а теперь а-а-а = какой-то знак а-а-с = еще что-то ну и т.д. т.е. ппц полный, но заданию удовлетворяет :) |
|||
129
Кирпич
04.12.12
✎
16:28
|
Автор, напиши ещё что нибудь. Сколько можно ждать уже.
|
|||
130
Лефмихалыч
04.12.12
✎
16:35
|
(118) неужто слитно пишется
|
|||
131
Rizhij_Nikitos
04.12.12
✎
16:37
|
(128) одна проблема. Алфавит имеет 256 символов, а символов для кодирования всего 65535
Уважаемые модераторы, забаньте троллей из ветки пожалуйста, особенно Кирпич надоел |
|||
132
Кирпич
04.12.12
✎
16:40
|
(131) ))) талантливый, но до 200 не дотянешь.
|
|||
133
Schwonder
04.12.12
✎
16:41
|
(0) Зазипуй, Кулибин.
|
|||
134
Кирпич
04.12.12
✎
16:45
|
(131) Я ж один единственный тебе здравую идею дал в (116), а ты меня забанить хочешь, паразит.
|
|||
135
Лефмихалыч
04.12.12
✎
16:48
|
(131) а какая половая религия мешает сравнивать этим твой магаалгоритмом не строки, а массивы чисел?
|
|||
136
regniws
04.12.12
✎
16:54
|
сначала тоже посмеялся над темой, но, по факту автор просто плохо изъясняется. Одноэснеги тупы, однозначно, коль никто не понял про что речь идет.
Автор, в общем так, по факту штатными ты средствами не закодируешь. Што делать? Почти правильно тебе советовали, что создать свою систему счисления. Тебе нужно сравнивать пиксели, вот и сравнием их. Строка у тебя будет не из букв, а из кортежей цифр, тебе нужно организовать сравнение этих кортежей. Например (205, 103, 33) с (207, 110, 41), вот и посчитай расстояние левенштайна для этого кортежа, в частности тут можно сказать, что оно = 3, но это не наш вариант, наш вариант 2+7+8=17, вот тебе расстояние между пикселями. |
|||
137
regniws
04.12.12
✎
16:55
|
И да, кстати, тухлая затея сравнивать картинки таким образом )
|
|||
138
regniws
04.12.12
✎
16:56
|
в свое время писал примерно тем же образом каталог похожих картинок, получилось гамно
|
|||
139
sunson
04.12.12
✎
16:56
|
(138) :D
|
|||
140
Rizhij_Nikitos
04.12.12
✎
16:56
|
(136) ну наконец то хоть кто то oбоcрa всех кроме меня.
Читаю твою идею, думаю. Спасибо. |
|||
141
Rizhij_Nikitos
04.12.12
✎
17:02
|
(138) Знаешь, черт с ним уже со сравнением картинок, я сам тут почитал тексты и нашел интересные и не сложные вещи, но вот ужать 3 символа до 1 я все же хочу.
|
|||
142
organizm
04.12.12
✎
17:03
|
(33) почитай про Быстрое Преобразование Фурье и его прикладное применение в цифре
|
|||
143
regniws
04.12.12
✎
17:05
|
(141) там вопрос даже не в ужатии, ужать легко
uchar r,g,b; uint n = r||(g<<8)||(b<<16); вот тебе этот символ. Как его сравнивать потом? Он не даст тебе информации о том, насколько один пиксель отличается от другого |
|||
144
Mikeware
04.12.12
✎
17:06
|
(136) вычислительные расходы будут слишком велики. Для сравнения картинок проще двухмерное ДПФ.
|
|||
145
regniws
04.12.12
✎
17:14
|
(144) не поленилися. в 136 О(N), в быстрое пф лучшее О(N*log(n)). Так что - нет, не правда.
|
|||
146
Mikeware
04.12.12
✎
17:22
|
(145) это на перевод. а сравнение?
|
|||
147
Кирпич
04.12.12
✎
17:25
|
(141) облегчаю тебе задачу. тебе осталось перевести полтора символа в один. у тебя же по два байта на символ )
|
|||
148
Jstunner
04.12.12
✎
17:33
|
(141) идейку даю: 3 символа ужать в один сложновато, но в два, самое то. Рекурсивно жми! 9 в 6, 6 в 4, ну и 3 из четырех в 2, а последний так оставь. Получится 3 символа, которые тоже можно до двух ужать.
|
|||
149
Mikeware
04.12.12
✎
17:33
|
(147) троичое исчисление? Назад, к Наири?
|
|||
150
Mikeware
04.12.12
✎
17:36
|
(148) брать каждые три символа, и сжимать до двух. к результату применять тот же метод. пока не получим единственный бит, в которм будет закодирована Вселенная...
бозон хиггса тогда нафиг никому не сдался... |
|||
151
regniws
04.12.12
✎
17:40
|
(146) причем тут сравнение, это общая оценка сложности алгоритма.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |