[Ruby] Leet 문자열의 해법은 다양합니다.
이른바 리트 문자열
leet(Let, 1337, l33t)은 주로 영어권에서 인터넷에서 사용하는 자모의 표현법이다.
예를 들어'Warez'라는 단어를 leet으로 표시하면W@rez","W4r3z"등 일부 자모는 모양이 비슷한 아라비아 숫자나 기호 등으로 변한다.
왠지 매운 여자 문자랑 (지금은 모르지만) 통하는 게 있는 것 같아요?이렇게 생각하면서 웃어요.
연습 문제
문제.
리트라는 인터넷 속담이 있어요.
Leet의 몇 개의 자모는 비슷한 모양의 다른 문자로 대체되어 있다.리트의 교체 규칙은 매우 많으니 여기서 다음 교체 규칙만 고려하자.
교체 전-교체 후
A→4
E→3
G→6
I→1
O→0
S→5
Z→2
문자열(표준 입력)을 입력한 후 Leet 출력으로 변환하는 프로그램을 입력하십시오.
입력 예 1
PAIZA
출력 예 1
P4124
tr 메서드 사용
str = gets.chomp
puts str.tr('AEGIOSZ', '4361052')
사용 방법은 文字列のインスタンス.tr("変換したい文字", "置き換え文字")
와 같이 각각 색인 위치가 일치하는 문자로 대체한다.tr방법을 모르면 사용할 수 없습니다. 이것이 가장 간단합니다.
후술한 gsub 방법보다 더 빠른 보도도 발견됐다.
gsub 방법 사용하기 (정규 표현식 사용)
LEET_TABLE = {
"A" => "4",
'E' => '3',
'G' => '6',
'I' => '1',
'O' => '0',
'S' => '5',
'Z' => '2'
}
def leet(str)
str.gsub(/[AGIOSZ]/, LEET_TABLE)
end
str = gets.chomp
puts leet(str)
정규 표현식을 사용할 때 文字列.gsub(/正規表現/, 正規表現に該当した箇所を置換した後の文字列)
와 같다.정규 표현식
文字列.gsub(置換したい文字列, 置換後の文字列)
을 사용하지 않는다면 이번에는 어떻게 사용해야 하나요?해 보았지만 성공하지 못했다😵참고로sub 방법은 처음에 일치하는 부분만 바꾼 것 같습니다.
힘을 쓰다
방법이 없어도 돼!
복잡하고 길었네요.
str= gets.split('').map(&:chomp)
leet =''
str.each do |i|
case i
when 'A'
leet << '4'
when 'E'
leet << '3'
when 'G'
leet << '6'
when 'I'
leet << '1'
when 'O'
leet << '0'
when 'S'
leet << '5'
when 'Z'
leet << '2'
else
leet << i
end
end
puts leet
Reference
이 문제에 관하여([Ruby] Leet 문자열의 해법은 다양합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/furum/articles/8a1b2e8f9b338d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)