Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Необходимо удалить повторяющеися символы в двух вводимых словах (http://forum.oszone.net/showthread.php?t=312943)

Ilua0256 21-03-2016 13:27 2618250

Необходимо удалить повторяющеися символы в двух вводимых словах
 
Хочу сделать такое: скрипт просит вас ввести слово.
Затем он просит ввести другое слово и после этого ищет повторяющеися буквы в словах и, если пара была найдена, то он удаляет эти буквы в обоих словах. И так до тех пор, пока второе слово полностью не исчезнет.
Мне это нужно для написания дешифратора, путем которого делается что то вроде этого: есть слово пнкаоуонкраркнлаимаь мы вводим его а затем вводим ключ, который представляет собой нкуонкракнаимаь,
после этого он удаляет повторяющиеся символы (а это не обязательно буквы, цифры тоже) и на выходе выдает первое слово уже без "размешивания" в фразе: пароль.

Foreigner 21-03-2016 14:03 2618261

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

@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 22-03-2016 00:30 2618460

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

@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.



Время: 14:44.

Время: 14:44.
© OSzone.net 2001-