XKCD: Anomalie zacierania klawiatury

16

Kolejny konkurs inspirowany XKCD . Ten oparty jest na Keyboard Mash .

Biorąc pod uwagę ciąg wejściowy, zidentyfikuj anomalne znaki, zakładając, że większość została napisana w jednym wierszu standardowej klawiatury amerykańskiej QWERTY . Ciągi wejściowe mogą zawierać przesunięte klawisze, ale nie będą zawierać znaków powrotu karetki (Enter), znaków, znaków CTRL / ALT, spacji, tabulatorów i spacji (ponieważ byłoby to głupie). Klawiatura numeryczna nie będzie uważana za część klawiatury w tym wyzwaniu.

Wyzwanie polega na wyprowadzeniu znaków, które nie znajdują się w tym samym rzędzie klawiatury, co większość pojedynczych znaków w jednym ciągu. Dane wyjściowe powinny zawierać każdy anomalny znak tylko raz i żadnych innych znaków.

W przypadku równej liczby anomalnych znaków w dwóch lub więcej wierszach rozstrzygnięcie remisu jest ustalane w następującej kolejności:

  • Najkrótsza unikalna lista
  • Najwyższy rząd

Wejście

Ciąg znaków przez STDIN, ARGV lub parametr funkcji

Wynik

Ciąg znaków do STDOUT lub funkcja return. Każda anomalna postać powinna mieć tylko jeden raz, ale nie trzeba jej zamawiać.

Przykłady

Wejście: FJAFJKLDSKF7KFDJ
Wyjście: 7

Wejście: ASDF11111
Wyjście: ASDF

Dane wejściowe: lkjrhsDdftkjhrksRjd Dane
wyjściowe: rtR

Wejście: } * 3% i 2098 @ 2k234 # @ $ M
Wyjście: }

Zwrócona lista najwyższych wierszy Dane
wejściowe: ASD! @ #
Wyjście Vcx:! @ #

Zwrócono najkrótszą unikalną listę Dane
wejściowe: ASdf1233qwER Dane
wyjściowe: 123

Zwrócono najwyższą najkrótszą listę
Wejście: 12334QWTTSDFDSXVVBBX
Wyjście: QWT

To jest golf golfowy, więc wygrywa najkrótszy wpis.

MickyT
źródło

Odpowiedzi:

8

CJam, 111 89 88 86 84 83 bajtów

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

Wypróbuj online w interpretatorze CJam .

Jak to działa

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
źródło
8

CJam, 90 88 86 84 83 bajtów

To tylko prosta implementacja.

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

Wypróbuj online tutaj . Pastebin

Optymalizator
źródło