Здравствуйте, гость ( Вход | Регистрация )

4 страниц V < 1 2 3 4 >  
Ответить в эту темуОткрыть новую тему
> Декодер | замена текста.
cirus
сообщение 28.1.2019, 4:24
Сообщение #21


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26691
Пользователь №: 16.971
Возраст: 29



Код
--lua
log "clear"   log "mode compact"

local s="%D0%9A%D0%BE%D0%B4%20%7Benglish%20text%7D%20%D0%9A%D0%BE%D0%B4%20lua!!!"   -- Код {english text} Код lua!!!
log(s)

local t={}
t["%D0%9A"]="К"
t["%D0%BE"]="о"
t["%D0%B4"]="д"
-- добавить только кириллицу, остальные символы не надо
-- ключи заглавными буквами

for v in pairs(t) do   -- добавление ключей в таблицу, если был "%D0%9A", то добавляется "%d0%9a"
    t[v:lower()]=t[v]
end

for i=32, 127 do t["%" .. string.format("%X", i)]=string.char(i) end   -- добавление ключей в таблицу, все символы ascii с 32 по 127


s=s:gsub("%%[Dd][01]%%%x%x", t)   -- замена кириллицы
s=s:gsub("%%..", t)               -- замена спецсимволов
log(s)                            -- результат
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 28.1.2019, 6:38
Сообщение #22


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1316
Пользователь №: 18.346
Возраст: 25



Цитата(cirus @ 28.1.2019, 4:24) *

Код
--lua
log "clear"   log "mode compact"

local s="%D0%9A%D0%BE%D0%B4%20%7Benglish%20text%7D%20%D0%9A%D0%BE%D0%B4%20lua!!!"   -- Код {english text} Код lua!!!
log(s)

local t={}
t["%D0%9A"]="К"
t["%D0%BE"]="о"
t["%D0%B4"]="д"
-- добавить только кириллицу, остальные символы не надо
-- ключи заглавными буквами

for v in pairs(t) do   -- добавление ключей в таблицу, если был "%D0%9A", то добавляется "%d0%9a"
    t[v:lower()]=t[v]
end

for i=32, 127 do t["%" .. string.format("%X", i)]=string.char(i) end   -- добавление ключей в таблицу, все символы ascii с 32 по 127
s=s:gsub("%%[Dd][01]%%%x%x", t)   -- замена кириллицы
s=s:gsub("%%..", t)               -- замена спецсимволов
log(s)                            -- результат


чо-то вроде получылось (IMG:style_emoticons/default/smile.gif)
URL-декодер: %D0%A2%D0%B5%D0%BA%D1%81%D1%82 -> Текст

Код

--lua
log "clear"   log "mode compact"

local s="Cirus-code-master%20%D0%B1%D0%BE%D0%B6%D1%8D%D0%BD%D1%8C%D0%BA%D0%B0!:)"   -- Код {english text} Код lua!!!
log(s)

local t={}
t["%D0%90"]="А" t["%D0%91"]="Б" t["%D0%92"]="В" t["%D0%93"]="Г" t["%D0%94"]="Д" t["%D0%95"]="Е" t["%D0%81"]="Ё" t["%D0%96"]="Ж" t["%D0%97"]="З" t["%D0%98"]="И" t["%D0%99"]="Й"
t["%D0%9A"]="К" t["%D0%9B"]="Л" t["%D0%9C"]="М" t["%D0%9D"]="Н" t["%D0%9E"]="О" t["%D0%9F"]="П" t["%D0%A0"]="Р" t["%D0%A1"]="С" t["%D0%A2"]="Т" t["%D0%A3"]="У" t["%D0%A4"]="Ф"
t["%D0%A5"]="Х" t["%D0%A6"]="Ц" t["%D0%A7"]="Ч" t["%D0%A8"]="Ш" t["%D0%A9"]="Щ" t["%D0%AA"]="Ъ" t["%D0%AB"]="Ы" t["%D0%AC"]="Ь" t["%D0%AD"]="Э" t["%D0%AE"]="Ю" t["%D0%AF"]="Я"
t["%D0%B0"]="а" t["%D0%B1"]="б" t["%D0%B2"]="в" t["%D0%B3"]="г" t["%D0%B4"]="д" t["%D0%B5"]="е" t["%D1%91"]="ё" t["%D0%B6"]="ж" t["%D0%B7"]="з" t["%D0%B8"]="и" t["%D0%B9"]="й"
t["%D0%BA"]="к" t["%D0%BB"]="л" t["%D0%BC"]="м" t["%D0%BD"]="н" t["%D0%BE"]="о" t["%D0%BF"]="п" t["%D1%80"]="р" t["%D1%81"]="с" t["%D1%82"]="т" t["%D1%83"]="у" t["%D1%84"]="ф"
t["%D1%85"]="х" t["%D1%86"]="ц" t["%D1%87"]="ч" t["%D1%88"]="ш" t["%D1%89"]="щ" t["%D1%8A"]="ъ" t["%D1%8B"]="ы" t["%D1%8C"]="ь" t["%D1%8D"]="э" t["%D1%8E"]="ю" t["%D1%8F"]="я"

for v in pairs(t) do   -- добавление ключей в таблицу, если был "%D0%9A", то добавляется "%d0%9a"
    t[v:lower()]=t[v]
end

for i=32, 127 do t["%" .. string.format("%X", i)]=string.char(i) end   -- добавление ключей в таблицу, все символы ascii с 32 по 127


s=s:gsub("%%[Dd][01]%%%x%x", t)   -- замена кириллицы
s=s:gsub("%%..", t)               -- замена спецсимволов
log(s)                            -- результат
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 28.1.2019, 14:39
Сообщение #23


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1316
Пользователь №: 18.346
Возраст: 25



А можно ли скриптом сделать зеркальный текст? Что бы он отображался задом наперед? (IMG:style_emoticons/default/wink.gif)
Например:
Цитата
Не только Леонардо да Винчи пишет задом наперед! >>> !дерепан модаз тешип ичниВ ад одраноеЛ окьлот еН
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 28.1.2019, 15:27
Сообщение #24


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26691
Пользователь №: 16.971
Возраст: 29



Цитата
А можно ли скриптом сделать зеркальный текст?

Код
--lua
log "clear"  log "mode compact"
local s="Не только Леонардо да Винчи пишет задом наперед!"
log (s:reverse())

http://uopilot.tati.pro/index.php?title=Сп....BE.D0.BA.D0.B8
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 28.1.2019, 16:09
Сообщение #25


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1316
Пользователь №: 18.346
Возраст: 25



Возник вопрос решил допилить генератор морзянки...
Код

--lua
--log "clear"   log "mode compact"

--local s="Текст-Text-123!"   -- Текс который хотим зашифровать в морзянку, вставить между ""
--log(s)
local file= io.open([[C:\123.txt]], "r")          -- файл с текстом
local result_file = io.open([[C:\456.txt]], "w")  -- куда сохранить результат
local t={}
t["1"]=".----"  t["2"]="..---"  t["3"]="...--"  t["4"]="....-"  t["5"]="....."  t["6"]="-...."  t["7"]="--..."
t["8"]="---.."  t["9"]="----."  t["0"]="-----"  t["."]="......" t[":"]="---..." t[";"]="-.-.-." t["("]="-.--.-"
t[")"]="-.--.-" t["'"]=".----." t['"']=".-..-." t["-"]="-....-" t["/"]="-..-."  t["?"]="..--.." t["!"]="--..--"
t[","]=".-.-.-" t["A"]=".-"     t["B"]="-..."   t["C"]="-.-."   t["D"]="-.."    t["E"]="."      t["F"]="..-."
t["G"]="--."    t["H"]="...."   t["I"]=".."     t["J"]=".---"   t["K"]="-.-"    t["L"]=".-.."   t["M"]="--"
t["N"]="-."     t["O"]="---"    t["P"]=".--."   t["Q"]="--.-"   t["R"]=".-."    t["S"]="..."    t["T"]="-"
t["U"]="..-"    t["V"]="...-"   t["W"]=".--"    t["X"]="-..-"   t["Y"]="-.--"   t["Z"]="--.."   t["А"]=".-"
t["Б"]="-..."   t["В"]=".--"    t["Г"]="--."    t["Д"]="-.."    t["Е"]="."      t["Ё"]="."      t["Ж"]="...-"
t["З"]="--.."   t["И"]=".."     t["Й"]=".---"   t["К"]="-.-"    t["Л"]=".-.."   t["М"]="--"     t["Н"]="-."
t["О"]="---"    t["П"]=".--."   t["Р"]=".-."    t["С"]="..."    t["Т"]="-"      t["У"]="..-"    t["Ф"]="..-."
t["Х"]="...."   t["Ц"]="-.-."   t["Ч"]="---."   t["Ш"]="----"   t["Щ"]="--.-"   t["Ь"]="-..-"   t["Ъ"]="-..-"
t["Ы"]="-.--"   t["Э"]="..-.."  t["Ю"]="..--"   t["Я"]=".-.-"
for v in pairs(t) do   -- добавление ключей в таблицу, если был "%Т", то добавляется "%т"
    t[v:lower()]=t[v]
end

if file and result_file then     -- если файлы открылись
    for v in file:lines() do
        result_file:write(string.gsub(v, ".", t).."\r\n")  -- поиск и замена текста из таблицы 't'
    end

    file:close()
    result_file:close()
else
    log ("Файлы отсутствуют или недоступны для чтения/записи")
end

--log(s)                            -- результат

Что я посылал:
Цитата
Всем привет faer

И что получил
Цитата
.--сем привет ..-..-..-.

Получается что для латинских букв создался нижний регистр, а для кириллицы нет, в чом загвоздка? (IMG:style_emoticons/default/huh.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 28.1.2019, 16:20
Сообщение #26


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26691
Пользователь №: 16.971
Возраст: 29



Цитата
v:lower()

Работает только с латиницей.
Используйте:
Код
string_lower(v)
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 28.1.2019, 17:00
Сообщение #27


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1316
Пользователь №: 18.346
Возраст: 25



Цитата(cirus @ 28.1.2019, 16:20) *

Работает только с латиницей.
Используйте:
Код
string_lower(v)


Код

--lua
log "clear"   log "mode compact"
local text = clipboard ()      -- получить из буфера обмена текст в переменную text
log (text)                     -- отобразить в логе значение переменной text
wait (300)                 -- пауза 300 мсек
local arr = clipboard (0, "string", "word") -- получить из буфера обмена текст в массив с разбивкой по строкам словам
log()
local t={}
t["1"]=".----"  t["2"]="..---"  t["3"]="...--"  t["4"]="....-"  t["5"]="....."  t["6"]="-...."  t["7"]="--..."
t["8"]="---.."  t["9"]="----."  t["0"]="-----"  t["."]="......" t[":"]="---..." t[";"]="-.-.-." t["("]="-.--.-"
t[")"]="-.--.-" t["'"]=".----." t['"']=".-..-." t["-"]="-....-" t["/"]="-..-."  t["?"]="..--.." t["!"]="--..--"
t[","]=".-.-.-" t["A"]=".-"     t["B"]="-..."   t["C"]="-.-."   t["D"]="-.."    t["E"]="."      t["F"]="..-."
t["G"]="--."    t["H"]="...."   t["I"]=".."     t["J"]=".---"   t["K"]="-.-"    t["L"]=".-.."   t["M"]="--"
t["N"]="-."     t["O"]="---"    t["P"]=".--."   t["Q"]="--.-"   t["R"]=".-."    t["S"]="..."    t["T"]="-"
t["U"]="..-"    t["V"]="...-"   t["W"]=".--"    t["X"]="-..-"   t["Y"]="-.--"   t["Z"]="--.."   t["А"]=".-"
t["Б"]="-..."   t["В"]=".--"    t["Г"]="--."    t["Д"]="-.."    t["Е"]="."      t["Ё"]="."      t["Ж"]="...-"
t["З"]="--.."   t["И"]=".."     t["Й"]=".---"   t["К"]="-.-"    t["Л"]=".-.."   t["М"]="--"     t["Н"]="-."
t["О"]="---"    t["П"]=".--."   t["Р"]=".-."    t["С"]="..."    t["Т"]="-"      t["У"]="..-"    t["Ф"]="..-."
t["Х"]="...."   t["Ц"]="-.-."   t["Ч"]="---."   t["Ш"]="----"   t["Щ"]="--.-"   t["Ь"]="-..-"   t["Ъ"]="-..-"
t["Ы"]="-.--"   t["Э"]="..-.."  t["Ю"]="..--"   t["Я"]=".-.-"
for v in pairs(t) do   -- добавление ключей в таблицу, если был "%Т", то добавляется "%т"
    t[string_lower(v)]=t[v]
end
--if --если в буфере есть текст
    for v in file:lines() do
        s=s:write(string.gsub(v, ".", t).."\r\n")  -- поиск и замена текста из таблицы 't'
    end
log(s)                            -- результат отобразить в логе
clipboard (???)                   -- результат записать в буфер

Исправил... но решил немного модернизировать скрипт...ну что бы текст брался из буфера затем записывался в лог, далее обробатывался результат выдавался в лог и записывался в буфер...но чо то столкнулся с трудностями lua не понятно куда и какие запихивать переменные...караааул
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 28.1.2019, 17:11
Сообщение #28


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26691
Пользователь №: 16.971
Возраст: 29



Код
--lua
log "clear"   log "mode compact"
local text = clipboard ()      -- получить из буфера обмена текст в переменную text

wait (300)                     -- пауза 300 мсек
log (text)                     -- отобразить в логе значение переменной text
log()
local t={}
t["1"]=".----"  t["2"]="..---"  t["3"]="...--"  t["4"]="....-"  t["5"]="....."  t["6"]="-...."  t["7"]="--..."
t["8"]="---.."  t["9"]="----."  t["0"]="-----"  t["."]="......" t[":"]="---..." t[";"]="-.-.-." t["("]="-.--.-"
t[")"]="-.--.-" t["'"]=".----." t['"']=".-..-." t["-"]="-....-" t["/"]="-..-."  t["?"]="..--.." t["!"]="--..--"
t[","]=".-.-.-" t["A"]=".-"     t["B"]="-..."   t["C"]="-.-."   t["D"]="-.."    t["E"]="."      t["F"]="..-."
t["G"]="--."    t["H"]="...."   t["I"]=".."     t["J"]=".---"   t["K"]="-.-"    t["L"]=".-.."   t["M"]="--"
t["N"]="-."     t["O"]="---"    t["P"]=".--."   t["Q"]="--.-"   t["R"]=".-."    t["S"]="..."    t["T"]="-"
t["U"]="..-"    t["V"]="...-"   t["W"]=".--"    t["X"]="-..-"   t["Y"]="-.--"   t["Z"]="--.."   t["А"]=".-"
t["Б"]="-..."   t["В"]=".--"    t["Г"]="--."    t["Д"]="-.."    t["Е"]="."      t["Ё"]="."      t["Ж"]="...-"
t["З"]="--.."   t["И"]=".."     t["Й"]=".---"   t["К"]="-.-"    t["Л"]=".-.."   t["М"]="--"     t["Н"]="-."
t["О"]="---"    t["П"]=".--."   t["Р"]=".-."    t["С"]="..."    t["Т"]="-"      t["У"]="..-"    t["Ф"]="..-."
t["Х"]="...."   t["Ц"]="-.-."   t["Ч"]="---."   t["Ш"]="----"   t["Щ"]="--.-"   t["Ь"]="-..-"   t["Ъ"]="-..-"
t["Ы"]="-.--"   t["Э"]="..-.."  t["Ю"]="..--"   t["Я"]=".-.-"
for v in pairs(t) do   -- добавление ключей в таблицу, если был "%Т", то добавляется "%т"
    t[string_lower(v)]=t[v]
end

local s=text:gsub(".", t)
log(s)                          -- результат отобразить в логе
clipboard (s)                   -- результат записать в буфер
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 28.1.2019, 20:51
Сообщение #29


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1316
Пользователь №: 18.346
Возраст: 25



Ну да так и получается что многие серверы хитрят с кодировкой и расшифровкой морзянки...они дописывают либо спец символы или пробелы.
Вот можно сделать по аналогии как изменится код если к примеру в генерации в конце приписывать пробел.
имеем t["1"]=".----"
Код
local s=text:gsub(".", t) --нужно добавить пробел в конец

нужно получить ".---- " в итоге символы будут разделены одним пробелом, а слова двойным, что позволяет декодировать символы в текст. Тода для дешифровки нужно переделать маску(где записывали в бинарном виде)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 28.1.2019, 21:18
Сообщение #30


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26691
Пользователь №: 16.971
Возраст: 29



Код
for v in pairs(t) do   -- добавление ключей в таблицу, если был "Т", то добавляется "т"

А толку с этого? При дешифровке регистр не важен? В таблице будет 2 ключа:
Код
t["Т"]="-"
t["т"]="-"

Т. е. при дешифровке символа '-' получим 'T' или 'т'. Причем, предсказать какую именной из этих букв получим нельзя, порядок ключей в таблице не определён.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 28.1.2019, 21:29
Сообщение #31


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1316
Пользователь №: 18.346
Возраст: 25



Цитата(cirus @ 28.1.2019, 21:18) *

Код
for v in pairs(t) do   -- добавление ключей в таблицу, если был "Т", то добавляется "т"

А толку с этого? При дешифровке регистр не важен? В таблице будет 2 ключа:
Код
t["Т"]="-"
t["т"]="-"

Т. е. при дешифровке символа '-' получим 'T' или 'т'. Причем, предсказать какую именной из этих букв получим нельзя, порядок ключей в таблице не определён.

при дешифровке да он лишний, можно писать заглавной. А вот при генерации это важно так как мы не знаем как пользователь напишет. Если решит написать Т то такой код есть и его обработает, а если напишет "т" тогда ключа для генерации не будет, поэтому мелкий регистр это нужная страховка(запасной путь). Если замутить и генирацию и дешифровку в одном скрипте тогда нужны два регистра, а если делать отдельные скрипты для генерации один(ключи нужны) для дешифровки(то не нужны) другой.
Так же придется делать отдельный(?) скрипт для дешифровки латиницы и кириллицы так как многие символы совпадают, это должен пользователь выбирать в какой язык переводить. Ну или приделать деление что бы в процессе декодирования пользователь мог сам поставить галку, но не знаю так наверное замутить нельзя
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 28.1.2019, 21:50
Сообщение #32


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26691
Пользователь №: 16.971
Возраст: 29



Цитата
Так же придется делать отдельный(?) скрипт для дешифровки латиницы и кириллицы

Либо делать 2 таблицы. Одна для кириллицы, другая для латиницы. Но опять же будет проблема если в тексте будет разный язык.
Либо делать 1 таблицу, в которой все символы будут отличаться.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 28.1.2019, 22:04
Сообщение #33


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1316
Пользователь №: 18.346
Возраст: 25



Цитата(cirus @ 28.1.2019, 21:50) *

Либо делать 2 таблицы. Одна для кириллицы, другая для латиницы. Но опять же будет проблема если в тексте будет разный язык.
Либо делать 1 таблицу, в которой все символы будут отличаться.

Лучше сделать два скрипта, отдельно для латиницы:
Код

t["1"]=".----"  t["2"]="..---"  t["3"]="...--"  t["4"]="....-"  t["5"]="....."  t["6"]="-...."  t["7"]="--..."
t["8"]="---.."  t["9"]="----."  t["0"]="-----"  t["."]="......" t[":"]="---..." t[";"]="-.-.-." t["("]="-.--.-"
t[")"]="-.--.-" t["'"]=".----." t['"']=".-..-." t["-"]="-....-" t["/"]="-..-."  t["?"]="..--.." t["!"]="--..--"
t[","]=".-.-.-" t["A"]=".-"     t["B"]="-..."   t["C"]="-.-."   t["D"]="-.."    t["E"]="."      t["F"]="..-."
t["G"]="--."    t["H"]="...."   t["I"]=".."     t["J"]=".---"   t["K"]="-.-"    t["L"]=".-.."   t["M"]="--"
t["N"]="-."     t["O"]="---"    t["P"]=".--."   t["Q"]="--.-"   t["R"]=".-."    t["S"]="..."    t["T"]="-"
t["U"]="..-"    t["V"]="...-"   t["W"]=".--"    t["X"]="-..-"   t["Y"]="-.--"   t["Z"]="--.."

и кириллицы:
Код

t["1"]=".----"  t["2"]="..---"  t["3"]="...--"  t["4"]="....-"  t["5"]="....."  t["6"]="-...."  t["7"]="--..."
t["8"]="---.."  t["9"]="----."  t["0"]="-----"  t["."]="......" t[":"]="---..." t[";"]="-.-.-." t["("]="-.--.-"
t[")"]="-.--.-" t["'"]=".----." t['"']=".-..-." t["-"]="-....-" t["/"]="-..-."  t["?"]="..--.." t["!"]="--..--"
t[","]=".-.-.-" t["А"]=".-"     t["Б"]="-..."   t["В"]=".--"    t["Г"]="--."    t["Д"]="-.."    t["Е"]="."
t["Ё"]="."      t["Ж"]="...-"   t["З"]="--.."   t["И"]=".."     t["Й"]=".---"   t["К"]="-.-"    t["Л"]=".-.."
t["М"]="--"     t["Н"]="-."     t["О"]="---"    t["П"]=".--."   t["Р"]=".-."    t["С"]="..."    t["Т"]="-"
t["У"]="..-"    t["Ф"]="..-."   t["Х"]="...."   t["Ц"]="-.-."   t["Ч"]="---."   t["Ш"]="----"   t["Щ"]="--.-"
t["Ь"]="-..-"   t["Ъ"]="-..-"   t["Ы"]="-.--"   t["Э"]="..-.."  t["Ю"]="..--"   t["Я"]=".-.-"

так же к примеру некоторые символы кодируются одинаково, это ( ) Е Ё Ь Ъ и для них не важно также при декодировании какой будет результат(допустим первый попавшийся символ из таблицы), не критично что в слове к примеру будет е или ё, или две скобки (текст(
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 28.1.2019, 22:39
Сообщение #34


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26691
Пользователь №: 16.971
Возраст: 29



Цитата
в итоге символы будут разделены одним пробелом, а слова двойным

А пробел как при этом кодируется? Как отличать пробел от разделителя.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 28.1.2019, 23:01
Сообщение #35


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1316
Пользователь №: 18.346
Возраст: 25



Цитата(cirus @ 28.1.2019, 22:39) *

А пробел как при этом кодируется? Как отличать пробел от разделителя.

нет, мы будем использовать как символ деления символов и слов. для наглядности пробел заменим " " на "\"
Изначально строка выглядит так: как\дела
получается мы в конце буквы при генерации кода дописываем local s=text:gsub(".", t) + \ --дописываем маской
в результате что у нас было t["К"]="-.-" примет такой вид "-.-\"
и в итоге пилот код сгенерирует такой:
Код

-.-\.-\-.-\\-..\.\.-..\.-\
к   а  к    д  е  л    а
➀  ➁ ➀ \ ➂ ➃  ➄   ➁

Для пилота нет разницы пробел там стоит или \ он и то и то видит как символ, а если нет такого ключа то он будет читать до первого \, а второй пропускает, что не нарушает структуру слов (IMG:style_emoticons/default/cool.gif)
Для большей наглядности привиду пример где мы делали url декодер
если в пример записать % о он никак не мешает декодировать
декодируемый текст:%%D0%B1%%D0%BE%%D0%B6%%D1%8D%%D0%BD%%D1%8C%%D0%BA%%D0%B0
результат:%б%о%ж%э%н%ь%к%а
то бишь слова(буквы) разделены
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 29.1.2019, 0:50
Сообщение #36


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26691
Пользователь №: 16.971
Возраст: 29



Код
--lua
log "clear"  log "mode compact"

local text=[[-.-\.-\-.-\\\-..\.\.-..\.-\]]     -- "Как дела"
--local text="Как дела"     --  [[-.-\.-\-.-\\\-..\.\.-..\.-\]]
log(text)

local t, t1, temp = {}, {}, {}
t["А"]=".-"     t["Б"]="-..."   t["В"]=".--"    t["Г"]="--."    t["Д"]="-.."    t["Е"]="."    t["Ё"]="."
t["Ж"]="...-"   t["З"]="--.."   t["И"]=".."     t["Й"]=".---"   t["К"]="-.-"    t["Л"]=".-.."   t["М"]="--"
t["Н"]="-."     t["О"]="---"    t["П"]=".--."   t["Р"]=".-."    t["С"]="..."    t["Т"]="-"   t["У"]="..-"
t["Ф"]="..-."   t["Х"]="...."   t["Ц"]="-.-."   t["Ч"]="---."   t["Ш"]="----"   t["Щ"]="--.-"   t["Ь"]="-..-"
t["Ъ"]="-..-"   t["Ы"]="-.--"   t["Э"]="..-.."  t["Ю"]="..--"   t["Я"]=".-.-"
for v in pairs(t) do temp[string_lower(v)]=t[v] end
for v in pairs(temp) do t[v]=temp[v] end
t["1"]=".----"  t["2"]="..---"  t["3"]="...--"  t["4"]="....-"  t["5"]="....."  t["6"]="-...."  t["7"]="--..."
t["8"]="---.."  t["9"]="----."  t["0"]="-----"  t["."]="......" t[":"]="---..." t[";"]="-.-.-." t["("]="-.--.-"
t[")"]="-.--.-" t["'"]=".----." t['"']=".-..-." t["-"]="-....-" t["/"]="-..-."  t["?"]="..--.." t["!"]="--..--"
t[","]=".-.-.-"
for v in pairs(t) do t1[t[v]]=v end   -- таблица для дешифровки, копия 't' только ключи и значения ключей поменяны местами

local x=0
for v in text:gmatch("[%.%-%\\]") do x=x+1 end  -- подсчёт точек, тире и слешей в строке

if x > #text*50/100 then   -- если их больше 50%, считаем что передана шифрованная строка
    text=string.gsub(text:gsub("(.-)\\", t1), "\\\\", " ")    -- дешифруем
else
    text=string.gsub(string.gsub(text:gsub("([^ ])", "%1\\"), "%s", "\\\\"), "[^\\]", t)   -- иначе шифруем
end
log (text)
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 29.1.2019, 1:18
Сообщение #37


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1316
Пользователь №: 18.346
Возраст: 25



Цитата(cirus @ 29.1.2019, 0:50) *

Код
--lua
log "clear"  log "mode compact"

local text=[[-.-\.-\-.-\\\-..\.\.-..\.-\]]     -- "Как дела"
--local text="Как дела"     --  [[-.-\.-\-.-\\\-..\.\.-..\.-\]]
log(text)

local t, t1, temp = {}, {}, {}
t["А"]=".-"     t["Б"]="-..."   t["В"]=".--"    t["Г"]="--."    t["Д"]="-.."    t["Е"]="."    t["Ё"]="."
t["Ж"]="...-"   t["З"]="--.."   t["И"]=".."     t["Й"]=".---"   t["К"]="-.-"    t["Л"]=".-.."   t["М"]="--"
t["Н"]="-."     t["О"]="---"    t["П"]=".--."   t["Р"]=".-."    t["С"]="..."    t["Т"]="-"   t["У"]="..-"
t["Ф"]="..-."   t["Х"]="...."   t["Ц"]="-.-."   t["Ч"]="---."   t["Ш"]="----"   t["Щ"]="--.-"   t["Ь"]="-..-"
t["Ъ"]="-..-"   t["Ы"]="-.--"   t["Э"]="..-.."  t["Ю"]="..--"   t["Я"]=".-.-"
for v in pairs(t) do temp[string_lower(v)]=t[v] end
for v in pairs(temp) do t[v]=temp[v] end
t["1"]=".----"  t["2"]="..---"  t["3"]="...--"  t["4"]="....-"  t["5"]="....."  t["6"]="-...."  t["7"]="--..."
t["8"]="---.."  t["9"]="----."  t["0"]="-----"  t["."]="......" t[":"]="---..." t[";"]="-.-.-." t["("]="-.--.-"
t[")"]="-.--.-" t["'"]=".----." t['"']=".-..-." t["-"]="-....-" t["/"]="-..-."  t["?"]="..--.." t["!"]="--..--"
t[","]=".-.-.-"
for v in pairs(t) do t1[t[v]]=v end   -- таблица для дешифровки, копия 't' только ключи и значения ключей поменяны местами

local x=0
for v in text:gmatch("[%.%-%\\]") do x=x+1 end  -- подсчёт точек, тире и слешей в строке

if x > #text*50/100 then   -- если их больше 50%, считаем что передана шифрованная строка
    text=string.gsub(text:gsub("(.-)\\", t1), "\\\\", " ")    -- дешифруем
else
    text=string.gsub(string.gsub(text:gsub("([^ ])", "%1\\"), "%s", "\\\\"), "[^\\]", t)   -- иначе шифруем
end
log (text)


а в lua нет set delimiter ' ' ?
Код

for i, word in pairs(split(text, "<(.-)>")) do
    print(word)
end

function split(string, delimiter) -- Got this function from [url=https://helloacm.com/split-a-string-in-lua/]https://helloacm.com/split-a-string-in-lua/[/url]
    result = {};

    for match in (string..delimiter):gmatch("(.-)"..delimiter) do
        table.insert(result, match);
    end

    return result;
end


This code replaces the parts in the format "<(.-)>"

Example:
Input: "Hello<a>World</a>!"

Expected Output: {"Hello", "<a>", "World", "</a>", "!"}

Real Output: {"Hello", "World", "!"}
Код


s = "Hello<a>World</a>!"
for a in s:gsub('%b<>','\0%0\0'):gmatch'%Z+' do
  print(a)
end
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 29.1.2019, 1:43
Сообщение #38


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26691
Пользователь №: 16.971
Возраст: 29



Цитата
а в lua нет set delimiter ' ' ?

Нет. А для чего нужен?
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 29.1.2019, 1:46
Сообщение #39


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1316
Пользователь №: 18.346
Возраст: 25



Цитата(cirus @ 29.1.2019, 1:43) *

Нет. А для чего нужен?

для разделения вместо крывуль (IMG:style_emoticons/default/sad.gif)
а во чо-то похожее нашел... записывает в с столбик и через пробел
Код

--lua
function split(s, sep)
    local fields = {}

    local sep = sep or " "
    local pattern = string.format("([^%s]+)", sep)
    string.gsub(s, pattern, function(c) fields[#fields + 1] = c end)

    return fields
end

t = split("a,b,c,d,e,f,g",",")
for i,j in pairs(t) do
    log(i,j)
end

Код

--lua
local arr = {"Один", "Два", "Три", "Четыре"}
log (table.concat(arr, " "))    -- разделитель пробел

http://uopilot.tati.pro/index.php?title=Table.concat_(Lua)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 29.1.2019, 3:02
Сообщение #40


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26691
Пользователь №: 16.971
Возраст: 29



То строку разделяете на элементы, то массив выводите. Это не одно и тоже.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

4 страниц V < 1 2 3 4 >
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 18.4.2024, 4:46
Designed by Nickostyle