Имя: Пароль:
IT
 
Придумать алгоритм. Есть математики?
, ,
0 Vovan_Magadan
 
30.07.13
08:50
1. Невозможно - такого не может быть никогда 38% (3)
2. Другое 38% (3)
3. Алгоритм есть, но он секретный 13% (1)
4. Алгоритм еще не изобрели 13% (1)
5. Напоминает "женскую логику" 0% (0)
Всего мнений: 8

Привет.

Мне нужен алгоритм, но я не могу его найти / придумать. Как то начинал пару лет назад пробовать разное, не пришел к успеху.
Есть мнение что это невозможно.

Есть ли тут люди которые любят математику и хотят поломать голову?

Дано( см. изображение http://img.by/i/6uJcV.jpg ):
1) есть три числа, каждое число может быть от 1 до 255
2) нужно из этих трех чисел, получить одно число (логично что оно уже будет большое)
3) и главное возможность ОБРАТНО из большого числа, получить эти три в том же порядке!

Есть вопросы? Спрашивайте.
60 dmpl
 
30.07.13
09:14
(53) Ну, если встроить детектор определения псевдослучайных последовательностей - то и до 1 кБ можно ж)
61 Rovan
 
гуру
30.07.13
09:14
(35) ты это дело прекращай
или меняй условие задачи или решения нет
62 Ненавижу 1С
 
гуру
30.07.13
09:14
(57) это сложно для некоторых ))
63 Rovan
 
гуру
30.07.13
09:15
(58) см (13)
64 Lama12
 
30.07.13
09:15
(49) Архиваторы работают по принципу удаления избыточности информации.
(0)(13)Математики не врут. Задача разрешима только при условии что 256^3 < 65536. Это не возможно.
65 Капитан О
 
30.07.13
09:16
(58) ограничение выхода в два байта
66 Гобсек
 
30.07.13
09:17
Три числа от 1 до 255 могут породить 255^3 = 16581375 различных комбинаций. Для того, чтобы их закодировать различными целыми числами, нужны числа от  1 до 16581375.
67 MiniMuk
 
30.07.13
09:17
(19) Невозможно 255 это FF три числа по 255 это FFFFFF = 16777215
68 Лодырь
 
30.07.13
09:17
(62) Особенно радует: "нет решения, спрашивал у математиков, не смогли помочь. Но я чувствую можно"
69 Ненавижу 1С
 
гуру
30.07.13
09:18
(68) а вдруг? потом он скажет, что это число не обязательно целое
70 Живой Ископаемый
 
30.07.13
09:18
это все клево до тех пор, пока мы решаем число может быть только целым. Давайте поделим его на 1000 или на 10000
71 Vovan_Magadan
 
30.07.13
09:19
(66) в этом и соль может как то их делить эти числа
72 Кирпич
 
30.07.13
09:19
наверное это автор отсюда Кодирование числовой информации
просто ник сменил. ибо два таких автора - это редкость.
73 Vovan_Magadan
 
30.07.13
09:20
(72) нет, там другой вопрос.
У меня всего один вопрос по математике, он в этой теме =)
74 Rovan
 
гуру
30.07.13
09:20
(+52) пост 80 - автор mr_K

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

В качестве офф-топик: на студенческой олимпиаде по программированию, на финальном туре нужно было написать свой алгоритм архивации. Граничное условие - чтобы заархивированный файл был не больше исходного. Учитывались размер архива и время архивации/разархивации.
Победил чел, который тупо копировал файл туда сюда. Ибо больше никто не прошел граничное условие на одном из тестов
75 Гобсек
 
30.07.13
09:20
Ветка наводит на грустные размышления. Магаданский пединститут переименовал себя в университет, но...
76 serffer
 
30.07.13
09:20
Надо архивировать. например с 65000 по 65500 хранить числа где первые 2 цифры дублируются, или где вторые 2 дублируются.
77 Ненавижу 1С
 
гуру
30.07.13
09:21
(70) если не целое, то достаточно от 0 до 1 ))
78 Asmody
 
30.07.13
09:21
(69) не, я так понимаю, что 65536 не с потолка взялось
79 Rovan
 
гуру
30.07.13
09:21
(72) сч (52) :-)
80 Ненавижу 1С
 
гуру
30.07.13
09:21
(76) архивирование не помогает здесь ))
81 Lama12
 
30.07.13
09:22
(71) Автор, а какое у тебя образование?
82 Vovan_Magadan
 
30.07.13
09:23
(81) 5 классов
83 Андрюха
 
30.07.13
09:23
(0) Дарю решение:
122 + 200 + 255 = 122200255 = 122 + 200 + 255
84 Ненавижу 1С
 
гуру
30.07.13
09:23
(83) мы ждали тебя с нетерпением ))
85 Андрюха
 
30.07.13
09:24
отож )))
86 Ненавижу 1С
 
гуру
30.07.13
09:24
может автора за (82) забанить?
87 Vovan_Magadan
 
30.07.13
09:24
(86) да
88 Rovan
 
гуру
30.07.13
09:24
математический тролль детектед !
предлагаю закрыть ветку !!
89 Живой Ископаемый
 
30.07.13
09:24
2(83) молодец, настоящий 1Сник, как и автор... Автор забыл написать условие, написал его в (13), а ты подумал - вот тупые 1Сники, решение ведь простое, и умный я вам его сейчас дам
90 Lama12
 
30.07.13
09:25
(86) +100500.
91 Vovan_Magadan
 
30.07.13
09:25
(88) смысл имея 2 по математике заходить в эту тему и предлагать её закрыть? Я пришел сюда думать с умными людьми
92 Кирпич
 
30.07.13
09:25
(82) Ты сейчас в пятом или уже в шестом?
93 magicSan
 
30.07.13
09:26
(91) а есть чем думать то??? ну там познания какиенить начальнеы ...
94 Vovan_Magadan
 
30.07.13
09:26
(76) можно подробнее?
95 Живой Ископаемый
 
30.07.13
09:26
правильно, и таким образом индукционно учить эту математику. Мы все чувствуем, что это годный способ.
96 Lama12
 
30.07.13
09:26
(91) Не понял. Ты сам себя критикуешь?
97 Vovan_Magadan
 
30.07.13
09:26
Короче троллям отвечать не буду, жду ответ (76)
98 Asmody
 
30.07.13
09:27
(83) заебца у тебя сложение работает. У вас з/п тоже так считают?
99 Андрюха
 
30.07.13
09:27
(89) С поправкой на (13) = 12220.0255 < 65500, про целочисленное нигде не сказано )))
100 Андрюха
 
30.07.13
09:27
(98) Это не сложение
101 Lama12
 
30.07.13
09:28
Закрывайте ветку.
Человек не в адеквате.
Пытается теорию чисел разрушить.
102 dmpl
 
30.07.13
09:28
(101) Судя по нику - ему начальник пообещал вольную подписать, когда он решение найдет :)
103 Ненавижу 1С
 
гуру
30.07.13
09:29
(101) рано еще ему теорию чисел, он пока теорию множеств осиливает, причем конечных
104 PLUT
 
30.07.13
09:30
(83) а теперь это в два байта запих.й
105 Rovan
 
гуру
30.07.13
09:30
Прикрутил голосовалку !! :-)

Невозможно - такого не может быть никогда
106 Андрюха
 
30.07.13
09:30
(104) Зачем? В условиях задачи про байты не говорится.
107 Vovan_Magadan
 
30.07.13
09:30
К стати да, автора этой темы Кодирование числовой информации тоже с ног до головы обоклали какахами, ну так интернет героев много =)
108 Vovan_Magadan
 
30.07.13
09:31
голосую, надо просто смотреть в не очевидное, а более конструктивно

Алгоритм еще не изобрели
109 arsik
 
гуру
30.07.13
09:32
(0) Алексей. Бабушкин, это ты?
110 PLUT
 
30.07.13
09:33
(106) по условиям из трех чисел одно <FFFF (дыдыщь! 2 байта) и обратно в том же порядке
111 Бывший адинэсник
 
30.07.13
09:35
(0) на этом построены методы шифрования, единственное что ты можешь получить это набор возможных начальных чисел
112 Starhan
 
30.07.13
09:36
(0)Так целое или не целое, конечное число?
113 User_Agronom
 
30.07.13
09:37
Не нашел такого ответа.
Таблица ASCII: Просто записать строку из трёх символов, по номерам этих символов. Только про ноль нужно что-то придумать

Другое
114 Vovan_Magadan
 
30.07.13
09:37
(112) целое =)
115 magicSan
 
30.07.13
09:37
(111) или не сколько "ключей" - не одназначное соответствие.
116 Starhan
 
30.07.13
09:38
(113) нельзя строку во вторых ты с номером символа вернулся к исходному условию
117 Vovan_Magadan
 
30.07.13
09:38
(113) увы но не так все легко =)

Три символа ASC будет три байта, что больше 65 тыщ, увы.
118 PLUT
 
30.07.13
09:41
(117) RADIX-50 кадирофка, когда компьютеры были большими юзался, но там три символа в два байта пихали, но всего 50 символов
119 Кип Калм
 
30.07.13
09:41
Вместо Вована можно главную страницу Мисты при открытии два-три раза загружать.

Другое
120 Бывший адинэсник
 
30.07.13
09:42
Расходимся, нас НАЕ... обманули
121 User_Agronom
 
30.07.13
09:43
тогда невозможно.
1 Бит единица измерения информации. У Вас три числа (каждое по 8 бит), в сумме 24 бита.
Вы хотите уложиться в 16 бит. Нельзя поместить в 3 зайцев в 2 клетки так, чтобы в каждой клетке было не более одного кролика.

Невозможно - такого не может быть никогда
122 Vovan_Magadan
 
30.07.13
09:45
Надо что то типа:

Можно например, есть 255

255 / 2 = 127.5 (по условию нельзя дробное) округляем вверх = 128

Обратное 128 Х 2 = 256 - 1 = 255



163 / 2 = 81,5 = 82
Обратное 82 * 2 = 164 - 1 = 163

3 / 2 = 1,5 = 2
Обратное 2 х 2 = 4 - 1 = 3



так из 255 мы уже можешь получать числа в два раза меньше, просто как пример
123 arsik
 
гуру
30.07.13
09:47
(121) можно. Кот Шредингера.
124 Ненавижу 1С
 
гуру
30.07.13
09:47
(122) идиот? а с четными как?
125 sikuda
 
30.07.13
09:47
(121) Внимательно условие 1-255, а не 0-255. Что-то я думаю можно впихнуть но насколько это 1-255, не уверен...

Другое
126 MSII
 
30.07.13
09:50
Это же тот Вован, который про миллионы строк в ТЧ писал, да?
127 Vovan_Magadan
 
30.07.13
09:50
(124) да я идиот, кто мешает проверить на четные?
128 Vovan_Magadan
 
30.07.13
09:52
+ (122)

с четными.

244 / 2 = 122



Обратная (проверка на четность числа 122) = 122 * 2 = 244
129 Diversus
 
30.07.13
09:52
Я не так давно решал подобную задачу. Хранил в реквизите цвет,  в формате RGB.
Т.е. в одном реквизите хранил значение трех цветовых составляющих, значения каждого из которых от 0 до 255.
Вышел из положения так. Завел реквизит типа строка с длинной в 6 символов. Каждый из которых конвертится в 16-ти ричную систему счисления с длинной для каждого цвета 2 символа. Пример:
Красный FF0000
Зеленый 00FF00
Серый АААААА
Конвертация в цвет действие обратное.

Для чисел можно использовать тот же принцип.
Т.е. числа
255, 100, 129 = 255100129
23, 10, 15 = 23010015
1, 100, 1 = 1100001

Второе и третье число приводим к длине 3 с лидирующими нулями.

Алгоритм обратного преобразования: переводим в строку берем последние три символа, переводим в число - получили третье число, потом берем перед ними три символа, переводим в число - получили второе число, то, что осталось переводим в число получили первое число.
130 Rovan
 
гуру
30.07.13
09:55
(129) подобие твое задачи заканчивается в фразе
"строка с длинной в 6 символов"
131 User_Agronom
 
30.07.13
09:55
(127) Но результат проверки опять же нужно где-то хранить. А это биты информации.
Ну поделили на 2. Получили 12 бит информации. +3 бита чётность. Вроде в 16 укладывается
132 Vovan_Magadan
 
30.07.13
09:55
Увы но я не математик с 30 годовым стажем, так бы я тут не писал, лишь чувствую что можно и нужна помощь.

Можно танцевать от этого

256^3 = 16777216  да это больше 65000

а что если 16777216 / 1000 = 16777,216 и потом уже округлить до целых.

А в обратном уже сделать типа коэффициента и получить 16777216
133 User_Agronom
 
30.07.13
09:56
Не, на два поделим будет 21 бит. Всё равно не получиться
134 User_Agronom
 
30.07.13
09:57
Никак. Если мы поделим на два, уменьшим неопределенность на один бит. таким образом получим 21 бит чисел и три бита инфа о чётности.
Всё равно будет 24 бита. Невозможно
135 User_Agronom
 
30.07.13
09:58
(123) Где цитата от Станиславского?
136 Fenrik
 
30.07.13
09:59
Легко.
Берем 122, 200, 255, преобразовываем в 122200255. Так, должно быть не больше 65500, значит умножаем на -1, получаем -122200255. Обратно преобразовать возможно, задача решена!
137 Vovan_Magadan
 
30.07.13
10:01
(136) ..... не меньше 0
138 Salimbek
 
30.07.13
10:02
(132) В твоем примере:
163 / 2 = 81,5 = 82
Обратное 82 * 2 = 164 - 1 = 163
Ты ведь в конце получаешь число 82 - правильно?
Внимание вопрос - А какое кодовое число у тебя будет, если начальное 164? И как из него ты сможешь получить 164?
139 NS
 
30.07.13
10:05
Вы издеваетесь?
Вроде ТС четко сказали, что число возможных вариантов в (0) 256^3 степени, и соответственно сделать взаимно-однозначное отображение можно только в множество такого-же размера.
140 Fenrik
 
30.07.13
10:07
(137) Ух ты, еще одно условие. Ладно, напряжемся...
преобразуем в 1/122200255. И снова задача решена!
141 Ненавижу 1С
 
гуру
30.07.13
10:10
(139) во-первых ты опоздал, во-вторых не мешай ))
142 Salimbek
 
30.07.13
10:10
(139) Мы то не издеваемся, это (0) над нами издевается.
Цитата из (43):
"нет решения, спрашивал у математиков, не смогли помочь. Я писал будет легко? Но я чувствую можно"
Так что тут мы уходим из математики и переходим в вопросы веры. Ну вот верит человек, что это возможно.
143 NS
 
30.07.13
10:19
Играйтесь, играйтесь, мужички. Не буду мешать :)
144 Asmody
 
30.07.13
10:29
(139) да ладно, нормально, чо! сейчас они придумают способ упаковать 3 байта в 2 и Вселенная сколлапсирует
145 Кирпич
 
30.07.13
10:32
Автор спросил у математиков. Те ему ответили:"Это невозможно, но можно на Мисте попробовать."
Ждем когда автор сделает вывод, что одинесники такие же тупые, как и математики.
146 Кирпич
 
30.07.13
10:34
+(145)Голосовалку нужно другую.
1. Автор кретин.
2. Автор тролль.
147 Rovan
 
гуру
30.07.13
10:48
(+145) нельзя...но на Мисте все будут целый день меряться кто что-то похожее делал
148 bolder
 
30.07.13
11:14
(122) Великолепно ))Продолжая по той же "логике" получаем:
254/2 = 127
253/2 =126.5 ,округляем )) 127.
Итого: неодназночное представление 254 и 253.
Что и требовалось доказать.
Автор,вы поймите простую вещь = число до 255 есть 2^8,то есть 8 бит занимает.№ числа соответственно 24 бита.Ну и как их поместить в прокруство ложе 16 бит? (2^16 = 65 536)

Невозможно - такого не может быть никогда
149 bolder
 
30.07.13
11:15
(148) № ==3
150 ЗлобнийМальчик
 
30.07.13
11:18
122 200 255 -> 122 * 1000000 + 200*1000 + 255
ну и в обратном порядке
151 ЗлобнийМальчик
 
30.07.13
11:24
естественно

Алгоритм есть, но он секретный
152 Salimbek
 
30.07.13
11:24
(150) Прочитай хотя бы первые 20 постов
153 ЗлобнийМальчик
 
30.07.13
11:25
стоит лям долларов.
154 ЗлобнийМальчик
 
30.07.13
11:25
(152) зачем? понятно же что автор тролль)
155 bolder
 
30.07.13
11:25
(150) Для представления 3-х чисел по 8 бит достаточно числа не более 16777216.А не 122 миллиона с хвостиком.ТС хочет в число не более 65536 поместить их обратимо,то есть с возможностью восстановления,что невозможно.
156 ЗлобнийМальчик
 
30.07.13
11:27
(155) про ограничение  65536  в посте (0) нет ничего. с таким ограничением естесттвено ничего не получится - чудес не бывает
157 Unkas
 
30.07.13
11:29
(0) "2) нужно из этих трех чисел, получить одно число (логично что оно уже будет большое) "

Дальше читать не стал =)
158 bolder
 
30.07.13
11:31
(156)ТС> увы забыл добавить... общее число не может быть больше 65500 Пост 13 )))))).
159 Rovan
 
гуру
30.07.13
11:37
(+150) ждем еще 30-40 минут...
зайдет еще кто-то и не читая ветки (прочитав только 0) напишет "решение":
А*1000000+Б*1000+В
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс