PDA

Показать полную графическую версию : [решено] Необходимо удалить повторяющеися символы в двух вводимых словах


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

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

@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
Как-то так, если правильно понял в ПМ:

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




© OSzone.net 2001-2012