Snusmumriken
Ну, разница в том что в глазу количество колбочек и палочек измеряется миллионами и миллиардами, а плотность нервных окончаний в коже и языке значительно ниже. И в целом, кожу высокой нервной плотности можно найти только в очень ограниченных местах и очень ограниченно по площади. И всё равно плотность там низкая.
Snusmumriken
Поэтому надо придумать гидрокостюм, где вся кожа превращается в орган зрения :)
Domka
Snusmumriken
Камеру на бошку и вперёд
Domka
Ну фонарик хотя бы тогда, а то как смотреть в пучине моря
Snusmumriken
Domka
Если честно чтобы сделать костюм который использует кожу как орган зрения то я бы скорее всего использовал мелкие датчики с функцией пьезоэффекта какого нибудь, например кварцевые пластинки плюс мелкие динамики, и потом просто бы фиксировал результаты с этих пластинок ._. Незнаю чо вы тутт обсуждаете, я тоже решил своими мыслями поделиться
Денис
Поэтому надо придумать гидрокостюм, где вся кожа превращается в орган зрения :)
И такое пытались. Делали жилеты, которые подключались к бортовому компьютеру автомобиля, который, в свою очередь, был напичкан датчиками, камерами, радарами и лидарами. И этот жилет транслировал всякого рода помехи на жилетку в виде импульсов. Ну и всякие звуковые сопровождения тоже были. Говорят, даже получилось порулить кому-то таким автомобилем.)))
Domka
Неплоха, интересно на конструкцию посмотреть
Денис
Денис
Кстати, по теме: а у кого-то получилось собрать WX под Lua5.3? Я сейчас интерфейс рисую с помощью IUP, но WX покрасивше, как мне кажется... Да и пофункциональней
Денис
Вообще, собрать что-то под Lua - тот еще квест. Я тут с помощью г%вна, палок и какой-то матери собрал Alien, но и то только под X64… Оно даже работает.
Денис
Хотя, опять же, пишутся такие библиотеки вполне комфортно. Было дело, парочку писал на PB (PureBasic). Правда, нужно учитывать, что Lua все строки холдит в сыром виде, так что работать с трансляцией строк надо самому.
retrocat
а красиво ли использовать такие присвоения?
Snusmumriken
Сойдёт. Под пивас.
retrocat
retrocat
а честна
Snusmumriken
А что за string:length(text)? Ты сам писал эту функцию?
retrocat
Snusmumriken
Зачем там двоеточие?
Snusmumriken
Почему не #text?
Snusmumriken
Вот это ломает единообразие. Двоеточие == методы. Это НЕ метод, это просто функция.
retrocat
Зачем там двоеточие?
я использую luaj, тут самая простая конвертация юзердаты такая, но для доступа к статик полям все равно нужно :
retrocat
retrocat
retrocat
не использовать конвертацию из жабы
Snusmumriken
Тогда string.utf8len(text). Без двоеточия, чтобы самому же не путаться.
retrocat
Snusmumriken
Там в качестве self сама таблица string. Она там не нужна.
Snusmumriken
А так — самое простейшее что можно придумать —
string.charpattern = "[\1-\x7F\xC2-\xF4][\x80-\xBF]*"
local cp = string.charpattern
function utf8_next(line, index)
local a, b = line:find(cp, index)
if not a then return end
return b + 1, line:sub(a, b)
end
function string:utf8chars()
return utf8_next, self, 1
end
for char in text:utf8chars() do
print(char)
end
Snusmumriken
Snusmumriken
local charpattern = "[\1-\x7F\xC2-\xF4][\x80-\xBF]*"
local replacements = 0
local replaced = text:gsub(
charpattern,
function(char)
local v = invertKeyValue(charReplacements, char)
replacements = replacements + (v and 1 or 0)
return v or char
end
)
Всё. И кстати, примерно в миллиард раз быстрее.
Если часто используется, функцию замены выделишь отдельно.
retrocat
retrocat
Snusmumriken
Ты про charpattern?
retrocat
Snusmumriken
А что выберет .*?
retrocat
незнаю, в обычном регексе все символы
Snusmumriken
Нет, вообще всё. В смысле всё. И что на что ты будешь заменять?
retrocat
Snusmumriken
Ты тут кажется по символам бежишь и заменяешь символы по каким-то правилам?
retrocat
retrocat
Snusmumriken
Иииии?
Snusmumriken
А если ты выберешь весь текст?
retrocat
а почему [\1-\x7F\xC2-\xF4][\x80-\xBF]* а не .*
Snusmumriken
А что означает "[\1-\x7F\xC2-\xF4][\x80-\xBF]*"? Что оно отберёт?
retrocat
сейчас узнаю...
Snusmumriken
Не узнаешь. Оно отберёт ровно один utf8-символ, из скольки бы байт он ни состоял.
retrocat
Snusmumriken
Кстати, что такое charReplacements?
retrocat
Snusmumriken
Важно.
retrocat
неважно
Snusmumriken
Ещё как важно )
retrocat
нет
Snusmumriken
Это табличка.
retrocat
Snusmumriken
неважно
Ещё как важно, потому что можно делать так. Подсчёт замен кстати производится автоматом.
retrocat
retrocat
инвертировано
Snusmumriken
Сделай обратную таблицу, и будет переводиться и туда и обратно.
retrocat
Жодо -> Помип
retrocat
retrocat
и инвертированные
retrocat
и обычные
Snusmumriken
Обратная таблица делается очень просто:
local replacements = {
["Ж"] = "По",
["о"] = "ми",
["п"] = "до",
["а"] = "р"
}
local reversed = {}
for k, v in pairs(replacements) do reversed[v] = k end
Всё, у тебя две таблицы в обе стороны.
retrocat
ладно
retrocat
но все же лишние ключи
Snusmumriken
Нет, вторая таблица. Количество ключей одинаково.
retrocat
retrocat
оно работать не так будет
Snusmumriken
Ну а если ты для каждой замены бежишь по таблице и сверяешь ключи-значения, ты просираешь дикое количество времени вместо того чтобы воспользоваться благами хеширования.
Snusmumriken
Ну и правильно.
retrocat
retrocat
retrocat
хотя я подумаю
Snusmumriken