Sorprendentemente, no hemos tenido un simple "encontrar el dígito más alto" desafío todavía, pero creo que es un poco demasiado trivial.
Dada la entrada de un entero no negativo, devuelve el dígito único más alto (es decir, no repetido) encontrado en el entero. Si no hay dígitos únicos, su programa puede hacer cualquier cosa (comportamiento indefinido).
La entrada se puede tomar como un entero entero, una cadena o una lista de dígitos.
Casos de prueba
12 -> 2
0 -> 0
485902 -> 9
495902 -> 5
999999 -> Anything
999099 -> 0
1948710498 -> 7
Este es el código de golf, por lo que gana menos bytes en cada idioma .
Respuestas:
05AB1E ,
43 bytesSe guardó 1 byte gracias al Sr. Xcoder que notificó que una lista de dígitos es una entrada válida.
Pruébalo en línea!
Explicación
fuente
2
no es verdad; solo1
? : oPython 3 , 40 bytes
Guardado 2 bytes gracias a movatica .
Pruébalo en línea!
42 bytes
Funciona tanto para String como para tipos de parámetros de lista de dígitos. Lanza un error sin dígitos únicos, tipo de abusos de esa especificación:
Pruébalo en línea!
Explicación
lambda i:
- Declara una función lambda con una cadena o una lista de dígitos parámetro i.max(...)
- Encuentra el valor máximo del generador.x for x in i
- Itera a través de los caracteres / dígitos dei
.if i.count(x)<2
- Comprueba si el dígito es único.fuente
lambda i:max(x*(i.count(x)<2)for x in i)
Alice , 15 bytes
Pruébalo en línea!
Explicación
Este es un marco simple para código lineal que opera completamente en modo Ordinal (lo que significa que este programa funciona completamente a través del procesamiento de cadenas). El código lineal desplegado es simplemente:
Que hace:
fuente
Retina , 16 bytes
Pruébalo en línea!
Explicación
Ordenar los dígitos.
Eliminar dígitos repetidos.
Obtenga el último dígito (máximo).
fuente
Carbón ,
1812 bytesPruébalo en línea! (Enlace a la versión detallada)
No imprime nada si no se encuentra una solución. El truco es que el
for
bucle imprime cada número único en la cadena de entrada, pero sin mover el cursor, por lo tanto, el valor sigue reimprimiéndose hasta que se encuentra la solución final.La versión anterior imprimió los caracteres de la A a la Z cuando no se encontró una solución, de ahí los comentarios:
Pruébalo en línea! (Enlace a la versión detallada)
fuente
Casco , 7 bytes
Pruébalo en línea! (Conjunto de pruebas, se bloquea en el último caso de prueba ya que no tiene dígitos únicos)
Esta es una composición de funciones en estilo libre de puntos (los argumentos no se mencionan explícitamente en ninguna parte). Toma la entrada y devuelve la salida como una cadena, que en Husk es equivalente a una lista de caracteres.
Explicación
* La verificación de la longitud 1 se realiza tomando el encabezado de la lista (todos los elementos excepto el último) y negándolo (las listas vacías son falsas, las listas no vacías son verdaderas).
fuente
Haskell, 37 bytes
Pruébalo en línea!
Cómo funciona:
fuente
R , 41 bytes
Una función anónima que toma una lista de dígitos, ya sea como enteros o cadenas de caracteres individuales. Precalcula
y
como argumento opcional para evitar el uso de llaves para el cuerpo de la función. Devuelve el dígito como una cadena. ¡Esto toma un enfoque ligeramente diferente al de la otra respuesta R y termina siendo el más pequeño! Parece que mi comentario fue incorrecto después de todo ...table
calcula las ocurrencias de cada elemento en la lista, connames(table(x))
los valores únicos enx
(como cadenas). Dado que, afortunadamente, los dígitos se ordenan de la misma forma lexicográfica que numérica, aún podemos usarlosmax
.Pruébalo en línea!
fuente
table
fuera más corto (además, nunca recuerdo cómo llegarnames
al trabajo).<2
por otro byte Nunca debe haber un cero en los recuentos.y=table(scan());max(names(y[y<2]))
es unos pocos bytes más corto.JavaScript (ES6),
464140 bytesToma la entrada como una cadena. Devuelve RangeError si no hay dígitos únicos.
-7 bytes gracias a Rick Hitchcock
-1 byte gracias a Shaggy
Casos de prueba
Mostrar fragmento de código
fuente
(s,i=9)=>s.split(i).length-2?f(s,--i):i
. Puede evitar el desbordamiento de pila de 42 bytes:(s,i=9)=>s.split(i).length-2?i&&f(s,--i):i
.s=>g=(i=9)=>s.split(i).length-2?g(--i):i
y luego llámelo conf("12")()
Python 3, 40 bytes
Solo funciona para listas de dígitos. El caso de borde '990' funciona bien :)
Pruébalo en línea!
fuente
Brachylog , 8 bytes
Pruébalo en línea!
Explicación
fuente
Casco ,
98 bytesGracias a Leo por sugerir una solución un poco más ordenada con el mismo número de bytes.
Pruébalo en línea!
Explicación
fuente
¬←
podría ser más simple=1
, el mismo bytecount :)Mathematica, 41 bytes
gracias @Martin Ender
aquí está el enfoque de Martin en mi respuesta
Mathematica, 35 bytes
fuente
R,
4543 bytesfunction(x)max(setdiff(x,x[duplicated(x)]))
Pruébalo en línea!
Toma la entrada como un vector de enteros. Encuentra los elementos duplicados, los elimina y toma el máximo. (Regresa
-Inf
con una advertencia si no hay un máximo único).Editado en una función anónima por comentario
fuente
max(x[!duplicated(x)])
es bastante más corto, pero esta es una gran respuesta. Sabía que lo que iba a hacer no era tan bueno. También puede eliminarf=
desde el principio, ya que las funciones anónimas son respuestas perfectamente válidas. Además, puede usar TIO para probar sus funciones si usa este formato: ¡ Pruébelo en línea!duplicated
pero en realidad pensé en otra respuesta más corta!Ruby , 42 bytes
Pruébalo en línea!
fuente
->x{x.chars.select{|r|x.count(r)<2}.max}
APL (Dyalog Unicode) , 10 caracteres = 19 bytes
Método: multiplique elementos que ocurren varias veces por cero y luego multa el elemento más alto.
⌸
para cada elemento único y sus índices en el argumento:×
multiplicar el elemento único∘(
...)
con:1=
el booleano para saber si uno es igual a≢
el recuento de índices (cuántas veces se produce el elemento único)⌈/
el máximo de esoPruébalo en línea!
APL (Dyalog Classic) , 15 bytes
Pruébalo en línea!
Idéntico a lo anterior, pero utiliza en
⎕U2338
lugar de⌸
.fuente
Bash + coreutils,
3028 bytes-2 bytes gracias a Digital Trauma
Pruébalo en línea!
Bash + coreutils, 20 bytes
Pruébalo en línea!
Si la entrada se proporciona como una lista de dígitos, uno por línea, podemos omitir la etapa de plegado. Sin embargo, eso se siente como hacer trampa.
fuente
grep -o .
confold -1
para guardar 2 bytes. Estoy de acuerdo en que un entero de entrada dado como una lista de dígitos está estirando demasiado las reglas.Python 2 , 39 bytes
Pruébalo en línea!
fuente
C # (.NET Core) ,
279786585775 bytesPruébalo en línea!
Gracias @CarlosAlejo
fuente
using System.Linq;
al conteo de bytes.OrderBy(...).Last()
lugar de.OrderByDescending(...).First()
, por ejemplo. O incluso mejor, cambie su última parte.Max(i=>i.Key)
después de laWhere
cláusula.JavaScript (ES6),
5250 bytesToma la entrada como una lista de dígitos. Devuelve
0
si no hay dígitos únicos.Casos de prueba
Mostrar fragmento de código
fuente
Japt ,
121110 bytesToma la entrada como una matriz de dígitos.
Pruébalo
Explicación
fuente
Java (OpenJDK 8) ,
898579 bytesPruébalo en línea!
-6 bytes gracias a la idea de @ KevinCruijssen!
fuente
return i>0?i:0;
conreturn i;
. La salida será -1 para el caso de prueba[9,9,9,9,9,9]
, pero eso está bien con el desafío: " Si no hay dígitos únicos, su programa puede hacer cualquier cosa (comportamiento indefinido) ".0
. ¡Es algo que supervisé en el golf anterior! :)APL (Dyalog) , 14 bytes
-2 gracias aTwiNight.
⌈/
el más grande de⊢
los argumentos×
multiplicado por1=(
...)
el booleano para cada uno donde uno es igual+/
la fila suma de∘.=⍨
su tabla de igualdadPruébalo en línea!
fuente
0
nunca es el dígito único más alto, excepto por0
sí mismo, puede guardar 1 byte usando en×
lugar de/⍨
, luego guardar otro byte convirtiéndolo en un trenPHP , 40 bytes
Pruébalo en línea!
PHP , 42 bytes
Pruébalo en línea!
fuente
<?=array_flip(count_chars($argn))[1]-48;
Java (JDK) , 67 bytes
Pruébalo en línea!
fuente
Mathematica, 42 bytes
fuente
F # , 88 bytes
Pruébalo en línea!
Un enfoque mejorado desde mi primer esfuerzo, resulta en menos bytes.
Puntos de interés:
fst
ysnd
devolver el primer y el segundo elemento de una tupla respectivamente.fuente
Jalea , 9 bytes
Pruébalo en línea!
fuente
Pyth, 6 bytes
Banco de pruebas
Explicación:
fuente
Perl 5 , 59 bytes
Pruébalo en línea!
fuente
-F
bandera en perlrun si es necesario)