Имя: Пароль:
IT
 
Кодирование числовой информации
, ,
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
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) причем тут сравнение, это общая оценка сложности алгоритма.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн