단어 맞춤법 검사기를 혼동하십시오!


12

당신의 임무는 Calibri 글꼴로 어떤 길이 의 단어 를 입력하는 프로그램을 만드는 것 입니다. 이 단어는 일반적인 QWERTY 키보드에서 볼 수있는 문자로 만들어집니다. 악센트 나 다른 문자 (예 : 문장 부호, 숫자 등)는 없습니다.

따라서 원래 문자는 다음과 같습니다.

ABCDEFGHIJKLMNOPQRSTU VWXYZ

그런 다음 프로그램은 문자를 변경하여 유사하거나 정확하게 동일하게 보이도록 스크램블하여 철자 검사기를 플래그 지정하여 혼동시킬 수 있지만 변경되지 않은 문자와 함께 일반 단어와 동일하게 보일 때 혼동됩니다.

예를 들어, 유니 코드 문자 U+0430키릴 문자 소문자 ( "а") U+0061는 영어에서 사용되는 소문자 "a"인 유니 코드 문자 소문자 라틴어 문자 ( "a")와 동일하게 보일 수 있습니다 .

또 다른 예는 러시아어 문자 а, с, е, о, р, х 및 у가 기본 라틴 알파벳의 광학 대응 문자를 가지며 a, c, e, o, p, x 및 y와 비슷하거나 비슷하게 보입니다.

규칙 :

  1. 프로그램은 비슷한 문자를 해결해야합니다. 이것은 어떤 형태로도 저장할 수 없음을 의미합니다 . 이는 유니 코드 값 또는 문자 자체를 의미합니다.
  2. 이것은 코드 골프입니다-가장 짧은 답변이 이깁니다!
  3. 골프 때 감지 할 수없는 부정 행위를 피하기 위해 ungolfed 버전도 게시해야합니다!
  4. 단어가 저장되어 있지 않은 한 모든 기능이나 프로그램을 사용하여이 작업을 수행 할 수 있습니다.
  5. UTF-8을 사용해야합니다. 다른 입력 및 출력은 금지됩니다. 이것은 실제로 출력하는 내용과 입력하는 내용을 읽을 수 있도록 임의의 사각형, 물음표 및 randmm punctuati❮n을 갖지 않습니다!
  6. 내가 입력 한 단어와 함께 작동해야합니다.

실제 예 (이 단어를 복사하여 붙여 넣은 다음 공백을 삽입하십시오. 첫 번째가 아닌 두 번째 것을 표시해야합니다.)

Halim 
Hаlim  

유용한 정보가 여기 있습니다

행운을 빕니다! 시작


1
나는 이것이 popular-contest 대신 code-golf 의 훌륭한 후보라고 생각합니다 .
ProgrammerDan

@ProgrammerDan이 가진 골프 골프라는 질문은 얼마나 많은 문자를 교체해야하며 얼마나 다른 문자가 유효한지 답을 찾을 수 있습니까?
Martin Ender

1
두 경우 모두 "맞춤법 검사기 혼동"에 대한 정의가 좋습니다. 어떤 맞춤법 검사기? 또한 입력 알파벳은 무엇입니까? 출력 알파벳? 널리 사용되는 온라인 맞춤법 검사 도구를 지정하고 UTF-8과 같은 인코딩을 지정하는 것이 좋습니다.
Rainbolt

나는 당신의 의견을 보드에 적고 몇 가지 사항을 변경했습니다-조언에 감사드립니다 :)
George

내가 며칠 전에 이것을 물었다면 이것은 만우절 장난이었을 것입니다!
조지

답변:


12

자바 스크립트, 71 자

function f(s){return "\u202E"+s.split("").reverse().join("")+"\u202C";}

JSFiddle에서 사용해보십시오.

그건 그렇고, 이것은 CoffeeScript에서 조금 짧을 것입니다 ( 53 자 )

f=(s)->"\u202E#{s.split('').reverse().join ''}\u202C"

편집 : 방금 UTF-8 요구 사항을 발견했습니다. JavaScript에서는 힘들 것입니다. :-/


이 답변을 공감하지 마십시오. 좋은 답변이지만 규칙이 약간 변경되기 전에 게시되었습니다. 또한 단어를 입력해야하며 하드 코딩 할 수 없습니다. 죄송합니다.
조지

@GeorgeH 잘 함수는 단일 단어뿐만 아니라 임의의 텍스트를 취합니다. 하나의 특정 예제로 사용법을 보여주는 것은 JSFiddle 일뿐입니다.
Martin Ender

1
죄송합니다. JSFiddle을 사용한 적이 없습니다! 그것 정말 지금 말씀을 혼동 - 그것은 생각 George입니다 Egret및 기타 물건!
조지

5
흠 ... 내가 무작위로 기능을 테스트하기 위해 일부 단어를 집어하지만 그렇지 않은 작업을 수행 ... 내가 고른 단어가 있었다 level, rotor, racecar, referkayak.
user12205

1
@ace Touché. : P
Martin Ender

9

파이썬 3-51

print(''.join(chr(ord(c)+0xFEE0)for c in input()))

게으른 길!

약간 골퍼

r=''
for c in input():
    r += chr(ord(c) - 0x20 + 0xFF00) # convert to fullwidth ASCII range
print(r)

ungolfed 버전을 게시 할 수 있습니까? 감사!
George

완료, 그것은 스스로 설명해야합니다 :)
LemonBoy

IDLE에서 사용하는 경우 제거 할 수 있습니다. print()어쨌든 인쇄됩니다
chill0r

16 진수 FEE0을 10 진수 (65248)로 변경하여 1 바이트를 저장할 수 있습니다.
0WJYxW9FMN

8

커먼 리스프, 142

Calibri라는 글꼴이 없으며 대부분의 글꼴에 이러한 기호가 없지만 DejaVu Sans에 있습니다. 문자를 수학 영숫자 기호로 바꿉니다 . 맞춤법 검사기는 오류를 표시하지 않습니다. 대신 단어에 명백한 오타가 있어도 오류를 감지하지 못합니다.

골프 :

(ignore-errors(do(c)(())(setf c(char-code (read-char)))(write-char(code-char(cond((< 64 c 91)(+ c 120159))((< 96 c 123)(+ c 120153))(t c))))))

언 골프 드 :

(ignore-errors      ; Ignore when (read-char) signals end of file.
  (do (c) (())      ; Loop forever with variable c.
    (setf c (char-code (read-char)))
    (write-char
     (code-char
      (cond
         ;; Replace A to Z with U+1D5A0 to U+1D5B9.
         ((< 64 c 91) (+ c 120159))
         ;; Replace a to z with U+1D5BA to U+1D5D3.
         ((< 96 c 123) (+ c 120153))
         ;; Keep other characters.
         (t c))))))

용법

  • clisp asconfuse.lisp <in >out
  • ecl -shell asconfuse.lisp <in >out
  • sbcl --script asconfuse.lisp <in >out

귀하의 Lisp 인터프리터가 유니 코드를 지원하고 로케일이 UTF-8이라고 가정합니다. abcl기본 다국어 평면 이외의 문제가 있으므로을 (를) 사용하지 마십시오 .

유닉스 클론 :locale 터미널에서 실행할 수 있습니다 . LC_CTYPE 행에 UTF-8이 없으면 시도해보십시오 export LC_CTYPE=en_US.UTF-8.

LibreOffice에 일부 출력을 붙여 넣었습니다. 내 텍스트에는 명백한 철자 오류가 있지만 LibreOffice에서 오류를 감지하지 못합니다. 단어 아래에 빨간 구불 구불 한 부분이 없으며 맞춤법 검사 버튼에는 "맞춤법 검사가 완료되었습니다"라는 메시지 만 표시됩니다.

리브레 오피스

텍스트는 "𝖭𝗈𝗐𝗐 𝗂𝗓 𝗍𝖾𝗁 𝗍𝗍𝗂𝗆𝖾 𝖿𝗈𝗈𝗋 𝖺𝗁𝗅 𝗀𝗎𝖽 𝗇𝖾𝗆 𝗍𝗍𝗈 𝖼𝗈𝖾𝗆 𝗍𝗍𝗈 𝗍𝖾𝗁 𝖺𝖾𝖽 𝗈𝗏 𝗍𝖾𝗋𝖾 𝖼𝗈𝗎𝗇𝗍𝗋𝖾𝖾"입니다. Firefox는 또한이 텍스트에서 철자 오류가 없습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.