Confunda o corretor ortográfico do Word!


12

Sua tarefa é criar um programa que receba uma entrada de uma palavra de qualquer tamanho, na fonte Calibri. Essa palavra será composta de caracteres de letras encontrados em um teclado QWERTY normal. Não haverá acentos ou outros caracteres (por exemplo, pontuação, números etc.).

Portanto, os caracteres originais são:

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

O programa embaralha-o para alterar os caracteres para que pareçam iguais ou exatamente iguais, o que provavelmente confundiria um verificador ortográfico ao sinalizá-lo, mas isso me confundiria como se parece com a palavra normal, com o caractere inalterado.

Um exemplo disso é o caractere Unicode U+0430, letra minúscula cirílica a ("а"), que pode parecer idêntico ao caractere Unicode U+0061, letra minúscula latina a, ("a"), que é a letra minúscula "a" usada em inglês.

Outro exemplo são as letras russas а, с, е, р, х e y que possuem equivalentes ópticos no alfabeto latino básico e parecem próximas ou idênticas a a, c, e, o, p, xe y.

Regras:

  1. O programa tem que trabalhar com caracteres semelhantes. Isso significa que eles não podem ser armazenados de qualquer forma . Isso significa que o valor Unicode ou o próprio caractere.
  2. Este é um código de golfe - a resposta mais curta ganha!
  3. Você também deve postar a versão não destruída para evitar trapaças que não podem ser detectadas quando o jogo é jogado!
  4. Você pode usar qualquer função ou programa para fazer isso, desde que as palavras também não sejam armazenadas.
  5. Você deve usar UTF-8. Outras entradas e saídas são proibidas. Isso é para que eu possa realmente ler o que você está produzindo e o que estou inserindo, para não ter uma massa aleatória de quadrados, pontos de interrogação e outras pontuações aleatórias!
  6. Tem que trabalhar com qualquer palavra que eu insira.

Um exemplo de trabalho (copie e cole isso no word e insira um espaço depois, ele deve sinalizar o segundo e não o primeiro.)

Halim 
Hаlim  

Algumas informações úteis estão aqui

Boa sorte! Início


1
Eu acho que este é um ótimo candidato para o código-golfe em vez do concurso de popularidade .
ProgrammerDan

@ProgrammerDan a pergunta com isso como código-golfe é: quantos caracteres precisam ser substituídos e quão diferentes eles podem procurar uma resposta para ser válida?
Martin Ender

1
Em qualquer um dos casos, uma definição de "confundir o corretor ortográfico" seria legal. Qual verificador ortográfico? Além disso, qual é o nosso alfabeto de entrada? Alfabeto de saída? Eu recomendo que você especifique uma ferramenta popular de verificação ortográfica online e especifique uma codificação, como UTF-8.
Rainbolt

Tenho tido seus comentários a bordo e mudou algumas coisas - Obrigado pelo conselho :)
George

Esta teria sido uma ótima brincadeira dos enganados, se eu tivesse perguntado isso há alguns dias!
George

Respostas:


12

JavaScript, 71 caracteres

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

Experimente no JSFiddle.

A propósito, isso seria um pouco mais curto no CoffeeScript ( 53 caracteres )

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

EDIT: Acabei de notar que o requisito UTF-8. Isso vai ser difícil em JavaScript. : - /


Não diminua o voto desta resposta - ela é boa, mas foi postada antes que as regras mudassem um pouco. Você também precisa inserir uma palavra e ela não pode ser codificada. Desculpe.
George #

@ GeorgeH bem, a função aceita qualquer texto arbitrário (não apenas palavras simples). É apenas o JSFiddle que mostra o uso com um exemplo específico.
Martin Ender

1
Oh, desculpe, eu nunca usei o JSFiddle antes! Sua palavra realmente confusa agora - pensa que Georgeé Egrete outras coisas!
George

5
Hmm ... eu escolhi aleatoriamente algumas palavras para testar sua função, mas ele não funciona ... As palavras que eu escolhi foram level, rotor, racecar, refere kayak.
precisa saber é o seguinte

1
@ace Touché. : P
Martin Ender

9

Python3 - 51

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

O caminho preguiçoso!

Ligeiramente não-destruído

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

Por favor, você pode postar uma versão não destruída? Obrigado!
George George

Feito, ele deve ser auto-explicativa :)
LemonBoy

Se você usá-lo em IDLE você pode remover o print()- que vai imprimi-lo de qualquer maneira
chill0r

Você pode salvar um byte alterando o número hexadecimal FEE0 para um número decimal (65248).
0JJxW9FMN

8

Lisp comum, 142

Não tenho nenhuma fonte chamada Calibri, e a maioria das minhas fontes não possui esses símbolos, mas o DejaVu Sans os possui. Substituo letras por símbolos alfanuméricos matemáticos . O verificador ortográfico não sinaliza nenhum erro. Em vez disso, ele falha em detectar erros, mesmo que as palavras tenham erros óbvios.

Golfe:

(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))))))

Ungolfed:

(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))))))

Uso

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

Suponho que seu intérprete Lisp tenha suporte a Unicode e sua localidade seja UTF-8. Não use abcl, pois possui problemas fora do Plano Multilíngue Básico.

Clones Unix: você pode executar localeem um terminal. Se a linha para LC_CTYPE não mencionar UTF-8, tente export LC_CTYPE=en_US.UTF-8.

Exemplo

Eu colei alguma saída no LibreOffice. Meu texto possui erros ortográficos óbvios, mas o LibreOffice não consegue detectá-los. Não desenha rabiscos vermelhos sob as palavras, e o botão de verificação ortográfica apenas informa: "A verificação ortográfica está concluída".

LibreOffice

O texto é "𝖭𝗈𝗐𝗐 𝗂𝗓 𝗍𝖾𝗁 𝗍𝗍𝗂𝗆𝖾 𝖿𝗈𝗈𝗋 𝖺𝗁𝗅 𝗀𝗎𝖽 𝗍𝗍𝗈 𝖼𝗈𝖾𝗆 𝗍𝗍𝗈 𝗍𝖾𝗁 𝖺𝖾𝖽 𝗈𝗏 𝗍𝖾𝗋𝖾". O Firefox também não encontra erros de ortografia neste texto.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.