XKCD: Anomalías de teclado Mash

16

Otra competencia inspirada en XKCD . Este está basado en Keyboard Mash .

Dada una cadena de entrada, identifique los caracteres anómalos, suponiendo que la mayoría se hayan escrito en una sola fila del teclado QWERTY estándar de EE . UU . Las cadenas de entrada pueden contener pulsaciones de teclas desplazadas, pero no contendrán retornos de carro (Enter), caracteres afectados por CTRL / ALT, espacios, tabulaciones y espacios de retroceso (porque eso sería una tontería). El teclado numérico no se considerará parte del teclado para este desafío.

El desafío es generar los caracteres que no están en la misma fila del teclado que la mayoría de los caracteres individuales en la cadena individual. La salida debe contener cada carácter anómalo solo una vez y ningún otro carácter.

En el caso de un recuento igual de caracteres anómalos en dos o más filas, el desempate se determina en este orden:

  • Lista única más corta
  • Superior más fila

Entrada

Una cadena a través de STDIN, ARGV o un parámetro de función

Salida

Una cadena a STDOUT o una función return. Debe tener cada carácter anómalo solo una vez, pero no necesita ser ordenado.

Ejemplos

Entrada: FJAFJKLDSKF7KFDJ
Salida: 7

Entrada: ASDF11111
Salida: ASDF

Entrada: lkjrhsDdftkjhrksRjd
Salida: rtR

Entrada: } * 3% y 2098 @ $ 2k234 # @ $ M
Salida: }

Lista de la fila superior devuelta
Entrada: ASD! @ #
Salida Vcx:! @ #

La lista única más corta devuelta
Entrada: ASdf1233qwER
Salida: 123

La lista más corta más alta devuelta
Entrada: 12334QWTTSDFDSXVVBBX
Salida: QWT

Este es el código de golf, por lo que gana la entrada más corta.

MickyT
fuente

Respuestas:

8

CJam, 111 89 88 86 84 83 bytes

la9*~"{}qwertyuiop ;':asdfghjkl ,./<>?zxcvbnm"{_32^}%_'ÿ,^a\S%+{[f&s\e|__|]:,}$0=&

Pruébelo en línea en el intérprete de CJam .

Cómo funciona

la9*~     e# Push the input 9 times on the stack.

"{}qwertyuiop ;':<STX>asdfghjkl ,./<>?zxcvbnm"

{_32^}%   e# XOR a copy of each character with 32.
_'<DEL>,^ e# Push a string of all ASCII characters that are missing.
a\        e# Wrap it in an array.
S%+       e# Split the string at spaces and concatenate with the array.
{         e# Sort the chunks according to the following:
  [       e#
    f&s   e# Push the string of characters from the input that are in this chunk.
    \e|   e# If the result is empty, replace it with the input.
    __|   e# Push a copy with duplicates removed.
  ]       e# Collect both strings in an array.
  :,      e# Replace each string with its length.
}$        e#
0=        e# Retrieve the minimum.
&         e# Intersect it with the input.
Dennis
fuente
8

CJam, 90 88 86 84 83 bytes

Esta es solo una implementación sencilla.

" qwertyuiop[] asdfghjkl;': zxcvbnm<>?,./"_32f^.\_'¦,^\+S%qf{_@--}{},{__&]:,}$0=_&

Pruébelo en línea aquí . Pastebin

Optimizador
fuente