CMD/BAT - [решено] Необходимо удалить повторяющеися символы в двух вводимых словах

Ответить
Аватара пользователя
Ilua0256

CMD/BAT - [решено] Необходимо удалить повторяющеися символы в двух вводимых словах

Сообщение Ilua0256 »

Хочу сделать такое: скрипт просит вас ввести слово.

Затем он просит ввести другое слово и после этого ищет повторяющеися буквы в словах и, если пара была найдена, то он удаляет эти буквы в обоих словах. И так до тех пор, пока второе слово полностью не исчезнет.

Мне это нужно для написания дешифратора, путем которого делается что то вроде этого: есть слово пнкаоуонкраркнлаимаь мы вводим его а затем вводим ключ, который представляет собой нкуонкракнаимаь,

после этого он удаляет повторяющиеся символы (а это не обязательно буквы, цифры тоже) и на выходе выдает первое слово уже без "размешивания" в фразе: пароль.
Аватара пользователя
Foreigner

Re: CMD/BAT - [решено] Необходимо удалить повторяющеися символы в двух вводимых словах

Сообщение Foreigner »

Что значит "повторяющиеся символы"? Если из "слова" удалять символы, которые есть в "ключе", то на выходе получим "пл", а не "пароль"



Код:

Код: Выделить всё

@echo off
setlocal enabledelayedexpansion
set "word=пнкаоуонкраркнлаимаь"
set "key=нкуонкракнаимаь"
set "n=0"
:0
set "l=!key:~%n%,1!"
set "word=!word:%l%=!"
set /a n+=1
if "!key:~%n%,1!"=="" goto:break
goto:0
:break
echo %word%
Аватара пользователя
Foreigner

Re: CMD/BAT - [решено] Необходимо удалить повторяющеися символы в двух вводимых словах

Сообщение Foreigner »

Как-то так, если правильно понял в ПМ:



Код:

Код: Выделить всё

@echo off
setlocal enabledelayedexpansion
set "word=пнакрвоулеь"
set "keyw=нквеу"
set "cnt1=99"
set "n=0"
:0
if not "!word:~%n%,1!"=="" (
    set /a cnt1+=1
    set "word_!cnt1!=!word:~%n%,1!"
    set /a n+=1
    goto:0
)
set "cnt2=99"
set "n=0"
:1
if not "!keyw:~%n%,1!"=="" (
    set /a cnt2+=1
    set "keyw_!cnt2!=!keyw:~%n%,1!"
    set /a n+=1
    goto:1
)
:2
for /l %%i in (100,1,%cnt2%) do (
    for /l %%j in (100,1,%cnt1%) do (
        if defined keyw_%%i (
            if "!keyw_%%i!"=="!word_%%j!" (
                set "keyw_%%i="
                set "word_%%j="
                goto:2
))))
for /f "tokens=2 delims==" %%i in ('set word_') do 0>nul set /p="%%i"
echo.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»