<em><u>Программа шифровки:</u></em>
DATA "ауоыэяюёие"
DATA "бвгджзклмнпрстфхцчшщ"
DATA "ъйь"
DIM s10 AS STRING, s20 AS STRING, s3 AS STRING
DIM i AS INTEGER
DIM s AS STRING, t AS STRING
CLS
READ s10, s20, s3
RANDOMIZE TIMER
INPUT "Введите фразу: ", s
t = ""
FOR i = 1 TO LEN(s)
t = t + MID$(s, i, 1)
t = t + MID$(s10, INT(10 * RND + 1), 1)
t = t + MID$(s20, INT(20 * RND + 1), 1)
t = t + MID$(s3, INT(3 * RND + 1), 1)
NEXT i
PRINT t
END
<em><u>Программа дешифровки:</u></em>
DIM s AS STRING, t AS STRING, <span>i AS INTEGER</span>
CLS
INPUT "Введите фразу: ", s
t = ""
FOR i = 1 TO LEN(s) STEP 4
t = t + MID$(s, i, 1)
NEXT i
PRINT t
END
Порядок 20172017 в 2сс = log(20172017) / log(2) = 24.265852010453507 ~= 25
чтоб перевернуть число надо отнять колво единиц равных его порядку
20172017 - (2^25 - 1) = 13382414
Можно конечно заниматься переводами в двоичную
20172017 = "1001100111100110011110001"
"0110011000011001100001110" = 13382414
? - фальшивая
+ - настоящая
dif - знание о весе фальшивой (больше или меньше)
vs - взвешивание
=> - итог взвешивания
1 откладываем
1) 7? vs 7?
if == => 14+ 7? goto 2)
if <> => 7+ 14? goto
2) 4? vs 4+
if == => 18+ 3? goto 3)
if <> => 10+ 4? goto
3) 2? vs 2+
if == => 20+ 1? goto 4)
if <> => 19+ 2? goto
4) 1? vs 1+
if == => фальшивая та что отложена вначале
if <> => нашли
1. 2^i = 256 => i(1)=8 бит
2. 2^i = 16 => i(2)=4 бит
100x150=15000 пикс
8*15000 = 120000 бит = 15000 байт
4*15000 = 60000 бит = 7500 байт
15000-7500 = 7500 байт
15000/7500 = 2
Уменьшится на 7500 байт, уменьшится в 2 раза
// PascalABC.NET 3.1, сборка 1218 от 12.04.2016
begin
5.To(12).Tabulate(x->x*x+1).Println
end.
<u><em>Результат:</em></u>
(5,26) (6,37) (7,50) (8,65) (9,82) (10,101) (11,122) (12,145)