¡Confunde el corrector ortográfico de Word!

12

Su tarea es hacer un programa que tome una entrada de una palabra de cualquier longitud, en la fuente Calibri. Esta palabra estará compuesta de caracteres de letras que se encuentran en un teclado QWERTY normal. No habrá acentos ni ningún otro carácter (es decir, puntuación, números, etc.).

Entonces, los personajes originales son:

ABCDEFGHIJKLMNOPQRSTU VWXYZ

El programa lo codificará para cambiar los caracteres para que se vean similares o exactamente iguales, lo que probablemente confundiría a un corrector ortográfico al marcarlo, pero me confundiría ya que se ve igual que la palabra normal, con el carácter sin cambios.

Un ejemplo de esto es el carácter Unicode U+0430, la letra minúscula cirílica a ("а"), puede verse idéntica al carácter Unicode U+0061, la letra minúscula latina a, ("a"), que es la minúscula "a" utilizada en inglés.

Otro ejemplo son las letras rusas a, с, е, о, р, х yy tienen contrapartes ópticas en el alfabeto latino básico y se ven cercanas o idénticas a a, c, e, o, p, x e y.

Reglas:

  1. El programa tiene que resolver personajes similares. Esto significa que no se pueden almacenar de ninguna forma . Esto significa que el valor Unicode o el carácter en sí.
  2. Este es un código de golf: ¡la respuesta más corta gana!
  3. ¡También debes publicar la versión sin golf para evitar trampas que no se pueden detectar cuando se juega al golf!
  4. Puede usar cualquier función o programa para hacer esto, siempre que las palabras tampoco estén almacenadas allí.
  5. Debe usar UTF-8. Otras entradas y salidas están prohibidas. Esto es para que realmente pueda leer lo que está enviando y lo que estoy ingresando, para que no tenga una masa aleatoria de cuadrados, signos de interrogación y otros signos de puntuación.
  6. Tiene que funcionar con cualquier palabra que ingrese.

Un ejemplo de trabajo (copie y pegue esto en Word e inserte un espacio después, debe marcar el segundo y no el primero).

Halim 
Hаlim  

Alguna información útil está aquí

¡Buena suerte! Empezar

Jorge
fuente
1
Creo que este es un gran candidato para el código de golf en lugar del concurso de popularidad .
ProgramadorDan
@Programmer: ¿La pregunta con esto como code-golf es, cuántos caracteres tienen que ser reemplazados y qué tan diferentes se les permite buscar una respuesta válida?
Martin Ender
1
En cualquier caso, una definición de "confundir al corrector ortográfico" estaría bien. ¿Qué corrector ortográfico? Además, ¿cuál es nuestro alfabeto de entrada? Alfabeto de salida? Le recomiendo que especifique una herramienta de corrección ortográfica en línea popular y especifique una codificación, como UTF-8.
Rainbolt
Tomé sus comentarios a bordo y cambié algunas cosas, gracias por el consejo :)
George
¡Esta habría sido una gran broma de April Fools si hubiera preguntado esto hace unos días!
George

Respuestas:

12

JavaScript, 71 caracteres

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

Pruébelo en JSFiddle.

Por cierto, esto sería un poco más corto en CoffeeScript ( 53 caracteres )

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

EDITAR: Acabo de notar que el requisito UTF-8. Eso va a ser difícil en JavaScript. : - /

Martin Ender
fuente
No desestime esta respuesta, es buena, pero se publicó antes de que las reglas cambiaran ligeramente. También debe ingresar una palabra y no se puede codificar. Lo siento.
George
@GeorgeH bueno, la función toma cualquier texto arbitrario (no solo palabras sueltas). Es solo el JSFiddle que muestra el uso con un ejemplo específico.
Martin Ender
1
¡Oh, lo siento, nunca antes había usado JSFiddle! Su palabra realmente confusa ahora - ¡Piensa que Georgees Egrety otras cosas!
George
55
Hmm ... cogí al azar algunas palabras para probar su función, pero no funciona ... Las palabras que elegí eran level, rotor, racecar, refery kayak.
user12205
1
@ace Touché. : P
Martin Ender
9

Python3 - 51

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

La manera perezosa!

Ligeramente no golfista

r=''
for c in input():
    r += chr(ord(c) - 0x20 + 0xFF00) # convert to fullwidth ASCII range
print(r)
LemonBoy
fuente
¿Puedes publicar una versión sin golf? ¡Gracias!
George
Hecho, debería explicarse por sí mismo :)
LemonBoy 02 de
Si lo usa en IDLE, puede eliminar el print()- lo imprimirá de todos modos
chill0r
Puede guardar un byte cambiando el número hexadecimal FEE0 a un número decimal (65248).
0WJYxW9FMN
8

Lisp común, 142

No tengo una fuente llamada Calibri, y la mayoría de mis fuentes carecen de estos símbolos, pero DejaVu Sans los tiene. Reemplazo letras con símbolos alfanuméricos matemáticos . El corrector ortográfico no marca ningún error. En cambio, no detecta errores, incluso si las palabras tienen errores tipográficos obvios.

Golfizado:

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

Sin golf:

(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

Supongo que su intérprete Lisp tiene soporte Unicode y su ubicación es UTF-8. No lo use abcl, porque tiene problemas fuera del plano multilingüe básico.

Clones de Unix: puede ejecutarse localeen una terminal. Si la línea para LC_CTYPE no menciona UTF-8, intente export LC_CTYPE=en_US.UTF-8.

Ejemplo

Pegué algunos resultados en LibreOffice. Mi texto tiene errores de ortografía obvios, pero LibreOffice no puede detectarlos. No dibuja garabatos rojos debajo de las palabras, y el botón de corrección ortográfica solo informa: "El corrector ortográfico está completo".

LibreOffice

El texto es: "𝖭𝗈𝗐𝗐 𝗂𝗓 𝗍𝖾𝗁 𝗍𝗍𝗂𝗆𝖾 𝖿𝗈𝗈𝗋 𝖺𝗁𝗅 𝗀𝗎𝖽 𝗇𝖾𝗆 𝗍𝗍𝗈 𝖼𝗈𝖾𝗆 𝗍𝗍𝗈 𝗍𝖾𝗁 𝖺𝖾𝖽 𝗈𝗏 𝗍𝖾𝗋𝖾 𝖼𝗈𝗎𝗇𝗍𝗋𝖾𝖾". Firefox tampoco encuentra errores ortográficos en este texto.

kernigh
fuente
5

Dyalog APL , 7 caracteres

∊''∘,¨

Hay un U + FEFF ( Espacio ancho cero sin interrupción , también conocido como BOM Unicode ) entre las comillas. Este carácter aparece en la fuente Calibri. El personaje ''se antepone ,a cada ¨personaje en el argumento, y todo se aplana .

Adán
fuente