Имя: Пароль:
IT
 
Кодирование числовой информации
0 Rizhij_Nikitos
 
04.12.12
12:44
Есть у меня много разных чисел размером 9 цифр, но мне нужно сделать так, чтобы каждое число обозначалось одним символом, а не 9.
Системы счисления не предлагать.
1 Cube
 
04.12.12
12:45
Используй иероглифы. Их много.
2 patapum
 
04.12.12
12:48
(0) а ты понимаешь, что для обозначения каждого числа своим символом у тебя должно быть 10 млрд таких символов. и зачем тебе такая радость? что ты с этим дальше будешь делать? :)
3 dk
 
04.12.12
12:48
напиши хэш функцию - тока у нескольких кодов будут одинаковые буквы
4 Ёпрст
 
04.12.12
12:49
Это какие-то новые синтетические наркотики.. или опять кто-то калитку забыл закрыть
5 HeroShima
 
04.12.12
12:49
опять?..
6 Wist
 
04.12.12
12:50
(2) см (4) когда наркота отпустит, уже будет неважно :)
7 Никола_
Питерский
 
04.12.12
12:50
(4) Про калитку чё за прикол ? просто не слыхал ранее такого.
8 Dzenn
 
гуру
04.12.12
12:50
Юзай "Соответствие" :) Значение и представление... Элементы соответствия можно распечатать и повесить перед входом в организацию, что никто не путался)
9 Fenrik
 
04.12.12
12:50
(0) Дир приказал зашифровать бухгалтерию?
10 Rizhij_Nikitos
 
04.12.12
12:51
Объясняю: допустим число мое может выглядеть как составное из трех трехзначных чисел.

То есть дается три числа размером 0-255, я могу составить из них девятизначное число:
Число1=12
Число2=231
Число3=98
Итог=012231098
11 Eugene_life
 
04.12.12
12:52
(0) Складывай все цифры, пока не останется одна. Эту "мастер-цифру" и храни. :-D
12 Rizhij_Nikitos
 
04.12.12
12:52
(11) обратно я как потом получу свою "мастер-цифру"?
13 Wist
 
04.12.12
12:52
(10) объясни лучше, кто поставщик?
14 Rizhij_Nikitos
 
04.12.12
12:52
(12) свое "мастер-число"*
15 Eugene_life
 
04.12.12
12:52
(12) А зачем "обратно"? Про это в (0) не было
16 Ksandr
 
04.12.12
12:53
- Под чем у Вас программисты пишут?
- Судя по коду - под галоперидолом
17 Rizhij_Nikitos
 
04.12.12
12:53
(13) я ничего не принимаю. Все исключительно мастерство самоубеждения.
18 HeroShima
 
04.12.12
12:53
машинное представление...
19 Ёпрст
 
04.12.12
12:54
(7) в дурдоме кто-то опять калитку не запер
20 Rizhij_Nikitos
 
04.12.12
12:56
(18) до 16 я сожму... а толку? 2 символа выходит
21 patapum
 
04.12.12
12:57
(10) и это не накурившись? да ты живешь в волшебной стране :)
22 HeroShima
 
04.12.12
12:59
(20) кодируй в utf и всё получится)
23 Ksandr
 
04.12.12
13:01
эдакий uint32_t
24 Гобсек
 
04.12.12
13:03
(11)Эта "мастер-цифра" есть остаток от деления исходного числа на 9.
25 BlackSeaCat
 
04.12.12
13:06
В личке автора слово "программист" явно лишнее.
26 Lama12
 
04.12.12
13:11
При длине чила в 9 цыфр, размер множества которое кодируется этими кобинациями составляет 1000000000.
Вопрос - где взять столько знаков?
И чем система счисления не подходит?
Возьми за основу систему счисления с основой 1000000000. Как раз получишь один символ на одно значение.
27 Rizhij_Nikitos
 
04.12.12
14:03
(26) И как я буду определять такую систему счисления? Прописывать соответствие каждому числу символа?
28 HeroShima
 
04.12.12
14:04
(27) ну ты же программист!
29 Rizhij_Nikitos
 
04.12.12
14:06
(28) вот именно, и моя задача сделать код с использованием минимального количества сил.
30 BlackSeaCat
 
04.12.12
14:11
(29) У тебя получается: сил ты вообще не прилагаешь.
31 Rizhij_Nikitos
 
04.12.12
14:16
(30) к чему?
32 mikecool
 
04.12.12
14:19
щас размеры дисков почти не ограниченные, зачем такой изврат?
33 Rizhij_Nikitos
 
04.12.12
14:20
(32) пишу алгоритм сравнения двух картинок. Нужно представлять RGB компоненты каждого пикселя в виде 1 символа.
34 Mafoni
 
04.12.12
14:20
(31)  да вообще ни к чему не прилагаешь.
35 Rizhij_Nikitos
 
04.12.12
14:22
(34) (30)господа флеймеры могут пойти, создать себе ветку и там со спокойной душой гадить друг на друга в любых позах, тут если написать нечего, не пишите всякую лабуду.
36 HeroShima
 
04.12.12
14:23
(33) это было решено ещё на VGA
37 HeroShima
 
04.12.12
14:24
но лично ковырял сжатие цветового пространства, если что)
38 Mafoni
 
04.12.12
14:25
(37)  и как представил цвет пикселя одним символом ?
39 HeroShima
 
04.12.12
14:26
(38) 3 + 3 + 2, или палитра
40 Rovan
 
гуру
04.12.12
14:26
(10) ну можно в 3 впехнуть
Число1=12
Число2=231
Число3=98
Результат = Символ(Число1)+Символ(Число2)+Символ(Число3)
41 napagokc
 
04.12.12
14:27
(0) Можно попробовать изобрести свою 32-ричную или 64-ричную систему. Это существенно сократит кол-во символов. Потом придумать очередную систему обозначения и шифровать. К примеру: DF = Z и т.п. Таким образом уменьшать и уменьшать число символов =)
42 Кирпич
 
04.12.12
14:28
(40) Автор идет на нобелевку, ему надо в один. Впихнуть невпихиваемое так сказать.
43 napagokc
 
04.12.12
14:29
чота вы, господа математики, вообще не в ту степь все пошли. Переход из десятичной в другую систему счисления только мне в голову пришел, что ли?
44 HeroShima
 
04.12.12
14:29
(43) не читал, но осуждаешь
45 HeroShima
 
04.12.12
14:30
имхо, ТС прикалывается над нами
46 napagokc
 
04.12.12
14:30
(44) Да я по диагонали прошелся и увидел только критику друг на друга, хотя ответ очевиден
47 Rizhij_Nikitos
 
04.12.12
14:30
(40) проблема что не все символы кодируются, но идея хорошая обдумаю.

(41) перевел сначала в 16 систему получив FF FF FF сейчас подбираю систему счисления чтобы перевести это в еще какую-то, сократив число символов до 2-3, после чего можно будет сделать еще раз перевод и получить по 1 символу на каждый пиксель.
48 Кирпич
 
04.12.12
14:31
щас все тролли будут тут
49 polymorph
 
04.12.12
14:31
для создания велосипеда создаем еще один велосипед...
50 napagokc
 
04.12.12
14:31
(45) Прикалывается - пусть. Но мне кажется, что моя идея в (41) вполне реальная и может добиться нужного варианта. Только с декодированием потом замучаешься )) Но про это в условии не сказано ;)
51 polymorph
 
04.12.12
14:32
(47) а зачем вообще это нужно? или ты строки сравнивать не умеешь?
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) причем тут сравнение, это общая оценка сложности алгоритма.
2 + 2 = 3.9999999999999999999999999999999...