Как правильно употреблять Leet и другие символы в никнейме
Иллюстрация. Автор: rangizzz / Shutterstock.com.
Leet, или как его называют в более просвещённых кругах «1337», — это распространенная в интернете вариация английского языка. Суть в том, чтобы заменять привычные буквы латинского алфавита на цифры или другие знаки. За основу берется визуальное сходство обозначаемой буквы с символом-заменой.
История языка Leet
Сам термин «leet» походит от английского «elite» (элитный) — название статуса на сайте BBS, дающего доступ к файлам, папкам, играм и чатам, содержавшимся на этом ресурсе. Другая теория происхождения языка, и одна из самых популярных та, что связана с первыми хакерами. Все дело в том, что любой поисковик производит анализ каждой страницы интернета для того, чтобы отображать наиболее релевантные ответы на запросы пользователей. И чтобы избежать возможности быть показанными на первых страницах поисковика, хакеры приняли решение начать шифровать обычные слова английского языка и тем самым избежать распознавания их текста третьими лицами. Также язык leet использовался игроками World of Warcraft для общения игроков разных фракций в обход блокировке, ведь заменялись только типичные буквы алфавита, а символы и цифры оставались нетронутыми. Правда, только до определенного обновления, далее же такое общение стало невозможным. И 1337 стал использоваться уже между более опытными игроками чтобы было проще отличить их от новичков. Какой бы не была истинная теория происхождения leet-speak’а, сейчас он выполняет чисто декоративную функцию, ведь последние bbs ресурсы изжили свое, хакеры перешли на более засекреченные языки, а межфракционное общение было пофикшено одним из патчей. «Встречают по одежке, провожают по уму» в эпоху онлайн игр следовало бы изменить на «встречают по нику, провожают по скилу». И чтобы никнейм был действительно внушительным, многие игроки, сами того не зная, используют leet основу. Как часто на просторах интернета можно встретить пользователей с безумным количеством символов и цифр и юзернеймах.
Алфавит Leet и возможные транскрипции
Но прежде чем перейти к самим никам, следовало бы разобраться с алфавитом leet, ведь без наглядной таблицы-дешифратора новичку никак не разобраться даже с простыми словами, не говоря уже о целых фразах. Изначально существовал только английский leet, но со временем русскоговорящие пользователи интернета и геймеры дополнили 1337-латиницу кириллическими буквами и их аналогами-символами. Ниже можно ознакомиться с этой самой таблицей возможной замены символов и знаков для ника.
Оригинальная латиница | Дополнительная кириллица | ||
A | /-| или 4 | Г | r |
B | 8 | Ж | >|< или >| < или ]|[ |
C | (или [ | З | ‘/_ |
D | |) | И | |/| или l |
E | 3 | Л | /\ или J[ или J| или JI или просто J (или латинская версия |_) |
F | |= или «ph» | П | || или |^| или /7 |
G | 6 | Р | |> |
H | |-| | С | 5 или латинские версии |
I | | или ! или 1 | У | ‘/ или (_) |
J | ) | Ф | <|>или qp |
K | | < или |( | Ц | |_|_ или ||_ |
L | |_ или 1 | Ч | ‘-| или 4 |
M | |\/| или /\/\ | Ш | III или w или LLI |
N | |\| или /\/ | Щ | LLL |
O | 0 или () | Ъ | ‘b |
P | |> | Ы | bI |
Q | 9 или 0 | Ь | b или |o |
R | |? или |2 | Э | € или -) либо так и остается Э |
S | 5 или $ | Ю | |-O или 10 |
T | 7 или + | Я | 9I или 9 или <| либо так и остается Я |
U | |_| | ||
V | \/ | ||
W | \/\/ или \X/ | ||
X | * или > | ||
Y | ‘/ | ||
Z | 2 | ||
AT | 8 | ||
AND | & (с тем же успехом заменяет AN, EN) | ||
FOR | 4 | ||
MATE | M8 | ||
YOU | U |
Теперь, уже ознакомившись с основами алфавита leet, можно переходить и к никами. Сам термин nickname переводиться с английского как «прозвище, кличка». Другими словами, ник – это псевдоним, альтернативное имя, с которым ассоциирует себя автор и желает быть названным именно по нику, а не настоящему имени, хотя нередко производные от имени и выступают никами на различных форумах и сайтах.
Никнеймы для геймеров
Когда геймер начинает покорение очередной онлайн игры, первая проблема, с которой он сталкивается, — это никнейм. Ведь от него зависит слишком многое, если учесть, что вся информация, которой будут располагать игроки на сервере, это именно ник. Игрок с глупым или просто смешных ником рискует быть подвергнуть насмешкам в игровом мире и особенно чате, даже если просто обратиться с просьбой о помощи. Да, мир геймеров не всегда дружелюбен к новичкам. Поэтому выбор ника – дело серьезное и ответственное. У опытных игроков есть пара-тройка ников, которые они уже успешно опробовали в других играх и довольны тем, что есть. Правда, желание создать очередного персонажа или просто косметически преобразить свой аккаунт путем изменения аватарки и ника приводят даже опытных пользователей в неловкое положение, ведь старые ники могут надоесть, а имя любимого героя сериала уже кто-то занял. Вот тут и приходиться выдумывать что-то своеобразное – за дело берется сначала просто никнейм из латинских символов и цифр, но ведь латиницу учат в каждой школе, а цифры и вовсе одинаковые, поэтому вероятность того, что ник уже будет занят очень велика. «Не опускать руки, еще не все вариации использованы», — размахивая зажатой клавишей Shift, на всем ходу забегает в голову leet и дарит возможность не просто получить желаемый ник, но и сделать это максимально уникально, сложно и непривычно, тем самым давая понять казуальным геймерам с простенькими никами, кто тут на самом деле батя. Некоторые leet-замены стали настолько популярны, что в одной игре могли попасться два игрока с одинаковыми символами и цифрами, но при этом разным наполнением. Одним из самых популярных символов-замен был и наверняка до сих пор остается «pro100». Суть этой приставки в ее универсальности применения. Для русскоязычных пользователей эта приставка читается как «просто», что дает возможность вставить после даже свое имя, ведь из-за напускной «простоты» появляется некий шарм, под действием которого даже «pro100vasya» уже и не «простовася», а настолько опытный Вася, что может себе позволить взять себе даже такой ник. В английском же языке приставка «pro100» имеет более крутое значение, ведь «pro» уже сокращение от professional, а 100 будто указывает на стопроцентные навыки игрока, в чьем юзернейме используются.
Другие варианты использования символов в нике
Способов кастомизации ника бесчисленное множество, но самые популярные это просто добавление к уже существующему даты рождения, например. Но тут очень важно не прогадать, ведь иногда информация о дате рождения дает преимущество оппоненту в вербальном споре. Согласитесь, угрозы в чате от игрока с ником «nikita2004» теряют свою силу и не внушают должного страха. Попробуй потом докажи, что это не год рождения, а год получения паспорта. Среди жителей России так же пользуются популярностью цифровые приставки в виде региона проживания, ведь очень удобно. Отличными примерами проникновения leet в ники игроков могут служить прозвища популярных киберспортсменов самых разных дисциплин. Например, 9Pasha (9=Я Pasha, Павел Хвастунов, Virtus.Pro, Dota 2); S1mple (Simple, Александр Костылев, Na`Vi, CS: GO); V1lat (Vilat, Виталий Волочай, самый популярный киберспортивный комментатор). Ники с символами на английском так же неплохой способ сразу вычеркнуть себя из списков русскоязычных игроков, ведь, к сожалению, у большинства иностранных геймеров очень негативные ассоциации с русскоязычными пользователями в силу давно сложившихся клише, разрушить которые пока не видится возможным. Именно поэтому использование никнейма из латинских символов и цифр не то чтобы дает преимущество в игре, но по крайней мере не так бросается в глаза остальным игрокам. Онлайн игры вместе со всей современной культурой пришли с запада, поэтому и логин с символами, буквами и знаками, принадлежащими латинице и в особенности leet`у смотрятся более органично и отдают дань уважения и солидарности геймерскому сообществу по всему миру.
Нужно заменить числа на буквы из алфавита, соответствующие этим числам. Разный результат в программе, как исправить?
Здравствуйте проблема такая, никак не пойму.
Вот задание:
Вам необходимо в строке, полученной со стандартного ввода найти все цифры и заменить их на букву латинского алфавита, располагающуюся по данному индексу (все символы в строке вводятся в нижнем регистре).
Примечание: две цифры не могут располагаться рядом. Те если у вас есть строка «19у» это значит что у вас одна цифра 19, а не 1 и 9. Как результат вы должны получить «sy»
Sample Input:
Hel12o 16e15ple
Sample Output:
Hello people
latin="abcdefghijklmnopqrstuvwxyz" text = input("Введите строку: ") i = 0 s = "" while i < len(text): a = text[i] while "0"
По заданию фразу "Hel12o 16e15ple" выводит так "Hello pe1eple" - правильно меняет буквы из алфавита до пробела, но после пробела почему-то не правильно.
Если же к примеру ввести фразу "12ghj3jhh23" (просто произвольная) - то здесь выдает "lghjcjhhbc" - последние две цифры не воспринимает как число 23 и выводит по буквам "b" и "c".
Если же к примеру поменять 23 на 24: "12ghj3jhh24" - то тут выводит всё как положено "lghjcjhhx" - все правильно заменяет.
В чем может быть проблема? почему не приязнь у программы к числу 23 и пробелам.
Можно как-то подправить именно этот код, без "наворотов", а то я только учусь и еще не вcе понимаю.
- Вопрос задан более года назад
- 4175 просмотров
Leet
Leet или leet speak (транслит. лит спик, от англ. elite — элита) — способ уродования английского языка школьниками, геймерами, wannabe-хакерами (кулхацкерами). Часто обозначается цифрами 1337 (реже 31337 или 1+3+3=7) — это результат полной замены букв похожими по начертанию цифрами в слове «leet». Leet не предназначен для устной речи, а только для письменной. У человека, никогда ранее не встречавшегося с таким явлением, может вызвать смущение и недоумение, так как в некоторых конструкциях сам чёрт ногу сломит, прежде чем поймёт, что написано.
\/\/7|= ? [ править ]
Проверка зрения.
Для leet speak характерны замены максимального количества букв на цифры и псевдографику. Сначала это предназначалось для обхода словофильтров, но потом замену стали делать просто потому, что это кажется крутым. Кроме того, в 1337-speak’е широко применяются намеренные искажения языка, причём считается, что чем изощрённее искажение, тем лучше [2] . Этим он схож с языком падонкав. Использование множественных аббревиатур типа WTF и lol еще более затрудняет чтение. Со временем в leet speak влились и другие правила, например замена «s» на конце слова буквой «z» [3] . Это правило существовало ещё в эпоху модемов и bbs’ок, Leet выполнял своё предназначение как раз в эпоху модемов и BBS. (Если вы, конечно, верите, что жизнь есть за МКАДом и за пределами этой страны). Он был придуман не только чтобы хакеры могли выделиться, но прежде всего для затруднения работы модераторов. Сейчас же его функция скорее декоративная.
IRL смысл в подмене букв цифрами есть: если хакер с профессионально отточенной паранойей царапает какое-нибудь сообщение сообщникам по TOR (не забыв зашифровать всё и с PGP, и с прокси), то при расшифровке крыса-кун не сможет достоверно слить властям что-либо (либо, если нуб, не поймёт ничего сам).
Leet Speak широко использовался в World of Warcraft и был единственным способом общения между альянсом и ордой до определенного патча (фантазёры придумали для орков свой орочий язык, и все английский слова из уст орка менялись на слова на нём, даже LOL и тот менялся на KEK) ". Поскольку буквы заменялись другими буквами или сочетаниями, могли использоваться только цифры и символы [4] .
Также имеется русский 1337 для русских букв (приводятся символы, которые есть только в русском языке, так как остальные символы идентичны из латинской версии.
Латиница | Дополнительная кириллица | ||
---|---|---|---|
A | /-| или 4 | Г | r |
B | 8 | Ж | >|< или >|< или ]|[ |
C | (или [ | З | '/_ |
D | |) | И | |/| или l |
E | 3 | Л | /\ или J[ или J| или JI или просто J (или латинская версия |_) |
F | |= или подменяется на «ph» | П | || или |^| или /7 |
G | 6, вульгарно 9 | Р | |> |
H | |-| | С | 5 или латинские версии |
I | | или ! или 1 | У | '/ или (_) |
J | ) | Ф | <|>или qp |
K | | < или |( | Ц | |_|_ или ||_ |
L | |_ или 1 | Ч | '-| или 4 |
M | |\/| или /\/\ | Ш | III или w или LLI |
N | |\|, иногда ^/ или /\/ | Щ | LLL |
O | 0 или (), изредка @ | Ъ | 'b |
P | |> | Ы | bI |
Q | 9, иногда 0 , изредка 2 | Ь | b или |o |
R | |? или |2 | Э | € или -) либо так и остается Э |
S | 5 или $ | Ю | |-O или 10 |
T | 7 или + | Я | 9I или 9 или <| либо так и остается Я |
U | |_|, допустимо /_/ | ||
V | \/ | ||
W | \/\/ или \X/ | ||
X | >< или * (звёздочка «астериск») | ||
Y | '/ | ||
Z | 2 | ||
AT или ATE | 8 (sms-speak) | ||
AND | & (с тем же успехом заменяет AN, EN) | ||
FOR | 4 | ||
MATE | M8 | ||
YOU | U |
В основном для «шифровки» за основу берут внешность символов верхнего регистра (1337 старее Спектрума, тащемта), несмотря на то, что название языка обычно пишется как 1337 вместо |_337, поэтому за G обычно считается 6, а не 9, похожая на строчную g.
Часто путают q=9 и g=9; а также D=|) и P=|>.
- Цифра 9, если не использовать для редкой и почти бесполезной буквы, «кью», может кодировать довольно распространённые буквы J и Y (звук «йот» во многих языках кодируется как J, а не Y)
- Интересно, что как раз в японском числительное для 9 очень даже звучит как «кью» (а то и «ку» или «кю»), вот только транслитерируется это, почему-то, по-издевательски: Kyuu.
Следует иметь в виду, что использование сразу двух методов написания одной и той же буквы ломает частотный анализ шифра (когда одной букве назначают один символ, а дешифровщица с филологическим образованием берёт статистику «в языке таком-то частота использования каждой буквы алфавита такая, в языке сяком-то такая-то, буква О самая распространённая почти везде»: уже подмена части букв «О» сразу и на 0, и на (), и какой-нибудь собачий штрудель @ в банальном «шифре Цезаря» живо ломает частотный анализ (особенно если не делить приоритет для нуля, скобок и собачки поровну). Ждём ебилдов вроде «дешифрующего кольца» для символов лита в роли детских игрушек для мамкиных штирлицев.
npuMepbl [ править ]
«Кто−нибудь говорит на лит−спике?»
- l33t — минимальная замена, бывает хуже
- R0XX0rZzz — аналог выражения (нечто) Rocks — то есть «ЭТО круто» и т. п.
- H4XX0R — вместо «-er» используется старый «-or». Звук от буквы «X» означает множественное число.
- 1337 5P3/-|K — более похоже на правду.
- moz://a — новый логотип для Mozilla.
- |\/|A 1337|-|AzK0R 5K17z /-|R 50 1337 — более сложный пример. Перевод: «Ma leet-hacker skills are so elite»
- |0h34|^ ^^4|-| |V|/\|> 1337 5|
- I|= U (4/\/ |234|) 7|-|I$ — U R 1337 |\/|4$73|2 — классический 1337. Перевод: «If you can read this — you are leet master» (неграмотность в LeeTe приветствуется)
- 1 |<|\|()\/\/ |>3()|>|_3 \/\/|-|() |_|53|) 7() 5|>34| < 1337 4 |_07 — I know people who used to speak leet a lot.
- 1 (4|\|'7 |_||\||)3|2$74|\||) '/0|_||2 \/\/|2!7!|\|9. 17’$ (0|\||=|_|$!|\|6 — «I can’t understand your writing. It’s confusing»
- l33t supa h4x0r — чит в винрарнейшей игре Age of Mythology. Перевод: «Еlite super hacker»
- «-z» в слове «lulz» берет свое начало из leet speak
- А вот «z-» в восклицаниях вроде zOMG, тем не менее, связано с опечаткой вида "палец ударил по клавише «зед», а должен был попасть на «шифт»
- /\/\AR-15/-\ — всего лишь имя Marisa.
- m/\!?|$4 — оно же.
- MAR154 — опять-таки, оно же.
Как можно заменить каждую букву строки на (рандомную) цифру в php
Допустим у нас есть $x = 'Hello world'. У меня появился вопрос, как можно заменить каждую букву в $x на рандомную цифру от 1 до 100? У меня есть некоторые предположения, которые, почему то, не работают например я пробовал:
$x = 'Hello world'; // задаем строку for($i = 0;$i
так же, пробовал с помощью str_split():
но при этом, почему то, появляется много массивов, при выводе которых видно, что буквы в предложении заменены архаично. Так же, в идеале, хотел бы понять, как можно заменить каждую букву в предложении на ее порядковый номер в алфавите(a = 1, b = 2,c = 3 и т.д) Спасибо
Отслеживать
задан 12 сен 2021 в 23:35
yellow_pus yellow_pus
13 3 3 бронзовых знака
Алфавит только английский?
13 сен 2021 в 0:12А у меня еще больше вопросов. "Заменить каждую букву" - это значит не трогать пробельные символы и знаки препинания? Во-вторых, в вашем примере, в исходной строке есть, например, два символа o. Для каждого из этих символов нужно генерировать случайное число или же все o должны заменятся одним сгенерированным? Т.е. в первом случае это может быть Hell77 w88rld , а во воторм - Hell77 w77rld . И в-третьих, регистр символов надо учитывать?
13 сен 2021 в 1:07
а почему в задании "заменить", а в коде стоит "вывести"?
13 сен 2021 в 5:16
И да, у меня тоже много вопросов. Надо ли будет потом заменять обратно числа на буквы
13 сен 2021 в 5:162 ответа 2
Сортировка: Сброс на вариант по умолчанию
Решения "в лоб" (предполагается использование только латиницы):
- Замена каждой буквы на случайное число в диапазоне от 1 до 100:
, $sTxt ); echo $sRes;
- Замена каждой буквы на её порядковый номер в алфавите:
, $sTxt ); echo $sRes;
Отслеживать
ответ дан 13 сен 2021 в 2:28
33.1k 6 6 золотых знаков 29 29 серебряных знаков 71 71 бронзовый знакДа, спасибо, этот код работает, но я не могу разобраться с функцией preg_replace_callback(). А именно, какое значение надо вставлять в первый аргумент данной функции(в данном примере, не понятно что такое '/\w/' и за какие критерии строки это отвечает)?
13 сен 2021 в 16:33
@yellow_pus: /\w/ - это регулярное выражение. Почитать про функцию preg_replace_callback .
13 сен 2021 в 16:41Спасибо, разобрался, а во втором примере(в рандомное число) не совсем понятно. Зачем и какой элемент находится в [0](где $matches[0]) и зачем мы преобразуем из букв в байты(в верхнем регистре) и отнимаем от этого 64?
13 сен 2021 в 17:31
@yellow_pus: рандомное число - это в первом примере 😉 А во втором: 1) Также находим буквы регуляркой, 2) Так как $matches возвращает массив, а нам нужен первый (читай, единственный) символ, то $matches[0] . 3) Приводим символ к верхнему регистру strtoupper() , так как в алфавите, что большие, что маленькие буквы равнозначны. 4) Получаем код текущего символа ord() и вычитаем из него смещение (в таблице символов, A имеет код 65) - таким образом вычисляем порядковый номер буквы в алфавите.
13 сен 2021 в 17:44
Так ord() же возвращает целое число от 0 до 255(php.net/manual/ru/function.ord.php)? То есть мы получаем из "H" число, допустим, 210, затем вычитаем 65, получается 146, но это ведь не то число что нам нужно
13 сен 2021 в 19:27
Зацеплюсь за эту часть задачи: "в идеале, хотел бы понять, как можно заменить каждую букву в предложении на ее порядковый номер в алфавите(a = 1, b = 2,c = 3 и т.д) ".
$in_glass = "Hello world"; $array = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; for ($i = 0; $i < mb_strlen($in_glass); $i++) < $char = mb_strtolower(mb_substr($in_glass, $i, 1)); $k = 1; foreach ($array as $val) < if ($char == $val) < $char = $k; break; >$k++; > $result .= $char; > print $result;
Этот же пример с array_flip()
$in_glass = "Hello world"; $array = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; $array_new = array_flip($array); for ($i = 0; $i < mb_strlen($in_glass); $i++) < $char = mb_strtolower(mb_substr($in_glass, $i, 1)); foreach ($array_new as $val =>$value) < if ($char == $val) < $char = $value+1; break; >> $result .= $char; > print $result;
На сколько я знаю, нельзя просто пробежать по слову циклом, нужно брать функции, которые вытаскивают букву посимвольно, например mb_substr Если расматривать изначальную задачу: "как можно заменить каждую букву в $x на рандомную цифру от 1 до 100?", то вот так:
$in_glass = "Hello world"; $array = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; for ($i = 0; $i < mb_strlen($in_glass); $i++) < $char = mb_strtolower(mb_substr($in_glass, $i, 1)); foreach ($array as $val) < if ($char == $val) < $char = rand(0,100); break; >> $result .= $char; > print $result;
Ответ: 7681812846639 69262692966374
При данном методе не надо учитывать пробелы, знаки препинания и спец символы.