Добавлен ScorpioT1000,
опубликован
Алгоритмы, Наработки и Способности
Способ реализации:
cJass
Тип:
Наработка
enum (StringOverlayCentering) { SOC_SOURCE_LEFT, SOC_SOURCE_RIGHT, SOC_SOURCE_CENTER }
// Places the overlay string on the source string and returns result string. Centering method specifies position of the remaining symbols.
string StringOverlay(string source, string overlay, StringOverlayCentering centeringMethod) {
integer slen = StringLength(source)
integer olen = StringLength(overlay)
integer delta = olen - slen
integer gamma = 0
string result = ""
if (delta > 0) {
if (centeringMethod == SOC_SOURCE_RIGHT) {
return SubString(overlay, 0, delta) + source
} elseif (centeringMethod == SOC_SOURCE_LEFT) {
return source + SubString(overlay, olen - delta, olen)
} else {
gamma = delta / 2
delta = R2I( I2R(delta) / 2 + 0.5 )
return SubString(overlay, 0, delta) + source + SubString(overlay, olen - gamma, olen)
}
}
return source
}
Тесты/примеры:
BJDebugMsg( StringOverlay("mama","ABCDEF", SOC_SOURCE_LEFT) ) // = "mamaEF"
BJDebugMsg( StringOverlay("mama","ABCDEF", SOC_SOURCE_RIGHT) ) // = "ABmama"
BJDebugMsg( StringOverlay(I2S(285),"00000000", SOC_SOURCE_RIGHT) ) // = "00000285"BJDebugMsg( StringOverlay("mama","ABCDEF", SOC_SOURCE_CENTER) ) // = "AmamaF"
BJDebugMsg( StringOverlay("mama","ABCDEFG", SOC_SOURCE_CENTER) ) // = "ABmamaG"
BJDebugMsg( StringOverlay("mam","ABCDEFG", SOC_SOURCE_CENTER) ) // = "ABmamFG"
BJDebugMsg( StringOverlay("mam","ABCDEF", SOC_SOURCE_CENTER) ) // = "ABmamF"
BJDebugMsg( StringOverlay("mam","ABCDEFGHIJKLMNOPQRSTUVWXYZ", SOC_SOURCE_CENTER) ) // = "ABCDEFGHIJKLmamPQRSTUVWXYZ"
BJDebugMsg( StringOverlay("mam","ABCD", SOC_SOURCE_CENTER) ) // = "Amam"BJDebugMsg( StringOverlay("scorpiot","ABCDEF", SOC_SOURCE_CENTER) ) // = "scorpiot"
Более простая версия на Jass
// Places the overlay string on the source string and returns result string
function str_overlay takes string source, string overlay, boolean source_to_the_right returns string
local integer slen = StringLength(source)
local integer olen = StringLength(overlay)
local integer delta = olen - slen
local string result = ""
if delta > 0 then
if source_to_the_right then
return SubString(overlay, 0, delta) + source
else
return source + SubString(overlay, olen - delta, olen)
endif
endif
return source
endfunction
Тесты/примеры:
BJDebugMsg(str_overlay("mama","ABCDEF", true)) // = "ABmama"
BJDebugMsg(str_overlay("mama","ABCDEF", false)) // = "mamaEF"
BJDebugMsg(str_overlay("scorpiot","ABCDEF", true)) // = "scorpiot"
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
надо например таблицу сделать вроде (не обязательно точки можно и пробелы)
12......56.......9
64.......5......14
Лучше всего со страницей оглавлением, как это сделано для статей.
Чтобы можно было найти быстрее, чем перелопачивать 80 страниц безымянных ресурсов.
Искать что-то в 80 страницах ресурсов себе дороже.
Отредактирован ScorpioT1000