Basado en esta pregunta de la revisión de código
Dada una cadena no vacía de caracteres ASCII imprimibles, genera el segundo carácter no repetido. Por ejemplo, para entrada DEFD
, salida F
.
Entrada
- Una sola cadena, en cualquier formato adecuado .
Salida
- El segundo carácter que no se repite, cuando se lee de izquierda a derecha, nuevamente en un formato adecuado.
- El carácter de salida no distingue entre mayúsculas y minúsculas.
- Si no existe dicho carácter (por ejemplo, todos los caracteres se repiten), envíe una cadena vacía.
Reglas
- El algoritmo debe ignorar el caso. Es decir,
D
yd
contar como el mismo personaje. - Un programa completo o una función son aceptables.
- La cadena de entrada se garantizará no vacía (es decir, al menos un carácter de longitud).
- La cadena de entrada es ASCII. Cualquier carácter válido podría repetirse, no solo alfanumérico (esto incluye espacios).
- Las lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf, y gana el código más corto (en bytes).
Ejemplos
La entrada está en la primera línea, la salida está en la segunda línea.
DEFD
F
FEED
D
This is an example input sentence.
x
...,,,..,,!@
@
ABCDefgHijklMNOPqrsTuVWxyz
B
AAAAAABBBBB
Thisxthis
This this.
.
Respuestas:
MATL , 11 bytes
Esto sale con un error (permitido por defecto) si no hay un segundo carácter no repetido.
Pruébalo en línea!
Explicación
fuente
Retina , 25 bytes
Pruébalo en línea! (La primera línea permite ejecutar el código en un conjunto de pruebas de varias entradas).
Explicación
Esta es solo una coincidencia de expresiones regulares, siendo la expresión regular:
Es decir, haga coincidir un carácter y asegúrese de que no aparezca en ningún otro lugar de la entrada. El resto es configuración:
i
activa la insensibilidad a mayúsculas y minúsculas.!
le dice a Retina que imprima los partidos en lugar de contarlos.2=
le dice a Retina que imprima solo el segundo partido en lugar de todos.fuente
2=
.05AB1E,
1512 bytesExplicado
Pruébalo en línea
Guardado 3 bytes gracias a @Adnan
fuente
l©v®y¢iy}}1@
:).Python 2,
5958 bytesDevuelve una lista de un solo carácter, o una lista vacía si no hay salida. (Estúpida insensibilidad a las mayúsculas y minúsculas ...)
Pruébalo en línea
fuente
Jalea , 11 bytes
Pruébalo en línea! o verificar todos los casos de prueba .
Cómo funciona
fuente
Lote, 171 bytes
Formulación alternativa, también 171 bytes:
fuente
Pyth,
1615 bytes1 byte gracias a @ mbomb007
Banco de pruebas.
fuente
[1:2]
truco.t<…2
lugar de:…1 2
. Puede guardar otro byte moviendo el=rz1
de su primer uso, si también cambia1
aZ
(por minúsculas en lugar de la salida mayúsculas):t<fq1/zT=rzZ2
.En realidad, 19 bytes
Pruébalo en línea!
Explicación:
fuente
C #,
129128 bytesfunciona bien. Desearía no tener que poner todo en minúsculas
fuente
C # lambda con Linq, 63 bytes
fuente
.Skip(1).First()
con.ElementAt(1)
.ToList()[1]
C #, 141 bytes
Sin descanso (el más pequeño), 135 bytes
Con for (;;), 150 bytes
Ungolfed con comentarios
TuukkaX ha guardado 12 bytes (cambie el conteo a c).
TuukkaX guardó 3 bytes (cambia la cadena a var).
TuukkaX guardó 4 bytes en "With for (;;)" (cambiado while (true) a for (;;)).
TuukkaX guardó 2 bytes (cambió c ++; if (c == 2) a if (++ c == 2)).
Bryce Wagner guardó 14 bytes (cambió x.ToCharArray () a x).
fuente
var
lugar destring
y teniendo algo como enc
lugar decount
.código de máquina x86, 43 bytes
En hexadecimal:
La función toma un puntero a la cadena de entrada en (E) SI y un número entero en (E) DX y devuelve el carácter no repetitivo (E) DX-th o cero si no existe dicho carácter. Como efecto secundario, convierte la cadena en mayúsculas.
Desmontaje
fuente
APL, 32 bytes
Pruébalo || Todos los casos de prueba
Explicación:
Estaba a punto de publicarlo con 16 bytes, pero me di cuenta de que tenía que distinguir entre mayúsculas y minúsculas ...
fuente
(⎕UCS ⍵)+32×⍵∊⎕A
→819⌶⍵
⌶
en general y para el servicio 819 ("819" ≈ "BIg"). Pruébalo en línea!Retina,
4336 bytesPruébalo en línea!
fuente
Mathematica, 49 bytes
Función anónima. Toma una lista de caracteres como entrada. Ignora cualquier error que se genere.
fuente
JavaScript (Firefox 48 o anterior), 60 bytes
Devuelve
undefined
si solo hay cero o uno caracteres que no se repiten. Funciona eliminando entre mayúsculas y minúsculas todas las apariciones de caracteres que aparecen más de una vez en la cadena. Se basa en una extensión de Firefox no estándar que se eliminó en Firefox 49.119Versión de 91 bytes ES6:Busca recursivamente todos los caracteres que aparecen al menos dos veces en la cadena. Si el carácter aparece exactamente dos veces, ambas ocurrencias se eliminan; de lo contrario, solo se elimina la primera ocurrencia (las otras ocurrencias se eliminarán más adelante). Esto permite que las ocurrencias tengan un caso de diferencia.
fuente
m[1]
pornew RegExp(`${m[1]}`,"gi")
J, 25 bytes
Uso
Explicación
fuente
Bash, 58 bytes
Precaución: Esto crea un archivo temporal llamado t . Si ya existe, se sobrescribirá.
fuente
C, 174 bytes
Esta no es la implementación más corta, pero bastante eficiente. En esencia, utiliza una lista de doble enlace para mantener el conjunto ordenado de caracteres candidatos y escanea la cadena de entrada solo una vez. Devuelve el código de caracteres o cero si no se encuentra ninguno.
Una versión un poco sin golf:
fuente
C #, 143 bytes
fuente
TSQL, 128 bytes
Golfizado:
Sin golf:
Violín
fuente
Ruby, 53 bytes
La entrada es STDIN, la salida es STDOUT. En Ruby, las posiciones fuera de índice en una matriz o cadena devuelven
nil
, lo que no se imprime.String#count
es una función extraña en Ruby porque en lugar de contar el número de ocurrencias para la cadena que se pasó, cuenta el número de ocurrencias para cada letra en esa cadena. Suele ser molesto, pero esta vez podemos usarlo para nuestro beneficio.String#swapcase
intercambia letras mayúsculas y minúsculas.Versión anterior que no era segura contra caracteres especiales como
.
- 46 bytesfuente
Java 8,
172157bytes-15 bytes ... Dang, yo era malo jugando al golf en aquel entonces. ;)
Explicación:
Pruébalo aquí
fuente
R , 79 bytes
Pruébalo en línea!
Definitivamente siento que algo se puede jugar aquí. Pero realmente disfruté este desafío.
Esta respuesta divide la cadena en un vector de caracteres, los cambia a minúsculas y los tabula (los cuenta). Los caracteres que aparecen una vez se seleccionan y se comparan con los caracteres dentro del vector mencionado anteriormente, luego el segundo valor verdadero se devuelve como salida. Una cadena vacía o una cadena sin caracteres repetidos genera NA.
fuente
Perl 6 ,
3832 bytes-6 bytes gracias a nwellnhof al cambiar
.comb
a una expresión regular que no distingue entre mayúsculas y minúsculasPruébalo en línea!
fuente
m:g:i/$^a/
por 32 bytes .K (oK) / K4 , 11 bytes
Solución:
Pruébalo en línea!
Explicación:
fuente
Jalea, 15 bytes
Pruébalo en línea!
Verifique todos los casos de prueba. (Ligeramente modificado para atender a todos los casos de prueba)
fuente
Perl, 75 bytes
fuente
Javascript (usando una biblioteca externa) (107 bytes)
Aplasté esto usando una biblioteca que escribí. No estoy seguro si tengo que contar la declaración de la variable "s", que es la cadena en cuestión.
Esto manejará una entrada de cadena vacía, una entrada con solo un carácter que no se repite y una entrada con más de 2 caracteres que no se repiten
fuente
s=> ...
)Clojure, 109 bytes
Ough, espero que haya una manera más sucinta.
fuente