Что нового

Нужна помощь в упрощении кода программы

Detka.i.alex

Новичок
Сообщения
12
Репутация
0
Добрый день.
Есть написаный мною код. Хотелось его упростить как нибудь.
Описание: скрипт берёт массив файлов из папки и разбивает его в двухмерный массив по символьно после я пытаюсь распозновать буквы и записывать данные в другой массив после чего я собераю все буквы в названия файлов и в конце концов переименовываю.
Во общем смотрите сами
Код:
#Include <File.au3>
#Include <Array.au3>

$dir="D:\Фильмы\"
$F=_FileListToArray($dir)
$n=$F[0]+1
Dim $posim[$n][250]
Dim $ruposim[$n][250]
Dim $rufilms[$n]
$k=1
$i=1
$j=1
While $i <= $F[0]
	$split=StringSplit($F[$i],"")
	$posim[$i][0]=$F[$i]
	While $j <= StringLen($F[$i])
		
		$posim[$i][$j]=$split[$j]
	$j =$j+1
	WEnd
	$j=1
    $i = $i + 1
WEnd
$i=1
$j=1
While $i<=$F[0]
	While $j<=StringLen($F[$i]) 
		Select
			Case $posim[$i][$j]="a"
				$ruposim[$i][$k]="а"
				$k=$k+1
			Case $posim[$i][$j]="b"
				$ruposim[$i][$k]="б"
				$k=$k+1
			Case $posim[$i][$j]="v"
				$ruposim[$i][$k]="в"
				$k=$k+1
			Case $posim[$i][$j]="g"
				$ruposim[$i][$k]="г"
				$k=$k+1
			Case $posim[$i][$j]="d"
				$ruposim[$i][$k]="д"
				$k=$k+1
			Case $posim[$i][$j]="e"
				$ruposim[$i][$k]="е"
				$k=$k+1
			Case $posim[$i][$j]="z"
				if $posim[$i][$j]="z" and $posim[$i][$j+1]="h" Then 				
					$ruposim[$i][$k]="ж"
					$posim[$i][$j+1]=""
					$k=$k+1
				Else
					$ruposim[$i][$k]="з"
					$k=$k+1
				EndIf
			Case $posim[$i][$j]="i"
				$ruposim[$i][$k]="и"
				$k=$k+1
			Case $posim[$i][$j]="k"
				if $posim[$i][$j]="k" and $posim[$i][$j+1]="a" and $posim[$i][$j+2]="z" and $posim[$i][$j+3]="t" and $posim[$i][$j+4]="o" and $posim[$i][$j+5]="r" and $posim[$i][$j+6]="k" and $posim[$i][$j+7]="a" Then
					$ruposim[$i][$k]=""
					$posim[$i][$j]=""
					$posim[$i][$j+1]=""
					$posim[$i][$j+2]=""
					$posim[$i][$j+3]=""
					$posim[$i][$j+4]=""
					$posim[$i][$j+5]=""
					$posim[$i][$j+6]=""
					$posim[$i][$j+7]=""
					$k=$k+1
				Else
					$ruposim[$i][$k]="к"
					$k=$k+1
				EndIf
			Case $posim[$i][$j]="l"
				$ruposim[$i][$k]="л"
				$k=$k+1
			Case $posim[$i][$j]="m"
				$ruposim[$i][$k]="м"
				$k=$k+1
			Case $posim[$i][$j]="n"
				$ruposim[$i][$k]="н"
				$k=$k+1
			Case $posim[$i][$j]="o"
				$ruposim[$i][$k]="о"
				$k=$k+1	
			Case $posim[$i][$j]="p"
				$ruposim[$i][$k]="п"
				$k=$k+1
			Case $posim[$i][$j]="r"
				$ruposim[$i][$k]="р"
				$k=$k+1
			Case $posim[$i][$j]="s"
				if $posim[$i][$j]="s" and $posim[$i][$j+1]="c" and $posim[$i][$j+2]="h" Then 				
					$ruposim[$i][$k]="ш"
					$posim[$i][$j+1]=""
					$posim[$i][$j+2]=""
					$k=$k+1
				ElseIf $posim[$i][$j]="s" and $posim[$i][$j+1]="h" Then 				
					$ruposim[$i][$k]="ш"
					$posim[$i][$j+1]=""
					$k=$k+1
				Else
					$ruposim[$i][$k]="c"
					$k=$k+1
				EndIf
			Case $posim[$i][$j]="t"
				iF $posim[$i][$j]="t" and $posim[$i][$j+1]="z" Then
					$ruposim[$i][$k]="ц"
					$posim[$i][$j+1]=""
					$k=$k+1
				Else
					$ruposim[$i][$k]="т"
					$k=$k+1
				EndIf
			Case $posim[$i][$j]="u" Or $posim[$i][$j]="y"
				if $posim[$i][$j]="y" and $posim[$i][$j+1]="u" Then 				
					$ruposim[$i][$k]="ю"
					$posim[$i][$j+1]=""
					$k=$k+1
				ElseIf $posim[$i][$j]="y" and $posim[$i][$j+1]="a" Then 				
					$ruposim[$i][$k]="я"
					$posim[$i][$j+1]=""
					$k=$k+1
				ElseIf $posim[$i][$j]="y" and $posim[$i][$j+1]="j" Then 
					$ruposim[$i][$k]="ы"
					$k=$k+1					
					$ruposim[$i][$k]="й"
					$posim[$i][$j+1]=""
					$k=$k+1
				Else
					$ruposim[$i][$k]="у"
					$k=$k+1
				EndIf
			Case $posim[$i][$j]="f"
				$ruposim[$i][$k]="ф"
				$k=$k+1
			Case $posim[$i][$j]="h"
				$ruposim[$i][$k]="х"
				$k=$k+1
			Case $posim[$i][$j]="w"
				$ruposim[$i][$k]="ш"
				$k=$k+1
			Case $posim[$i][$j]="'"
				$ruposim[$i][$k]="ь"
				$k=$k+1
			Case $posim[$i][$j]="."
				If $posim[$i][$j]="." And $posim[$i][$j+1]="e" And $posim[$i][$j+2]="l" And $posim[$i][$j+3]="e" And $posim[$i][$j+4]="k" And $posim[$i][$j+5]="t" And $posim[$i][$j+6]="r" And $posim[$i][$j+7]="i" And $posim[$i][$j+8]="4" And $posim[$i][$j+9]="k"  And $posim[$i][$j+10]="a" Then
					$ruposim[$i][$k]=""
					$posim[$i][$j]=""
					$posim[$i][$j+1]=""
					$posim[$i][$j+2]=""
					$posim[$i][$j+3]=""
					$posim[$i][$j+4]=""
					$posim[$i][$j+5]=""
					$posim[$i][$j+6]=""
					$posim[$i][$j+7]=""
					$posim[$i][$j+8]=""
					$posim[$i][$j+9]=""
					$posim[$i][$j+10]=""
					$k=$k+1
				ElseIf $posim[$i][$j]="." And $posim[$i][$j+1]="k" And $posim[$i][$j+2]="z" Then
					$ruposim[$i][$k]=""
					$posim[$i][$j]=""
					$posim[$i][$j+1]=""
					$posim[$i][$j+2]=""
					$k=$k+1
				ElseIf $posim[$i][$j]="." And $posim[$i][$j+1]="l" And $posim[$i][$j+2]="2" And $posim[$i][$j+3]="." Then
					$ruposim[$i][$k]=""
					$posim[$i][$j]=""
					$posim[$i][$j+1]=""
					$posim[$i][$j+2]=""
					$k=$k+1
				ElseIf $posim[$i][$j]="." And $posim[$i][$j+1]="l" And $posim[$i][$j+2]="." Then
					$ruposim[$i][$k]=""
					$posim[$i][$j]=""
					$posim[$i][$j+1]=""
					$k=$k+1
				ElseIf $posim[$i][$j]="." And $posim[$i][$j+1]="p" And $posim[$i][$j+2]="." Then
					$ruposim[$i][$k]=""
					$posim[$i][$j]=""
					$posim[$i][$j+1]=""
					$k=$k+1
				ElseIf $posim[$i][$j]="." And $posim[$i][$j+1]="o" And $posim[$i][$j+2]="." Then
					$ruposim[$i][$k]=""
					$posim[$i][$j]=""
					$posim[$i][$j+1]=""
					$k=$k+1
				ElseIf $posim[$i][$j]="." And $posim[$i][$j+1]="D" And $posim[$i][$j+2]="." Then
					$ruposim[$i][$k]=""
					$posim[$i][$j]=""
					$posim[$i][$j+1]=""
					$k=$k+1
				ElseIf $posim[$i][$j]="." And $posim[$i][$j+1]="t" And $posim[$i][$j+2]="s" Then
					$ruposim[$i][$k]=""
					$posim[$i][$j]=""
					$posim[$i][$j+1]=""
					$posim[$i][$j+2]=""
					$k=$k+1
				ElseIf $posim[$i][$j]="." And $posim[$i][$j+1]="s" And $posim[$i][$j+2]="c" And $posim[$i][$j+3]="r" Then
					$ruposim[$i][$k]=""
					$posim[$i][$j]=""
					$posim[$i][$j+1]=""
					$posim[$i][$j+2]=""
					$posim[$i][$j+3]=""
					$k=$k+1
				ElseIf $posim[$i][$j]="." And $posim[$i][$j+1]="B" And $posim[$i][$j+2]="D" And $posim[$i][$j+3]="R" And $posim[$i][$j+4]="i" And $posim[$i][$j+5]="p" Then
					$ruposim[$i][$k]=""
					$posim[$i][$j]=""
					$posim[$i][$j+1]=""
					$posim[$i][$j+2]=""
					$posim[$i][$j+3]=""
					$posim[$i][$j+4]=""
					$posim[$i][$j+5]=""
					$k=$k+1
				ElseIf $posim[$i][$j]="." And $posim[$i][$j+1]="H" And $posim[$i][$j+2]="D" And $posim[$i][$j+3]="R" And $posim[$i][$j+4]="i" And $posim[$i][$j+5]="p" Then
					$ruposim[$i][$k]=""
					$posim[$i][$j]=""
					$posim[$i][$j+1]=""
					$posim[$i][$j+2]=""
					$posim[$i][$j+3]=""
					$posim[$i][$j+4]=""
					$posim[$i][$j+5]=""
					$k=$k+1
				ElseIf $posim[$i][$j]="." And $posim[$i][$j+1]="D" And $posim[$i][$j+2]="V" And $posim[$i][$j+3]="D" And $posim[$i][$j+4]="S" And $posim[$i][$j+5]="c" And $posim[$i][$j+6]="r" Then
					$ruposim[$i][$k]=""
					$posim[$i][$j]=""
					$posim[$i][$j+1]=""
					$posim[$i][$j+2]=""
					$posim[$i][$j+3]=""
					$posim[$i][$j+4]=""
					$posim[$i][$j+5]=""
					$posim[$i][$j+6]=""
					$k=$k+1
				ElseIf $posim[$i][$j]="." And $posim[$i][$j+1]="X" And $posim[$i][$j+2]="V" And $posim[$i][$j+3]="I" And $posim[$i][$j+4]="D" Then
					$ruposim[$i][$k]=""
					$posim[$i][$j]=""
					$posim[$i][$j+1]=""
					$posim[$i][$j+2]=""
					$posim[$i][$j+3]=""
					$posim[$i][$j+4]=""
					$k=$k+1
				ElseIf $posim[$i][$j]="." And $posim[$i][$j+1]="2" And $posim[$i][$j+2]="1" And $posim[$i][$j+3]="0" And $posim[$i][$j+4]="0" And $posim[$i][$j+5]="m" And $posim[$i][$j+6]="b" Then
					$ruposim[$i][$k]=""
					$posim[$i][$j]=""
					$posim[$i][$j+1]=""
					$posim[$i][$j+2]=""
					$posim[$i][$j+3]=""
					$posim[$i][$j+4]=""
					$posim[$i][$j+5]=""
					$posim[$i][$j+6]=""
					$k=$k+1
				ElseIf $posim[$i][$j]="." And $posim[$i][$j+1]="m" And $posim[$i][$j+2]="b" Then
					$ruposim[$i][$k]=""
					$posim[$i][$j]=""
					$posim[$i][$j+1]=""
					$posim[$i][$j+2]=""
					$k=$k+1
				ElseIf $posim[$i][$j]="." And $posim[$i][$j+1]="7" And $posim[$i][$j+2]="0" And $posim[$i][$j+3]="0" And $posim[$i][$j+4]="m" Then
					$ruposim[$i][$k]=""
					$posim[$i][$j]=""
					$posim[$i][$j+1]=""
					$posim[$i][$j+2]=""
					$posim[$i][$j+3]=""
					$posim[$i][$j+4]=""
					$k=$k+1
				ElseIf $posim[$i][$j]="." And $posim[$i][$j+1]="7" And $posim[$i][$j+2]="4" And $posim[$i][$j+3]="5" Then
					$ruposim[$i][$k]=""
					$posim[$i][$j]=""
					$posim[$i][$j+1]=""
					$posim[$i][$j+2]=""
					$posim[$i][$j+3]=""
					$k=$k+1
				ELSEIf $posim[$i][$j]="." And $posim[$i][$j+1]="7" And $posim[$i][$j+2]="0" And $posim[$i][$j+3]="0" And $posim[$i][$j+4]="m" And $posim[$i][$j+5]="b" Then
					$ruposim[$i][$k]=""
					$posim[$i][$j]=""
					$posim[$i][$j+1]=""
					$posim[$i][$j+2]=""
					$posim[$i][$j+3]=""
					$posim[$i][$j+4]=""
					$posim[$i][$j+5]=""
					$k=$k+1	
				ElseIf $posim[$i][$j]="." And $posim[$i][$j+1]="7" And $posim[$i][$j+2]="0" And $posim[$i][$j+3]="0" Then
					$ruposim[$i][$k]=""
					$posim[$i][$j]=""
					$posim[$i][$j+1]=""
					$posim[$i][$j+2]=""
					$posim[$i][$j+3]=""
					$k=$k+1	
				ElseIf $posim[$i][$j]="." And $posim[$i][$j+1]="D" And $posim[$i][$j+2]="V" And $posim[$i][$j+3]="D" And $posim[$i][$j+4]="R" And $posim[$i][$j+5]="i" And $posim[$i][$j+6]="p" Then
					$ruposim[$i][$k]=""
					$posim[$i][$j]=""
					$posim[$i][$j+1]=""
					$posim[$i][$j+2]=""
					$posim[$i][$j+3]=""
					$posim[$i][$j+4]=""
					$posim[$i][$j+5]=""
					$posim[$i][$j+6]=""
					$k=$k+1	
				ElseIf $posim[$i][$j]="." And $posim[$i][$j+1]="o" And $posim[$i][$j+2]="r" And $posim[$i][$j+3]="g" Then
					$ruposim[$i][$k]=""
					$posim[$i][$j]=""
					$posim[$i][$j+1]=""
					$posim[$i][$j+2]=""
					$posim[$i][$j+3]=""
					$k=$k+1	
				ElseIf $posim[$i][$j]="." And $posim[$i][$j+1]="a" And $posim[$i][$j+2]="v" And $posim[$i][$j+3]="i" Then
					$ruposim[$i][$k]="."
					$k=$k+1				
					$ruposim[$i][$k]="a"
					$k=$k+1
					$ruposim[$i][$k]="v"
					$k=$k+1
					$ruposim[$i][$k]="i"
					$k=$k+1
					$posim[$i][$j]=""
					$posim[$i][$j+1]=""
					$posim[$i][$j+2]=""
					$posim[$i][$j+3]=""
				ElseIf $posim[$i][$j]="." And $posim[$i][$j+1]="m" And $posim[$i][$j+2]="k" And $posim[$i][$j+3]="v" Then
					$ruposim[$i][$k]="."
					$k=$k+1				
					$ruposim[$i][$k]="m"
					$k=$k+1
					$ruposim[$i][$k]="k"
					$k=$k+1
					$ruposim[$i][$k]="v"
					$k=$k+1
					$posim[$i][$j]=""
					$posim[$i][$j+1]=""
					$posim[$i][$j+2]=""
					$posim[$i][$j+3]=""
				Else
					$ruposim[$i][$k]=" "
					$k=$k+1
				EndIf
			Case $posim[$i][$j]="j"
				If $posim[$i][$j]="j" And $posim[$i][$j+1]="o" Then
 					$ruposim[$i][$k]="ё"
					$posim[$i][$j+1]=""
					$k=$k+1	
				ElseIf $posim[$i][$j]="j" And $posim[$i][$j+1]="u" Then
					$ruposim[$i][$k]="ю"
					$posim[$i][$j+1]=""
					$k=$k+1	
				ElseIf $posim[$i][$j]="j" And $posim[$i][$j+1]="a" Then
					$ruposim[$i][$k]="я"
					$posim[$i][$j+1]=""
					$k=$k+1	
				Else
					$ruposim[$i][$k]="й"
					$k=$k+1
				EndIf
			Case $posim[$i][$j]="c"
				if $posim[$i][$j]="c" and $posim[$i][$j+1]="l" Then
					$ruposim[$i][$k]="к"
					$k=$k+1
				Elseif $posim[$i][$j]="c" and $posim[$i][$j+1]="h" Then 				
					$ruposim[$i][$k]="ч"
					$posim[$i][$j+1]=""
					$k=$k+1
				Else
					$ruposim[$i][$k]="ц"
					$k=$k+1
				EndIf
			Case $posim[$i][$j]="_"
				If $posim[$i][$j]="_" And $posim[$i][$j+1]="e" And $posim[$i][$j+2]="l" And $posim[$i][$j+3]="e" And $posim[$i][$j+4]="k" And $posim[$i][$j+5]="t" And $posim[$i][$j+6]="r" And $posim[$i][$j+7]="i" And $posim[$i][$j+8]="4" And $posim[$i][$j+9]="k"  And $posim[$i][$j+10]="a" Then
					$ruposim[$i][$k]=""
					$posim[$i][$j]=""
					$posim[$i][$j+1]=""
					$posim[$i][$j+2]=""
					$posim[$i][$j+3]=""
					$posim[$i][$j+4]=""
					$posim[$i][$j+5]=""
					$posim[$i][$j+6]=""
					$posim[$i][$j+7]=""
					$posim[$i][$j+8]=""
					$posim[$i][$j+9]=""
					$posim[$i][$j+10]=""
					$k=$k+1
				Else
					$ruposim[$i][$k]=" "
					$k=$k+1
				EndIf
				Case $posim[$i][$j]="("
					$ruposim[$i][$k]=""
					$k=$k+1
				Case $posim[$i][$j]=")"
					$ruposim[$i][$k]=""
					$k=$k+1
				Case $posim[$i][$j]="["
					$ruposim[$i][$k]=""
					$k=$k+1
				Case $posim[$i][$j]="]"
					$ruposim[$i][$k]=""
					$k=$k+1
				Case $posim[$i][$j]="-"
					If $posim[$i][$j]="-" and $posim[$i][$j+1]="A" and $posim[$i][$j+2]="V" and $posim[$i][$j+3]="C" Then
						$ruposim[$i][$k]=""
						$ruposim[$i][$k+1]=""
						$ruposim[$i][$k+2]=""
						$ruposim[$i][$k+3]=""
						$k=$k+1
					Else
						$ruposim[$i][$k]=" "
						$k=$k+1
					EndIf
			Case Else
				If $posim[$i][$j]<>"" then
				$ruposim[$i][$k]=$posim[$i][$j]
				$k=$k+1
				EndIf
		EndSelect
		$j=$j+1
		
	WEnd
	$k=1
	$j=1
	$i=$i+1
WEnd
$i=1
$j=1
While $i<=UBound($ruposim, 1)-1 
	While $j<=UBound($ruposim, 2)-1
        $rufilms[$i] &= $ruposim[$i][$j]
		$j=$j+1
	WEnd
	$j=1
	$i=$i+1
Wend
$i=1
While $i<=$F[0]
FileMove($dir & $F[$i], $dir & $rufilms[$i])
$i+=1
WEnd




;_ArrayDisplay($posim,"Days")
_ArrayDisplay($F,"Days")
_ArrayDisplay($rufilms,"Days")
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Re: [Translitor]Оптимизация(Упрощение) кода.

{TopicNameWarn}
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Detka.i.alex
Если я правильно понял, то нужно выполнить транслитерацию имени с латиницы в кириллицу?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
1. После условия для Case нет надобности перебирать это же условие в If, т.к. при вхождении скрипта в эту ветвь автоматически означает что условие истинно. например как тут
Код:
...
Case $posim[$i][$j]="."
				If $posim[$i][$j]="."
...

2. Раз в скрипте есть удаление определенных выражений, типа название релиз групп, скобки и прочее, то это имеет смысл делать перед разбиванием на символы. т.к. они в любом случае не участвуют в переводе. Делается простейшим StringReplace либо более продвинутым StringRegExpReplace

ну собственно и все. если переделать под эти два пункта, то скрипт сократиться, в раза наверное два, не говоря уже про быстродействие
 
Верх