Мне известно что я типирую хорошо: Рац-Иррац, Стат-Дин, а экстра-интро хуже, таким образом он - скорее экстраверт.
"Типировать хорошо" можно по-разному. Можно вживую, можно по контент-анализу, можно по анкетам или фотографиям.
Вы любым способом типируете хорошо?
А то я вот вообще типировать не умею толком, и в своём типе сомневаюсь. Статик я или Динамик? Рац или иррац? Логик или этик? Роб или Есь?
Ну и до кучи - текст той программульки, результат вывода которой я запостил не помню в какой теме:
{ передатчик передаёт группы из 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.