Las letras de las palabras quieren justicia.
Decidieron aparecer el mismo número de veces en una oración por igual.
Ejemplo:
Priorities
Se convertirá:
Ppprrioooritttieeesss
Cada letra aparece 3 veces, como la letra más común i
, apareciendo 3 veces.
No importa dónde coloque las letras repetidas, siempre que estén al lado de una letra similar.
Es decir:
Pppriooorritttieeesss
está bien (la letra 'r')
Ppprioororitttieeesss
no está bien (la letra 'r')
Otro ejemplo:
invoice
Se convertirá:
innvvooiccee
Otro ejemplo:
Remittance Advice
Se convertirá:
Rrremmmiitttaannncce Adddvvvice
El espacio, la coma, el signo de interrogación, la cita, etc. no se consideran letras para este desafío. Solo necesita considerar [a-zA-Z]. Solo una vez que el espacio es suficiente, y el orden de las letras debe permanecer igual.
La mayúscula de las letras no importa, las mayúsculas y minúsculas se cuentan como la misma letra. Es decir: Pip
tiene 2 'P's y 1' I ', por lo que se convertirá Piip
.
Es mayúsculas y minúsculas las letras pueden ser de cualquier forma, Piip=piip=piiP=PiiP
Este es el código de golf
fuente
Respuestas:
05AB1E , 16 bytes
Pruébalo en línea!
Explicación
fuente
R , 106 bytes
Pruébalo en línea!
Enfoque de base R:
+
operador Rfuente
Perl 6 , 82 bytes
-3 bytes gracias a nwellnhof
Pruébalo en línea!
Toma una cadena mutable y la modifica en su lugar.
Explicación:
fuente
.=
operador comoa.=lc.=subst(...)
. Sin embargo, no estoy seguro de si está permitido cambiar el caso de una carta existente. También en<:L>
lugar de<:Ll>
.JavaScript (ES6), 112 bytes
Pruébalo en línea!
Comentado
fuente
o[l] = // updates o[l] to a non-numeric value
. Si entiendo correctamente, ¿o
hay una matriz de enteros en las funcionesF
yg
, pero cambia a una matriz de cadenas que contiene una o más veces el carácterc
en la parte que mencioné anteriormente? Además, supongo que los valores deo
sonundefined
por defecto, ya que está utilizando eno[l]=-~o[l]
lugar de++o[l]
?o[l]
a una letra, cualquier iteración posterior con la misma letra dará lugar am - o[l] --> NaN
(entero menos letra) yl.repeat(NaN) == ''
. (Sobre el último punto: sí, eso es correcto.)J ,
335646 bytesPruébalo en línea!
No se pudo encontrar una manera de evitar el uso
~:tolower
dos veces.Cómo funciona
fuente
R + stringr, 108 bytes
No soy muy bueno en
stringr
. Devuelve una mezcla de minúsculas y mayúsculas ya que la pregunta dice que no importa.Pruébalo en línea!
Explicación
fuente
K4 , 35 bytes
Solución:
Ejemplos:
Explicación:
Podría ser golfable con un enfoque diferente, seguirá pensando
fuente
Carbón ,
3332 bytesPruébalo en línea! El enlace es a la versión detallada del código. Explicación:
fuente
Java 11,
190176162 bytes-14 bytes gracias a @Nevay .
La salida está en mayúscula completa.
Pruébalo en línea. (NOTA:
String.repeat(int)
se emula comorepeat(String,int)
para el mismo recuento de bytes, porque Java 11 aún no está en TIO).Explicación:
fuente
char
quieres decir? Lamentablemente no.var
solo se puede usar para campos individuales. Entonces, en lugar dechar m=1,i=127,a[]=new char[i];
eso seríavar m=1;var i=127;var a=new char[i];
. Aquí un consejo útil de lo que puede y no puede hacer con Java 10var
. (Podría reemplazar elint
en el bucle convar
, pero el recuento de bytes seguirá siendo el mismo.)var
. Y Java 11 apenas tiene cambios en todos los codegolf relacionados, excepto por elString.repeat
método que ya he usado muchas veces. También tiene los nuevosString.stripLeading
oString.stripTrailing
, que actúan comotrim
pero solo los espacios en blanco iniciales / finales, yString.isBlank()
que es lo mismo queString.trim().isEmpty()
(solo espacios en blanco o vacíos).s->{s=s.toUpperCase();char m=2,i=91,a[]=new char[127];for(int c:s.getBytes())m-=m+~++a[c]>>-1;for(;i-->65;)s=s.replaceFirst(i+"",repeat((i+""),m-a[i]));return s;}
Japt
-h
, 27 bytes-3 bytes de @ETHproductions
Tratando de explicar
Pruébalo en línea!
fuente
ú
ñ oC ó¥
, aunque requiere agregar de nuevo en el;
...ñ
trabajaste con cuerdas? @ETHproductions, ¡dígame que es una adición reciente y no lo he pasado por alto todo este tiempo!Ruby , 89 bytes
Pruébalo en línea!
Intenté diferentes enfoques, pero lo que realmente ahorra muchos bytes es agregar un carácter a la vez.
Cómo:
fuente
Powershell 6, 123 bytes
Utiliza una gama de caracteres
'a'..'z'
. Vea la secuencia de comandos para Powershell anterior a continuación.Script de prueba explicado:
Salida:
Powershell 5.1-, 133 bytes
fuente
Rojo , 252 bytes
Pruébalo en línea!
Solución ridículamente larga ...
Explicación:
fuente
Javascript (Node.js) ,
140137 bytesPruébalo en línea!
+33 bytes de mi primera solución para esas restricciones adicionales interminables. JS apesta a las manipulaciones de cadenas que no distinguen entre mayúsculas y minúsculas que conoces.
-3 bytes atrás Gracias @Arnauld.
Explicación
fuente
f
s como almacenamiento temporal, así que pensé que estaba bienmap()
Las funciones de devolución de llamada son seguras de usar para el almacenamiento, ya que están definidas en un ámbito local. Usar la función principal, que está definida globalmente, es más peligroso. Aquí, puede usar la devolución de llamada de la primeramap()
, que lo devuelve a 137 bytes .Casco , 15 bytes
Pruébalo en línea!
Fuerza bruta, muy lenta.
Explicación
fuente
Perl 6 ,
7770 bytesPruébalo en línea!
Adoptando el enfoque de GB de insertar un carácter hasta que todos los caracteres aparezcan el mismo número de veces. Recibe una cadena que se modifica en el lugar.
Si los guiones bajos se pueden tratar como letras, la expresión regular puede convertirse
/\w/
, ahorrando dos bytes.Explicación
fuente
{*}
truco..value(s)
eso? Genial, es posible que tenga que actualizar algunas de mis viejas solucionesPython 2 ,
97117 bytesPruébalo en línea!
fuente
C (clang) ,
246223220210208193188 bytesIndicador del compilador
-DF=;for(i=0;b[i];i++
-DB=b[i]
(29 bytes)Se agregó compatibilidad con mayúsculas y minúsculas.
Pruébalo en línea!
fuente
Pyth,
3130 bytesPruébalo aquí
Explicación
fuente
C (GCC) : 175 bytes
Sin golf
Pruébalo en línea!
fuente
Kotlin Android, 413 bytes
Probar en línea
Explicación paso 1 -> Seleccione la lista de caracteres distintos. paso 2 -> Obtener el recuento de cada carácter en la cadena y seleccionar la frecuencia máxima de caracteres paso 3 -> obtener diferencia en la frecuencia de caracteres con respecto a la frecuencia máxima de caracteres paso 4 -> colocar caracteres con respecto a las posiciones en cadena. ¡Feliz solución!
fuente
C # (compilador interactivo de Visual C #) , 145 bytes
Pruébalo en línea!
fuente
PHP ,
185173170 bytesPruébalo en línea!
Sin golf (y sin ternar y sin optimizar).
fuente