Yoko

All sides of Injection
It is currently 2025-12-22 05:07:19

All times are UTC+02:00




Post new topic  Reply to topic  [ 22 posts ]  Go to page 1 2 Next
Author Message
PostPosted: 2008-02-15 00:45:34 
Offline

Joined: 2007-04-26 23:35:15
Posts: 220
Есть у кого-нибудь идеи как сделать сортировку выводимых значений по алфавиту?


Top
   
 Post subject:
PostPosted: 2008-02-15 01:04:45 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
А в чём собственно говоря проблема ?

Хвать алгоритму и вперёд :) Будь бы ещё в инже такой хитрый функций, как ord() - вообще быстро бы работало :)

PS: Если не усну, попробую что-нибудь из головы выдумать :)

_________________
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Skype: d119060


Top
   
 Post subject:
PostPosted: 2008-02-15 01:29:46 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Не уснул - выдумал с ходу какую-то хреновину, теоретически - должна работать :)

Code:
sub main()
   var i, len = 3
   DIM arr[val( str( len ) )]
   arr[0] = "Abc";
   arr[1] = "123"
   arr[2] = "1230"
   sort( arr, len )
   for i = 0 to len -1
      uo.print( arr[ i ] )
   next
end sub

Sub sort( arr, len )
   var i, j, r, temp
   for i = 1 to len -1
      j = i
      while j > 0
         r = getAlphaWord( arr[ j ], arr[ j - 1 ] )
         if r == 1 then
            temp = arr[ j ]
            arr[ j ] = arr[ j - 1 ]
            arr[ j - 1 ] = temp
            j = j - 1
         else
            j = 0
         endif
      wend
   next
EndSub

Sub getAlphaWord( word1, word2 )
   var i, r, len = strlen( word1 )
   if strlen( word1 ) > strlen( word2 ) then
      len = strlen( word2 )
   endif
   for i = 0 to len -1
      r = getAlphaSym( word1[ i ], word2[ i ] )
      if not r == 0 then
         return r
      endif
   next
   if strlen( word2 ) > strlen( word1 ) then
      return 1
   endif
   if strlen( word1 ) > strlen( word2 ) then
      return 2
   endif
   return 0
EndSub

Sub getAlphaSym( sym1, sym2 )
   var i, alpha = "0123456789"
   alpha = alpha + "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
   alpha = alpha + "abcdefghijklmnopqrstuvwxyz"
   alpha = alpha + "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"
   alpha = alpha + "абвгдеёжзийклмнопрстуфхцчшщъыьэюя"
   if sym1 == sym2 then
      return 0
   endif
   for i = 0 to strlen( alpha ) -1
      if alpha[ i ] == sym1 then
         return 1
      endif
      if alpha[ i ] == sym2 then
         return 2
      endif
   next
   return 0
EndSub


Старался действовать наиболее оптимально, но особо большие тексты я бы кормить этой штуке не рекомендовал :)

_________________
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Skype: d119060


Top
   
 Post subject:
PostPosted: 2008-02-15 01:32:11 
Offline
Expert!
User avatar

Joined: 2005-05-04 14:05:19
Posts: 2580
Location: Москва
самое простое что можно с инжой сделать это с делать для слов второй масив который будет содержать их цифровой эквивалент.
много слов то?


Top
   
 Post subject:
PostPosted: 2008-02-15 01:34:49 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Grin wrote:
самое простое что можно с инжой сделать это с делать для слов второй масив который будет содержать их цифровой эквивалент.
много слов то?

А чем код выше тебе не по душе ?)

И массив не надо - в строчку читабельнее..

Хотя, как вариант:
Code:
DIM alpha[ 256 ]
for i = 0 to 255
    alpha[ i ] = chr( i )
next


Винда примерно так и сортирует вроде :)

_________________
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Skype: d119060


Top
   
 Post subject:
PostPosted: 2008-02-15 01:37:06 
Offline

Joined: 2007-04-26 23:35:15
Posts: 220
Destruction wrote:
Не уснул - выдумал с ходу какую-то хреновину, теоретически - должна работать :)

Старался действовать наиболее оптимально, но особо большие тексты я бы кормить этой штуке не рекомендовал :)


Спасибо, попробую сейчас, отпишусь :)

А слов 100-200 гдето)


Top
   
 Post subject:
PostPosted: 2008-02-15 01:41:43 
Offline
Expert!
User avatar

Joined: 2005-05-04 14:05:19
Posts: 2580
Location: Москва
Destruction wrote:
А чем код выше тебе не по душе ?)

И массив не надо - в строчку читабельнее..



я писал пост еще твоего не было;)
а то что ты написал в принципе ничего лутше не придумать, напильником если только обработать (код можно сократить)...
все равно так или иначе надо будет сравнивать по символьно...


Top
   
 Post subject:
PostPosted: 2008-02-15 01:43:27 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Grin wrote:
Destruction wrote:
А чем код выше тебе не по душе ?)

И массив не надо - в строчку читабельнее..



я писал пост еще твоего не было;)
а то что ты написал в принципе ничего лутше не придумать, напильником если только обработать (код можно сократить)...
все равно так или иначе надо будет сравнивать по символьно...

Ну, как вариант - можно забивать массивчик через chr(), как я предложил выше, но тут у меня дай боже - 100 символов, а то будет 256 - упадёт производительность :)

А касательно напильника - работай, если хочешь - я не спец по сортировкам, я просто написал самое логичное, что пришло в голову :)

И про сокращение кода не спорю - вот например переменная r там нафиг не сдалась ))

_________________
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Skype: d119060


Top
   
 Post subject:
PostPosted: 2008-02-15 01:46:21 
Offline

Joined: 2007-04-26 23:35:15
Posts: 220
Идею уловил, вроде работает. Только проблемка осталась, как отсортировать переменные не из массива, а из ини файла?


Top
   
 Post subject:
PostPosted: 2008-02-15 01:47:13 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
korzh wrote:
Идею уловил, вроде работает. Только проблемка осталась, как отсортировать переменные не из массива, а из ини файла?

Считать ini-файл в массив, отсортировать, сохранить обратно.

Ффсё, файл отсортирован :)

А вообще - пиши по-русски, а то обижусь и уйду из топика :evil:

_________________
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Skype: d119060


Top
   
 Post subject:
PostPosted: 2008-02-15 01:49:08 
Offline

Joined: 2007-04-26 23:35:15
Posts: 220
ну это то понятно, только при каждом добавлении чего то нового в ини файл придеться лезть в скрипт и дописывать массив..


Top
   
 Post subject:
PostPosted: 2008-02-15 01:50:18 
Offline

Joined: 2007-04-26 23:35:15
Posts: 220
а пля
можно проще, написать функцию генерации массива из ини файла, а то я чтото подумал что ты имел ввиду руками вбивать :roll:


Top
   
 Post subject:
PostPosted: 2008-02-15 01:51:20 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
korzh wrote:
а пля
можно проще, написать функцию генерации массива из ини файла, а то я чтото подумал что ты имел ввиду руками вбивать :roll:

Оно тебе точно надо?...

PS: А такой способ сортировки вроде пузырьковым называется.. помню года 4 назад где-то читал.. :)

_________________
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Skype: d119060


Top
   
 Post subject:
PostPosted: 2008-02-15 01:53:29 
Offline

Joined: 2007-04-26 23:35:15
Posts: 220
Да я тоже вспонмил, в начале семестра было, после каникул все забыл :(


Top
   
 Post subject:
PostPosted: 2008-02-15 01:55:12 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
korzh wrote:
Да я тоже вспонмил, в начале семестра было, после каникул все забыл :(

В общем всё, вопрос исчерпан.

Всё, что тебе по-сути надо - это функция getAlphaWord, которая вычисляет, которая строка наиболее "алфавитная" :)

Так, что юзай как заблагорассудится. Алгоритм пузырьков непосредственно в ф-ции sort().

Всё просто и удобно :)

_________________
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Skype: d119060


Top
   
 Post subject:
PostPosted: 2008-02-15 01:55:26 
Offline
Expert!
User avatar

Joined: 2005-05-04 14:05:19
Posts: 2580
Location: Москва
ну 0 до 255 просто смысла нет, да и не в этом угловатость.
до статочно определить какое слово длиней
и начать по символьно поиск в какой из строк ты быстрей найдешь символ из ряда, но предварительно проверяешь не встречается ли этот символ в другой строке.

кода прилично меньше будет. да и перебор букв можно уменьшить.


Top
   
 Post subject:
PostPosted: 2008-02-15 01:58:06 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Простым смертным, вроде меня, твои слова ничего не говорят.

Возьми да сделай, а я уж на код погляжу :)

Вспоминается ситуация, с моим автоламбером, когда я выдумывал алгоритму для поиска ближайшего дерева, а мне Edred говорил в каждом посте, что я еретик (ну примерно так, дословно не помню, перечитывать лень).. :)

_________________
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Skype: d119060


Top
   
 Post subject:
PostPosted: 2008-02-15 02:02:30 
Offline
Expert!
User avatar

Joined: 2005-05-04 14:05:19
Posts: 2580
Location: Москва
агоритм что утебя не класический пузырек, а модернизированый;)


Top
   
 Post subject:
PostPosted: 2008-02-15 02:03:23 
Offline

Joined: 2007-04-26 23:35:15
Posts: 220
Вообщем сделал, спасибо ;)


Top
   
 Post subject:
PostPosted: 2008-02-15 03:08:40 
Offline

Joined: 2007-04-26 23:35:15
Posts: 220
оказалось не до конца сделал :(
Сортируется только один параметр, как связать с ним остальные?


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 22 posts ]  Go to page 1 2 Next

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited