61

Tribun пишет:

Мне известно что я типирую хорошо: Рац-Иррац, Стат-Дин, а экстра-интро хуже, таким образом он - скорее экстраверт.

"Типировать хорошо" можно по-разному. Можно вживую, можно по контент-анализу, можно по анкетам или фотографиям.
Вы любым способом типируете хорошо?
А то я вот вообще типировать не умею толком, и в своём типе сомневаюсь. Статик я или Динамик? Рац или иррац? Логик или этик? Роб или Есь?

Ну и до кучи - текст той программульки, результат вывода которой я запостил не помню в какой теме:

{ передатчик передаёт группы из 15 битов.
  разрешёнными являюцца лишь 16 комбинаций,
  так что кодовое расстояние между ними = 8.
 У каждого бита есть имя, совпадающее с признаком Рейнина,
 и своя вероятность искажения в канале связи. Она известна.
 Приёмник принимает искажённые пакеты. Их он интерпретирует
 как ближайшую разрешённую комбинацию или говорит "No".
 При этом вес признака пропорционален его невероятности
 искажения минус 0.5.
 На выходе получаем таблицу соответствий посланной
 и принятой информационной группы бит.
v0.00, 30/09/2006
- нихрена нет
}
{$N+}
USES crt,txtmouse;
LABEL start;
TYPE myreal=single;
CONST priz1: array[0..15] of string[4]=(
  'этик', 'сенс', 'раци', 'интр',
  'арис', 'эмот', 'упря',  'стра', 'пред',  'дина',
  'резу', 'нега', 'серь', 'реши',
  'декл', 'фига');
  priz0: array[0..15] of string[4]=(
  'логи', 'иNту', 'ирра', 'экст',
  'демо', 'конс', 'усту',  'такт', 'бесп',  'стат',
  'проц', 'пози', 'весё', 'расс',
  'квес', 'фига');
  prik: array[0..15] of word=(
  1, 2, 4, 8, {признаки первого порядка}
  1+2, 1+4, 1+8, 2+4, 2+8, 4+8, {признаки второго порядка}
  1+2+4, 1+2+8, 1+4+8, 2+4+8, {признаки третьего порядка}
  1+2+4+8, 0); {признаки четвёртого и нулевого порядка}
  tipes: array[0..17] of string[3]=
  ('Дон','Гек','Жук','Нап','Дже','Гам','Шти','Гюг',
   'Бал','Есь','Габ','Дюм','Роб','Дос','Мак','Дра','Чеб','Итог');
  neched: array[0..15] of boolean=
  (false,true,true,false,true,false,false,true,
   true,false,false,true,false,true,true,false);

{ Ярослав:
Так я заметил что мне удается типировать статику-динамику 99% точностью.
Вообщем, анилизируя свои ошибки, я обнаружил что вот уже 2 года подряд -
не делаю ни единой ошибки по данной полярности, кроем того, за это время
мое типирование заметно уличшилось.
Вес-Серь 93%
Расс- Реш 95%
Иррац - Рац 90%.
Все это есть мое субъективное мнение о себе.
высокая точность данных шкал - позволяет мне на них положиться, но вообщем,
они дают точность при умножение только 79%.
Но поимимо этого есть еще и другие коректирующие шкалы,
посрдством которых мне удется типирование:
Интуция - сенс 90%
Логика-Этика 75%
Экстра-интро 70%
}
  {таблица вероятностей искажения признака:
   если значение = 0.5, то информация о признаке потеряна}
  veris: array[0..15] of myreal=
  (0.25, 0.10, 0.10, 0.30,
   0.50, 0.50, 0.50, 0.50, 0.50, 0.01,
   0.50, 0.50, 0.07, 0.05,
   0.50, 0.00);
VAR wposl,wprin,tim:word; {посланная и принятая комбинации}
  wtmp: word;
  ipos,ipri,i,kit,kpovt: word; {переменные цикла}
  verno,neverno,obnarv,obnarn,tmp:word; {счётчики искажений}
  tipek: array[0..15] of word;
  tabl: array[0..15] of array[0..16] of word;
  poslano: array[0..15] of word;
  prinjat: array[0..16] of word;
  korv,korn: array[0..150] of word;
  koram,kora,sumisk,koramin,koramax: myreal;
  mrtmp: myreal;
  erk: integer;
  ss: string;
  c: char;
  klost: boolean;
{процедура подсчёта и вставки одного разряда синдрома}
PROCEDURE sumxor(var wp:word; i: word);
  var m:word;
  begin
    if (neched[wp and prik[i]]) then wp:=wp or (1 shl i);
  end;
BEGIN
  start:
  {заполним типы изначально}
  for ipos:=0 to 15 do
  begin
    tipek[ipos]:=ipos;
    for i:=4 to 15 do sumxor(tipek[ipos],i);
    poslano[ipos]:=0;
    korn[ipos]:=0; korv[ipos]:=0;
  end;
  for ipri:=0 to 16 do
  begin prinjat[ipri]:=0;
  end;
  sumisk:=0; koramin:=15; koramax:=0;
  for i:=0 to 14 do sumisk:=sumisk+veris[i];
  kit:=0; verno:=0; neverno:=0; obnarv:=0; obnarn:=0;
  klost:=true;
  clrscr;
  writeln('Введите вероятности искажения признаков в %-ах. Enter - по умолчанию');
  writeln('Если информация полностью теряецца, вероятность = 50%');
  for i:=0 to 14 do
  begin
    write(priz0[i],'/',priz1[i],' (=',veris[i]*100:3:0,'%): '); readln(ss);
    if (ss<>'') then
    begin
      if (pos('%',ss)<>0) then ss:=copy(ss,1,pos('%',ss)-1);
      val(ss,mrtmp,erk);
      if (erk<>0) then
      begin dec(i);
        sound(1000); delay(100); nosound;
      end else veris[i]:=mrtmp/100;
    end;
  end;

  clrscr;
  for ipos:=0 to 15 do
  begin gotoxy(6+ipos*4,1);
    write(tipes[ipos]);
  end;
  gotoxy(6+16*4,1); write('Итого');
  for ipos:=0 to 16 do
  begin  gotoxy(1,2+ipos);
    write(tipes[ipos]);
  end;
  gotoxy(1,19); write('Итог');

  repeat inc(kit);
    {wposl:=random(16); {на входе - 4 бита информации}
    wposl:=(wposl+1) and $F; {на входе - 4 бита информации}
    for i:=4 to 15 do sumxor(wposl,i);
    {комбинация послана}
    wprin:=wposl;
    for i:=0 to 15 do if (random<veris[i]) then
      wprin := wprin xor (1 shl i);
    {комбинация искажена}

    {начинаем расшифровку принятой комбинации}
    koram:=15; {кодовое расстояние абсурдно большое}
    tim:=16; {номер типа "чебурашка"}
    kpovt:=0; {число повторений кодового расстояния}
    for ipri:=0 to 15 do
    begin
      kora:=7.5;
      for i:=0 to 14 do
      begin
        if (0=(wprin xor tipek[ipri]) and (1 shl i)) then
        begin
          kora:=kora+(veris[i]-0.5);
        end else
        begin
          kora:=kora+(0.5-veris[i]);
        end;
      end;
      gotoxy(5+ipri*4,21); write(kora:4:1);
      if (kora<koram) then
      begin koram:=kora; tim:=ipri; kpovt:=0;
      end else
      if (abs(kora-koram)<0.01) then
      begin inc(kpovt);
      end;
      if (koram<koramin) then koramin:=koram;
      if (koram>koramax) then
      begin koramax:=koram;
        gotoxy(61,20); write(hexw(wposl),'=>',hexw(wprin));
      end;
    end;
    ipos:=wposl and $F;
    gotoxy(72,20); write(koram:6:2);
    inc(poslano[ipos]); textcolor(9);
    gotoxy(5+ipos*4,19); write(poslano[ipos]:4);
    inc(prinjat[tim]);
    gotoxy(5+16*4,tim+2); write(prinjat[tim]:4);
    textcolor(7);
    if (kpovt=0) and (koram<7) then
    begin inc(tabl[ipos][tim]);
      gotoxy(5+ipos*4,tim+2);
      write(tabl[ipos][tim]:4);
    end else
    begin inc(tabl[ipos][16]);
      gotoxy(5+ipos*4,16+3);
      write(tabl[ipos][16]:4);
    end;
    tmp:=5;
    if (ipos=tim) then
    begin inc(verno);
      wtmp:=round(koram*tmp);
      if ((wtmp div tmp) and $7=0)
        then textcolor(7)
        else textcolor((wtmp div tmp) and $F);
      inc(korv[wtmp]);
      gotoxy(((wtmp-tmp*5+5)*5-10),22); write(korv[wtmp]:4);
    end else
    begin inc(neverno);
      wtmp:=round(koram*tmp);
      if ((wtmp div tmp) and $7=0)
        then textcolor(7)
        else textcolor((wtmp div tmp) and $F);
      inc(korn[wtmp]);
      gotoxy(((wtmp-tmp*5+5)*5-10),23); write(korn[wtmp]:4);

    end;
    textcolor(7);
    tmp:=0;
    wtmp:=(wposl xor wprin);
    for i:=0 to 14 do
      if (veris[i]<0.5) and (wtmp and (1 shl i)<>0) then inc(tmp);
    if (tmp<>0) then
    begin
      if (ipos=tim) then inc(obnarv) else inc(obnarn);
    end;
    textcolor(9);
    gotoxy(1,20);
    write('verno=',verno:5,' neverno=',neverno:5,
          ' obnarv=',obnarv:5,' obnarn=',obnarn:5);
    textcolor(7);
    {комбинация принята и расшифрована}
    if keypressed or klost then
    begin c:=readkey;
      if (c='o') then klost:=true;
      if (c='s') then klost:=false;
    end;
  until (c=#27) or (kit=10000);
  sound(1000); delay(100); nosound;
  gotoxy(1,24); writeln('Press Esc to quit');
  repeat c:=readkey;
    if (c=' ') then goto start;
  until (c=#27);
END.

62 Отредактировано Tribun (26.10.2006 00:18:01)

Прошу прощения, но паскаль я знаю слабо, с чего бы мне начать чтобы смочь разобратся в тонкосятх работы алгоритма.

А на каком Паскале она лучше идет?

63

kaprizka пишет:

А я здесь причем? С чего ты взяла что это я?

А кто на другом форуме упоминал Ху Яобана в суе?

Наверное кто-то подхватил его идею типа: вот классно было бы под таким вот ником куда нибудь зайти:)))

64

можно сначала подробнее про это:
USES crt,txtmouse;
LABEL start;
TYPE myreal=single;
CONST priz1: array[0..15] of string[4]=(
  'этик', 'сенс', 'раци', 'интр',
  'арис', 'эмот', 'упря',  'стра', 'пред',  'дина',
  'резу', 'нега', 'серь', 'реши',
  'декл', 'фига');
  priz0: array[0..15] of string[4]=(
  'логи', 'иNту', 'ирра', 'экст',
  'демо', 'конс', 'усту',  'такт', 'бесп',  'стат',
  'проц', 'пози', 'весё', 'расс',
  'квес', 'фига');
  prik: array[0..15] of word=(
  1, 2, 4, 8, {признаки первого порядка}
  1+2, 1+4, 1+8, 2+4, 2+8, 4+8, {признаки второго порядка}
  1+2+4, 1+2+8, 1+4+8, 2+4+8, {признаки третьего порядка}
  1+2+4+8, 0); {признаки четвёртого и нулевого порядка}
  tipes: array[0..17] of string[3]=
  ('Дон','Гек','Жук','Нап','Дже','Гам','Шти','Гюг',
   'Бал','Есь','Габ','Дюм','Роб','Дос','Мак','Дра','Чеб','Итог');
  neched: array[0..15] of boolean=
  (false,true,true,false,true,false,false,true,
   true,false,false,true,false,true,true,false);

65

Я не знаю что такое
USES crt,txtmouse; 


word

Зачем такое большое число:
korv,korn: array[0..150] of word;

Метками меня учили не пользоватся.
LABEL start;
Вообщем мне нужна более подроная консультация, я буду благодарен если ты мне ее окажешь. Я даже распечатал твой алгоритм, для того тчобы разобратся в тонкостях его работы.

66

Как Альфиец скажу: что признаки количество которых 32767 по своей сути образуют информационный шум, безсмысленную тафлогию повторения исходных 15. см пример с Рац-Иррац и Статик динамик.

Как всеквадралец (а по тесту quadra??? (номер забыл) - альфиец) скажу: что никто не делал 32767 экспериментов по выявлению наполнения этих признаков. А значит, мы не можем знать, какие из них - шум и тафлогия. Рац-иррац и статик-динамик тут ни при чём: это признаки, входящие в группу Рейнина, образованную на базисе Юнга, а 32752 - не входят в неё.

67

Tribun пишет:

А на каком Паскале она лучше идет?

Это Turbo-Pascal версии 7.0.

можно сначала подробнее про это:
USES crt,txtmouse;

Используется вывод на экран в заданную позицию, а также очистка экрана. Поэтому uses crt;
Используется функция hexw(w), поэтому uses txtmouse. Но модуль txtmouse - это мой собственный модуль, написанный вовсе не для этой программы. Так что его проще отбросить.
А функция hexw - это просто преобразование слова в строку в hex-формате.

LABEL start;
TYPE myreal=single;

Захотел завести метку - завёл. Не нравится - уберите.
Без неё и соответствующего перехода вполне можно обойтись.
Захотел переопределить тип - переопределил.

CONST priz1: array[0..15] of string[4]
  'этик', 'сенс', 'раци', 'интр',
  'арис', 'эмот', 'упря',  'стра', 'пред',  'дина',
  'резу', 'нега', 'серь', 'реши',
  'декл', 'фига');
  priz0: array[0..15] of string[4]
  'логи', 'иNту', 'ирра', 'экст',
  'демо', 'конс', 'усту',  'такт', 'бесп',  'стат',
  'проц', 'пози', 'весё', 'расс',
  'квес', 'фига');

Это типизованные константы. Эти строки вам будут выводиться как подсказки для ввода вероятностей.

prik: array[0..15] of word=(
  1, 2, 4, 8, {признаки первого порядка}
  1+2, 1+4, 1+8, 2+4, 2+8, 4+8, {признаки второго порядка}
  1+2+4, 1+2+8, 1+4+8, 2+4+8, {признаки третьего порядка}
  1+2+4+8, 0); {признаки четвёртого и нулевого порядка}

этика, сенсорика, рациональность и интроверсия - признаки первого порядка.
1,2,4 и 8 - это соответствующие им маски битов в кодировке ТИМа в программе.
Значения остальных признаков вычисляются в соответствии с указанными суммами.
Можно было не вычислять каждый раз, а сразу завести 16 значений для каждого ТИМа.
А я вычисляю, хоть это неоптимально по времени.

tipes: array[0..17] of string[3]=
  ('Дон','Гек','Жук','Нап','Дже','Гам','Шти','Гюг',
   'Бал','Есь','Габ','Дюм','Роб','Дос','Мак','Дра','Чеб','Итог');

Имена типов для вывода на экран.

neched: array[0..15] of boolean=
  (false,true,true,false,true,false,false,true,
   true,false,false,true,false,true,true,false);

Если число содержит чётное число единиц, то false; если нечётное, то true.
Это служебная подпрограмма-функция.

word

тип переменной, принимающий целые значения в пределах от 0 до 65535.

Зачем такое большое число:
korv,korn: array[0..150] of word;

Это связано с тем, что вероятности искажений - дробные величины и притом известные.
Из-за этого и кодовые расстояния получаются дробными.
А раз так - распределение кодовых расстояний не может быть отражено только целыми значениями.
Вот массив и увеличился.
Вообще говоря, проблему адекватного вывода этого массива я так и не решил.

Метками меня учили не пользоватся.
LABEL start;

Хочу - пользуюсь. Хочу - не пользуюсь. Хачу ни хачу делаю што хачу
С меткой логика программы выглядит более аккуратной, чем если бы я применил цикл repeat-until вместо неё. И не надо делать лишний indent - а это экономия байтов.

Вообщем мне нужна более подроная консультация, я буду благодарен если ты мне ее окажешь. Я даже распечатал твой алгоритм, для того тчобы разобратся в тонкостях его работы.

Работа программы основана на имитационном моделировании.
В цикле из 10000 итераций делается последовательность:
1) выстреливается очередной "правильный" ТИМ;
(всего делается по 625 выстрелов каждого ТИМа.)
2) к нему цепляется "правильный" набор признаков Рейнина;
3) он обрастает искажениями (используется датчик случайных чисел, встроенный в Turbo-Pascal);
  ...
4) а затем начинается расшифровка.
При этом каждый признак Рейнина вносит вклад в кодовое расстояние, зависящий от вероятности его искажения. Для вероятностей меньше 0.5 вклад признака положителен, для вероятностей больше 0.5 отрицателен. В частности, вероятность искажения 1 соответствует точному инверсному восприятию и не теряет информации. А весёлый, искажённый с вероятностью 80% - эквивалентен серьёзному, искажённому с вероятностью 20%.

ТИМ, у которого наименьшее кодовое расстояние от принятой комбинации - используется как результат "типирования". Он может совпасть с исходным или не совпасть.
В рамках тех вероятностей, какие указал Ярослав, искаженние чаще всего ведёт к зеркальщику.
Пока что мы видим, что вероятность правильно определить ТИМ - около 79%.
А вероятность принять неправильный за правильный - не выше 0.01%.

По уму, в начале программы надо добавить оператор
randomize;
чтобы он подсчитывал случайнее.

68

Tribun пишет:

Давно хотел тебе сказать одну вещь ГЫКС:
Ты неадекватен по БЛ:))))

Я в этом никогда не сомневался default/smile))
потому что я ШОКОЛАДНЫЙ ЗАЕЦ

69

Заец - это житель Зая?

70

Было бы забавно, если бы пришел какой-н Дюма или Гюго и набил трибуне морду. Так часто и рушатся "стройные" теории.

kaprizka пишет:

Заец - это житель Зая?

житель Зайона

72

Praetor_Gix пишет:
Tribun пишет:

Давно хотел тебе сказать одну вещь ГЫКС:
Ты неадекватен по БЛ:))))

Я в этом никогда не сомневался default/smile))
потому что я ШОКОЛАДНЫЙ ЗАЕЦ

Гикс жжот нереально. А шоколад белый, молочный или горький? default/icon_mrgreen

73

Черт! Мне прислали паскаль5 он не запускается...

74

А можешь выслать мне на eroslove@ukr.net Турбо 7?

75

Tribun пишет:

А можешь выслать мне на eroslove@ukr.net Турбо 7?

Не знаю. Это зависит от твоих спам-фильтров.
А вообще-то ты неразумно поступаешь. Неэффективно.
Нет чтобы полностью описать ситуацию.
(перечислить все языки, какими владеешь; указать настройки почтового ящика - в первую очередь разрешённый размер вложений; указать операционную систему и имеющиеся разархиваторы)
Тем не менее, раз мыло указано - попробую послать. Пошлю в виде архива типа arj. Это примерно 2Мб.

76

Спасибо! Получил. Разархивировал. Жаль только одна проблемма, но это у меня комп глюкнутый:
не запускает ни один Паскаль. Спаибо что постарался, я тебе очень признателен, когда найду свой старый комп - попробую запустить, может там что-нибудь получится...

77

Я изучал паскаль в финансовом лицее. Версию не помню, но там мы остановились только на масивах, процедурах и функцкиях, далее был финиш. Затем немного припомнили этот Паскаль в Политехе, там еще познакомился с графическими редакторами, затем эту тему не развивал. С того момента прошло 3 года, но память о Паскале у меня свежая, и я думаю что если постараюсь то может быть осилю и твой алгоритм...

78

Каприза! Я изучил прочие признаки, о которых ты говорила.
Зайди сюда!
http://www.socionica.com/viewtopic.php?id=2499

79

Tribun пишет:

Жаль только одна проблемма, но это у меня комп глюкнутый:

А компы нынче такая дорогая вещь, что далеко не каждому по карману. Так?

но память о Паскале у меня свежая, и я думаю что если постараюсь то может быть осилю и твой алгоритм...

Несомненно разберёшься. Это ведь Паскаль, а не BrainFuck.

Спаибо что постарался, я тебе очень признателен,

Хорошо. default/icon_old

Каприза! Я изучил прочие признаки, о которых ты говорила.

Тоже хорошо. default/girl

80

Гюго и Дюма - не существует!

Каламбия пикчерз не представляед...
...А.......не представляед