XKCD: Keyboard Mash Anomalies


16

Un'altra competizione ispirata a XKCD . Questo è basato su Keyboard Mash .

Data una stringa di input, identifica i caratteri anomali, supponendo che la maggior parte sia stata digitata su una singola riga della tastiera QWERTY US standard . Le stringhe di input possono contenere sequenze di tasti spostate, ma non conterranno ritorni a capo (Invio), caratteri, spazi, tabulazioni e spazi posteriori interessati da CTRL / ALT (perché sarebbe sciocco). Il tastierino numerico non verrà considerato come parte della tastiera per questa sfida.

La sfida consiste nell'output dei caratteri che non si trovano sulla stessa riga di tastiera della maggior parte dei singoli caratteri nella singola stringa. L'output deve contenere ogni carattere anomalo solo una volta e nessun altro carattere.

Nel caso di un conteggio uguale di caratteri anomali su due o più righe, il pareggio viene determinato in questo ordine:

  • Elenco univoco più breve
  • In alto più fila

Ingresso

Una stringa tramite STDIN, ARGV o un parametro di funzione

Produzione

Una stringa di STDOUT o un ritorno di funzione. Dovrebbe avere ogni carattere anomalo solo una volta, ma non deve essere ordinato.

Esempi

Ingresso: FJAFJKLDSKF7KFDJ
Uscita: 7

Ingresso: ASDF11111
Uscita: ASDF

Ingresso: lkjrhsDdftkjhrksRjd
Uscita: rtR

Input: } * 3% e 2098 @ $ 2k234 # @ $ M
Output: }

Elenco delle righe più in alto restituito
Input: ASD! @ # Vcx
Output :! @ #

Elenco univoco più breve restituito
Input: ASdf1233qwER
Output: 123

Elenco più breve più breve restituito
Input: 12334QWTTSDFDSXVVBBX
Output: QWT

Questo è il golf del codice, quindi vince l'ingresso più breve.

Risposte:


8

CJam, 111 89 88 86 84 83 byte

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

Provalo online nell'interprete CJam .

Come funziona

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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.