C2H5OH
AutoIT Гуру
- Сообщения
- 1,473
- Репутация
- 333
Раз других предложение не поступило, то берём критерий
файл данных
Скрипт
отсортировать так, чтобы каждая следующая строка максимально повторяла предыдущую
файл данных
4.jpg;"126127128130131132133134135136137139140141146147148153154155156157158159160163164165166170171172175176177182183184187188189190194195196;"
5.jpg;"126127128130131132133135136137138141142143144147148149152153154158159160161162163164170171172174175176;"
6.jpg;"126127128130131132133135136137138141142143144148149150151152153159160161162163164165166;"
7.jpg;"126127128130131132133135136137142143144149150151152153154160161162164165166;"
8.jpg;"126127128130131132133136137138144145146149150151152;"
9.jpg;"126127128130131132134135136137139140141146147148153154155156157158159160163164165166170171172175176177182183184187188189190194195196;"
10.jpg;"126127128130131132135136137142143144147148149154155156159160161162163164169170171172176177178181182183187188189190;"
11.jpg;"126127128130131132135136137142143144149150151152153154160161162164165166;"
12.jpg;"126127128130131132135136137142143144149150151153154155156159160161167168169174175176181182183185186187190191192197198199201202203206207208212213214215;"
13.jpg;"126127128130131132135136137142143144150151153154155156159160161167168169174175176181182183185186187190191192197198199201202203206207208212213214215;"
14.jpg;"126127128131132133134135136137142143144148149150151;"
15.jpg;"126127128131132133134135136137142143144148149150151154155156157158159160166167168172173174175176177178179180;"
16.jpg;"126127128131132133134135136142143144148149150151154155156157158159160166167168172173174175176177178179180;"
17.jpg;"126127128131132133134135136144145146147148149150153154155156157158163164165166170171172177178179181182183185186187;"
18.jpg;"126127128131132133134137138139140142143144146147148151152153154155156157162163164169170171173174175176180181182188189190191195196197198199200201202203;"
5.jpg;"126127128130131132133135136137138141142143144147148149152153154158159160161162163164170171172174175176;"
6.jpg;"126127128130131132133135136137138141142143144148149150151152153159160161162163164165166;"
7.jpg;"126127128130131132133135136137142143144149150151152153154160161162164165166;"
8.jpg;"126127128130131132133136137138144145146149150151152;"
9.jpg;"126127128130131132134135136137139140141146147148153154155156157158159160163164165166170171172175176177182183184187188189190194195196;"
10.jpg;"126127128130131132135136137142143144147148149154155156159160161162163164169170171172176177178181182183187188189190;"
11.jpg;"126127128130131132135136137142143144149150151152153154160161162164165166;"
12.jpg;"126127128130131132135136137142143144149150151153154155156159160161167168169174175176181182183185186187190191192197198199201202203206207208212213214215;"
13.jpg;"126127128130131132135136137142143144150151153154155156159160161167168169174175176181182183185186187190191192197198199201202203206207208212213214215;"
14.jpg;"126127128131132133134135136137142143144148149150151;"
15.jpg;"126127128131132133134135136137142143144148149150151154155156157158159160166167168172173174175176177178179180;"
16.jpg;"126127128131132133134135136142143144148149150151154155156157158159160166167168172173174175176177178179180;"
17.jpg;"126127128131132133134135136144145146147148149150153154155156157158163164165166170171172177178179181182183185186187;"
18.jpg;"126127128131132133134137138139140142143144146147148151152153154155156157162163164169170171173174175176180181182188189190191195196197198199200201202203;"
Скрипт
Код:
#Include <Array.au3>
#include <Math.au3>
$label='vaf.txt'
$bar = _fill($label)
_ArrayDisplay($bar,"прочитано")
$VAF = _poehali($bar)
_ArrayDisplay($VAF,"отсортировано")
Func _poehali($aVAF)
Local $N = $aVAF[0]
Local $aRes[$N+1]
$aRes[0] = $N
$aRes[1] = $aVAF[1]
_ArrayDelete($aVAF,1)
Local $Nv = $N-1
Local $maxEst, $maxIndex
For $i=2 To $N
$maxEst = -1
For $j = 1 To $Nv
$ee = _drink($aRes[$i-1],$aVAF[$j])
If $ee > $maxEst Then
$maxEst = $ee
$maxIndex = $j
EndIf
Next
$aRes[$i] = $aVAF[$maxIndex]
_ArrayDelete($aVAF,$maxIndex)
$Nv -= 1
Next
Return $aRes
EndFunc
Func _fill($name)
Local $mug[1] = [0]
$file = FileOpen($name)
While 1
$str = FileReadLine($file)
If @Error=-1 Then ExitLoop
_ArrayAdd($mug, $str)
$mug[0] += 1
WEnd
FileClose($file)
Return($mug)
EndFunc
Func _drink($str1,$str2)
$aStr1 = StringRegExp($str1,".*?(\d{3})",3)
$aStr2 = StringRegExp($str2,".*?(\d{3})",3)
Local $N1 = UBound($aStr1)-1, $N2 = UBound($aStr2)-1
Local $index1 = 1, $index2 = 1
Local $minPos = _Min(Number($aStr1[0]), Number($aStr2[0]))
Local $maxPos = _Max(Number($aStr1[$N1]), Number($aStr2[$N2]))
Local $estimate = 0
For $i = $minPos to $maxPos
While $aStr1[$index1] < $i
$index1 += 1
If $index1 > $N1 Then
$index1 = $N1
ExitLoop
EndIf
WEnd
While $aStr2[$index2] < $i
$index2 += 1
If $index2 > $N2 Then
$index2 = $N2
ExitLoop
EndIf
WEnd
If ($aStr1[$index1] = $i) And ($aStr2[$index2] = $i) Then $estimate += 1
Next
Return $estimate
EndFunc