Snusmumriken
Ну, разница в том что в глазу количество колбочек и палочек измеряется миллионами и миллиардами, а плотность нервных окончаний в коже и языке значительно ниже. И в целом, кожу высокой нервной плотности можно найти только в очень ограниченных местах и очень ограниченно по площади. И всё равно плотность там низкая.
Snusmumriken
Поэтому надо придумать гидрокостюм, где вся кожа превращается в орган зрения :)
Snusmumriken
Камеру на бошку и вперёд
Domka
Ну фонарик хотя бы тогда, а то как смотреть в пучине моря
Snusmumriken
Domka
Если честно чтобы сделать костюм который использует кожу как орган зрения то я бы скорее всего использовал мелкие датчики с функцией пьезоэффекта какого нибудь, например кварцевые пластинки плюс мелкие динамики, и потом просто бы фиксировал результаты с этих пластинок ._. Незнаю чо вы тутт обсуждаете, я тоже решил своими мыслями поделиться
Денис
Поэтому надо придумать гидрокостюм, где вся кожа превращается в орган зрения :)
И такое пытались. Делали жилеты, которые подключались к бортовому компьютеру автомобиля, который, в свою очередь, был напичкан датчиками, камерами, радарами и лидарами. И этот жилет транслировал всякого рода помехи на жилетку в виде импульсов. Ну и всякие звуковые сопровождения тоже были. Говорят, даже получилось порулить кому-то таким автомобилем.)))
Domka
Неплоха, интересно на конструкцию посмотреть
Денис
Кстати, по теме: а у кого-то получилось собрать WX под Lua5.3? Я сейчас интерфейс рисую с помощью IUP, но WX покрасивше, как мне кажется... Да и пофункциональней
Денис
Вообще, собрать что-то под Lua - тот еще квест. Я тут с помощью г%вна, палок и какой-то матери собрал Alien, но и то только под X64… Оно даже работает.
Денис
Хотя, опять же, пишутся такие библиотеки вполне комфортно. Было дело, парочку писал на PB (PureBasic). Правда, нужно учитывать, что Lua все строки холдит в сыром виде, так что работать с трансляцией строк надо самому.
retrocat
а красиво ли использовать такие присвоения?
Snusmumriken
Сойдёт. Под пивас.
retrocat
retrocat
а честна
Snusmumriken
А что за string:length(text)? Ты сам писал эту функцию?
Snusmumriken
Зачем там двоеточие?
Snusmumriken
Почему не #text?
Snusmumriken
Вот это ломает единообразие. Двоеточие == методы. Это НЕ метод, это просто функция.
retrocat
Зачем там двоеточие?
я использую luaj, тут самая простая конвертация юзердаты такая, но для доступа к статик полям все равно нужно :
retrocat
retrocat
не использовать конвертацию из жабы
Snusmumriken
Тогда string.utf8len(text). Без двоеточия, чтобы самому же не путаться.
Snusmumriken
Там в качестве self сама таблица string. Она там не нужна.
retrocat
Там в качестве 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 ) Всё. И кстати, примерно в миллиард раз быстрее. Если часто используется, функцию замены выделишь отдельно.
Snusmumriken
Ты про charpattern?
Snusmumriken
А что выберет .*?
retrocat
незнаю, в обычном регексе все символы
Snusmumriken
Нет, вообще всё. В смысле всё. И что на что ты будешь заменять?
Snusmumriken
Ты тут кажется по символам бежишь и заменяешь символы по каким-то правилам?
Snusmumriken
Иииии?
Snusmumriken
А если ты выберешь весь текст?
retrocat
а почему [\1-\x7F\xC2-\xF4][\x80-\xBF]* а не .*
Snusmumriken
А что означает "[\1-\x7F\xC2-\xF4][\x80-\xBF]*"? Что оно отберёт?
retrocat
сейчас узнаю...
Snusmumriken
Не узнаешь. Оно отберёт ровно один utf8-символ, из скольки бы байт он ни состоял.
Snusmumriken
Кстати, что такое charReplacements?
Snusmumriken
Важно.
retrocat
неважно
Snusmumriken
Ещё как важно )
retrocat
нет
Snusmumriken
Это табличка.
retrocat
Snusmumriken
неважно
Ещё как важно, потому что можно делать так. Подсчёт замен кстати производится автоматом.
retrocat
инвертировано
Snusmumriken
Сделай обратную таблицу, и будет переводиться и туда и обратно.
retrocat
Жодо -> Помип
retrocat
и инвертированные
retrocat
и обычные
Snusmumriken
Обратная таблица делается очень просто: local replacements = { ["Ж"] = "По", ["о"] = "ми", ["п"] = "до", ["а"] = "р" } local reversed = {} for k, v in pairs(replacements) do reversed[v] = k end Всё, у тебя две таблицы в обе стороны.
retrocat
ладно
retrocat
но все же лишние ключи
Snusmumriken
Нет, вторая таблица. Количество ключей одинаково.
retrocat
оно работать не так будет
Snusmumriken
Ну а если ты для каждой замены бежишь по таблице и сверяешь ключи-значения, ты просираешь дикое количество времени вместо того чтобы воспользоваться благами хеширования.
retrocat
оно работать не так будет
я заменяю A => B B => A ничего не изменилось
Snusmumriken
Ну и правильно.
retrocat
retrocat
хотя я подумаю
Snusmumriken
Изи