+129
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
public void ReadFromFile()
{
LoadIntervals = new TimeIntervals(Color.Black);
StreamReader tReader = null;
tReader = File.OpenText("DefaultIntervals");
string income = null;
while ((income = tReader.ReadLine()) != null)
{
// string income = tReader.ReadLine();
string colorR = null; string colorG = null; string colorB = null; string colorA = null; string interval = null;
int i = 0;
for (i = 4; i < income.Length; i++)
{
if (income[i] != ',')
{
interval += income[i];
}
else { break; }
}
for (int a = i + 10; a < income.Length; a++)
{
if (income[a] != ',')
{
colorA += income[a];
}
else
{
for (int r = a + 4; r < income.Length; r++)
{
if (income[r] != ',')
{
colorR += income[r];
}
else
{
for (int g = r + 4; g < income.Length; g++)
if (income[g] != ',')
{
colorG += income[g];
}
else
{
for (int b = g + 4; b < income.Length; b++)
if (income[b] != ',')
{
if (income[b] != ']')
colorB += income[b];
}
else
{
break;
}
break;
}
break;
}
}
break;
}
}
TimePoint tp = new TimePoint(Convert.ToDouble(interval), Color.FromArgb(Convert.ToInt32(colorA), Color.FromArgb(Convert.ToInt32(colorR), Convert.ToInt32(colorG), Convert.ToInt32(colorB))));
LoadIntervals.Add(tp);
}
tReader.Close();
Intervals = LoadIntervals;
}
Так мы парсим файл конфигов вида. (Формат придуман автором кода)
Int=3,Color [A=223, R=253, G=4, B=38]
Int=10,Color [A=255, R=86, G=86, B=185]
Int=20,Color [A=200, R=255, G=215, B=0]
Int=50,Color [A=200, R=255, G=165, B=0]
Запостил:
lomomike,
15 Июня 2011
даже мой кот
нашел бы подход
совсем наоборот.
вот.
Твой кот не идиот!
Он знает наперёд,
Чем плох тот говнокод!
Вот.
читает мануал задом-наперед.
Это и есть котячий подход.
Вот.
свинячий, дитячий
Кот К.О.
http://www.rubular.com/r/fZJqkh9dRE
Ваш О.К.
Int-----A-----R------G-----B
3------223---253----4------38
10-----255---86-----86----185
20-----200---255----215---0
...
/* "-" -- вместо табов, местные в курсе*/
>сколько именно дейсятичных
все, от текущей позиции, до первого разделителя(К.О.)
И это, как вы собираетесь обрабатывать 9034582340980958342309883945703498752304 58732094587230458237049587 числа, капитан?
>903458234098095834230988394570349875230 4 58732094587230458237049587
http://en.wikipedia.org/wiki/Integer_(computer_science)
Значения «на пример» взято _из_математики_ не связанной с конкретной платформой?
Или что-то не до понял?
P.S. '\t' — табуляция, если чё. Выполняет роль разделителя значений и визуального разграничителя при редактировании в рукопашную. Ваш К.О.
Вон оно чё, Кэп. Это ты хитро задумал.
А так: 0x30xE90xFD0x40x26
читать поток порциями по 4-ре.
Если аргументы были не понятны, или недостаточно убедительны, то, можно упростить. Ни один человек, сколько бы он художественных академий ни закончил не в состоянии предствить цвет записаный в виде R=\d+, G=\d+, B=\d+ потому, что в отличие, скажем, от нот, эти значения не соответствуют каким-то реальным цветам / не представляют полный видимый спектр. Это условности компьютерной графики, и они всегда относительны, т.е. зависят от устройства вывода. Таким образом, записав "цвет" в таком виде вы оказываете медвежью услугу пользователю, которому прийдется несколько раз скопировать числа, чтобы в программе, которая может показать цвет, эти числа приобрели какое-то значение. Если бы это было одно число, тогда операций нужно было бы делать меньше. С другой стороны, очень многие программы работающие с графикой предпочитают получать цвета, как одно число, а не набор из чисел (так их удобнее складывать, например).
С еще одной стороны, если вы будете использовать разделители, которые, по моему мнению избыточны, вы увеличите количество слов в алфавите ввода (т.как сейчас у нас есть ограниченный алфавит ввода, и в нем отсутсвуют символы-разделители) таким образом добавив ничем не мотивированые излишества. Это не может позитивно отразится на работе программы-компрессора, т.как чем больше символов в исходном алфавите, тем хуже будет степень сжатия...
именно над этим и работал Хаффман.
мне лень читать стены текста выше, поэтому отмечу, что битоёбство по Хаффману является экстремальной формой байтоёбства, а байтоёбы в 95% случаев не правы.
а тема, между прочим, про сжатие
префиксным (p-code) - значит, разделители не нужны
оптимальным - значит, что количество закодированной информации = энтропии, иначе говоря, не является избыточным
Пассажи насчёт цветов и нот опускаю (хотя они и не совсем верны, мягко говоря, но зачем нам флейм?).
Вы зачем-то используете «мусорный» префикс #. Да ещё и алфавит увеличиваете буквами от A до F. Это по Хаффману?
Если вы прочитаете следующие главы после Хаффмана, то увидите, что алгоритмы сжатия не ограничиваются Хаффманом уже более 30 лет. Рулят словарные, марковские и т.п. алгоритмы, основанные на предсказании более крупных, чем один символ, последовательностей (а код Хаффмана или арифметическое кодирование потом просто сглаживают углы). Также прочитайте про избыточность и зачем она нужна. Ну и ещё про сложность по Чебышеву.
P.S. К слову сказать, я предпочитаю в конфигурационном файле хранить цвета в формате #XXXXXX. Но совсем не по тем причинам, и это не имеет никакого отношения к данной теме.
Это ж уэб-приматы. Науке неизвестно почему, но они не признают фич протокола HTTP и всегда стремятся изобрести что-то своё.
А корешок проблемы-то - вот он.
Int=50,Color [A=0, R=255, G=0, B=0]
Вы правы: и xml, и csv намного лучше.
На самом деле код уже давно переписан и потерял свою говнистость)