Es muy difícil recordar mi contraseña, así que se me ocurrió una forma de generar una contraseña.
La forma en que genero mi contraseña es a partir de una palabra o una oración, siguiendo estos pasos:
Comience de izquierda a derecha
Encuentra el recuento de cada letra
Poner la letra con su recuento en un orden
Las letras con mayor repetición estarán al final
Las letras con la misma repetición se ordenarán alfabéticamente.
Se ignorarán los números y las letras especiales, incluidos los espacios en blanco (por ejemplo, se ignoran 9, 4, @, (, *, etc.)
Grupo de letras ignorando mayúsculas y minúsculas. En la salida, use el caso de la última aparición en la entrada
- El recuento de la letra puede ser cualquier número, por ejemplo, 5H17M345K
- Si la entrada es todos números o letras especiales, entonces la salida será una cadena vacía, por ejemplo, Entrada "12 $ * 34 ^! luego salida ""
- cuando el orden alfabético para el mismo caso no importa, por ejemplo, 1a1B1c
Ejemplo:
Input: Kitkat Tango
(2k / 1i / 3T / 2a / 1n / 1g / 1o)
Output: 1g1i1n1o2a2k3T
Otro ejemplo:
Input: Database Partitions Task
(1D / 5a / 4T / 1b / 3s / 1e / 1P / 1r / 2i / 1o / 1n / 3s / 1k)
Output: 1b1D1e1k1n1o1P1r2i3s4T5a
Nota: las letras con 1 repetición están ordenadas alfabéticamente al principio y luego las letras con más repeticiones
Este es el código de golf , el código más corto gana.
fuente
1.
agregar al menos 1 caso de prueba que incluya más de 9 ocurrencias de una o más letras,2.
especifique que la salida debe ser una cadena (aunque recomiendo encarecidamente que no sea tan estricto; no agrega nada al desafío ),3.
especifique que debemos ser capaces de manejar entradas que no contengan letras y4.
aclare si necesitamos o no manejar una cadena vacía como entrada.1
. Además, en el futuro podría considerar usar nuestro Sandbox para tratar de resolver problemas como estos antes de publicar un desafío.Respuestas:
Japt v2.0a0
-P
, 14 bytesIntentalo
fuente
05AB1E ,
191716 bytesGuardado 1 byte gracias a Kevin Cruijssen
Pruébalo en línea! o como un conjunto de pruebas
Explicación
fuente
‚
(par con) a a«
(concat / merge), de modo queJ
se pueda eliminar uno de los dos s (combinaciones).J
dentro? Editar: En realidad, los necesitaba como pareja en la versión de 19 bytes y no pensé en cambiarlo cuando hice el 17: PJ
oin, dependiendo de la respuesta a esta preguntaC # (compilador interactivo de Visual C #) , 105 bytes
Pruébalo en línea!
Gracias a dana por reducirlo a 105 bytes desde 138 bytes.
fuente
.OrderBy(a=>a)
?Perl 6 ,
6663 bytesPruébalo en línea!
Explicación
fuente
Retina ,
67664139 bytes-25 bytes y una pequeña corrección de errores gracias a @Neil .
-2 bytes gracias a @Neil y @Shaggy juntos.
Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
Elimine todo excepto las letras mayúsculas y minúsculas:
es decir,
Kitkat Tango 123!
→KitkatTango
Ordene las letras individuales sin distinción entre mayúsculas y minúsculas ( gracias a @MartinEnder por esto ):
es decir,
KitkatTango
→aagiKknottT
Captura cada trozo de mayúsculas y minúsculas letras repetidas adyacentes:
es decir
aagiKknottT
→ [aa
,g
,i
,Kk
,n
,o
,ttT
]Anteponer la longitud de cada partido, y sólo mantener la última letra de cada trozo:
es decir [
aa
,g
,i
,Kk
,n
,o
,ttT
] →2a1g1i2k1n1o3T
Clasifique los números y grupos de letras según los números:
2a1g1i2k1n1o3T
→1g1i1n1o2a2k3T
Después de lo cual el resultado se emite implícitamente.
fuente
"aA" < "aa"
)\w
y.
enO`\w.
se usaron para indicar que estamos ordenando pares de caracteres. No estoy seguro de si podemos ordenar cada par de caracteres, pero solo lo hacemos en función del primer carácter. Pero bueno, la sugerencia de Martin de ordenar cada personaje en función de una sustitución (que es la variante en minúscula del partido) funciona como un encanto. :)\P{L}
podría funcionar, lo que ahorra 2 bytes.Wolfram Language (Mathematica) ,
102969387 bytesPruébalo en línea!
fuente
Pyth,
272422 bytesPruébelo en línea aquí .
Editar: Golfed 3 bytes ordenando por carácter antes del grupo, versión anterior:
sm+ldedo,lNr0eN.gr0kf}r0TGQ
Edición 2: Golfed otros 2 bytes formateando la salida antes de cualquier pedido, versión anterior:
sm+ldedlD.gr0krD0f}r0TGQ
Edición 3: Golfed otro byte cambiando el filtro, gracias a @FryAmTheEggman. También tuve que corregir un error cuando OP aclaró que una sola letra puede aparecer más de 9 veces, lo que agregó un byte en: o (Versión anterior:
srD0m+lded.gr0kf}r0TGQ
fuente
APL (Dyalog Extended) , SBCS de 28 bytes
Función de prefijo tácito anónimo.
Pruébalo en línea!
'\PL'
⎕R
PCRE R sin letras reemplazadas con''
cadenas vacías(
...)
aplique la siguiente función tácita:⌊
con las minúsculas como teclas,...
⌸
aplique la siguiente función tácita a cada tecla y su conjunto de valores correspondiente, a saber,⊢
el argumento:(
...)
aplique la siguiente función tácita⍤
a⊢
la lista de valores:⊢/
el último valor...
,
anteponga lo siguiente a eso:⍕
la stringificación⍤
de≢
la cuenta⊂
encierre (para tratar la lista de caracteres como una sola cadena)∊
ε nlist (aplanar)⍤
la∧
versión ordenados-ascendente de esefuente
Perl 5,
746866 bytes-6 bytes cambiando
-p
a-n
y utilizarsay
en lugar de$_=join"",
-2 bytes gracias a Abigail utilizando\pL
en lugar de[a-z]
TIO
59 bytes, en caso de que no haya más de 9 ocurrencias de cada carácter
fuente
Python 2 , 116 bytes
Pruébalo en línea!
fuente
Database Partitions Task
no es igual a1b1D1e1k1n1o1P1r2i3s4T5a
In the output, use the case of the last occurrence in the input
necesitarás enrfind
lugar defind
para esto....] for
Sin...]for
embargo, puede llegar a compensar eso.Python 3 , 105 bytes
Pruébalo en línea!
-1 gracias a ArBo .
fuente
Haskell ,
114/113105 bytes-9 bytes gracias a Laikoni (usando lista de comprensión y en
(||)
lugar defilter
conelem
& acortarlength
para deshacerse de feozip
)!Pruébalo en línea!
fuente
Rojas ,
220196206 bytesPruébalo en línea!
Gracias a Shaggy por encontrar un error.
fuente
Jalea , 15 bytes
Un programa completo que imprime la contraseña como se especifica (como un enlace monádico produce una lista de listas que contienen un número entero y un carácter).
Pruébalo en línea!
fuente
Cáscara , 15 bytes
No hay problemas con las importaciones cuando se utiliza la cáscara, por lo tanto, pueden hacer uso de las diversas funciones útiles, tales como
groupOn
,sortOn
,toLower
etc:¡Pruébalo en línea o pruébalos todos!
Explicación
fuente
JavaScript (Node.js) , 127 bytes
Pruébalo en línea!
parseInt(numberAsString, radix)
intentará analizar un entero al comienzo de la cadena. Por ejemplo,parseInt('120px', 10)
generará 120. Cuando el análisis falló, regresa en suNaN
lugar. Conectamos un'0'
al principio de cada personaje para que regrese0
para cualquier carácter alfa numérico. Y podemos ordenar las mismas letras juntas y caracteres no alfa al principio por este algoritmo.sort
yjoin
,"Hello world!123"
se convertiría" !123deHllloorw"
. Una coincidencia contra/([a-z])\1*/ig
ignorará cualquier carácter no alfa y dividirá la cadena en trozos con las mismas letras. `.map
convertir"aaa"
a"3a"
lo requerido en la pregunta."3b"
sería menor que"12a"
en la base 36, tal como esperamos: compara los recuentos primero (n div 36
) y compara la letra más tarde (n mod 36
).join
ellos juntos.JavaScript (Node.js) , 146 bytes
Pruébalo en línea!
fuente
f=
. El primero solía ser más corto. Pero obtiene 4 bytes más ya que OP preguntó que la salida puede ser una cadena vacía. Y solo los mantuve allí ...Java 10,
223209301 bytes+92 bytes como una solución para entradas con más de 9 de una sola letra. Veré si puedo volver a bajar eso con un enfoque diferente.
Pruébalo en línea.
Explicación:
fuente
Scala , 103 bytes
Pruébalo en línea!
fuente
Swift 4.2.1 / Xcode 10.1 ,
105410501048370368364 bytesPruébalo en línea!
@KevinCruijssen también eliminó algunos espacios.
fuente
false
a0>1
ytrue
a1>0
. Pruébelo en línea 1027 bytes . Probablemente se pueda jugar mucho más, como el duplicadoif let v=$0.key.escaped(asASCII:0>1).lowercased().unicodeScalars.first?.value{return v<$1.key.value}else{return 0>1}
que tienes, pero se lo dejaré a alguien que realmente conozca a Swift.true
yfalse
de mi respuesta.=
-assigns: Pruébelo en línea 364 bytes . ¡Disfruta tu estancia! :)Carbón , 30 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Ejecute el alfabeto en minúsculas y encuentre el recuento de caracteres más alto en la entrada en minúsculas. Recorrer el rango implícito. (El ciclo en realidad va de
0
a,n-1
así que tengo que incrementar la variable del ciclo en cada uso).Pase el alfabeto en minúsculas nuevamente.
Si el recuento de la letra actual es igual al valor del bucle externo ...
Concatene el recuento actual con la última aparición de la letra actual e imprima implícitamente.
fuente
Jalea , 14 bytes
Pruébalo en línea!
Programa completo
fuente
NodeJS, 299 bytes, -6 bytes gracias a @tsh
¡No es tan bello pero funciona!
Javascript (ES8) (Firefox o Chrome), 294 bytes, -1 byte gracias a @tsh
Con el nuevo
.flat
método, puedo guardar 10 bytes:Pruebe esto en línea: https://repl.it/repls/ConcernedHorribleHypothesis
fuente
.replace
x 3 veces ->[R='replace]
y[R]
x 2 veces.charCodeAt(0)
->.charCodeAt()
(0
es el valor predeterminado)R ,
131129 bytesPruébalo en línea!
fuente
Julia 1.0 , 158 bytes
Versión original sin golf con la misma lógica:
Pruébalo en línea!
fuente
Perl 6,
8682 bytesfuente