Escriba un programa que tome una cadena y muestre todos los caracteres en orden alfabético. Los espacios y símbolos se pueden ignorar o eliminar, pero las letras mayúsculas y minúsculas deben permanecer en el mismo caso.
Entrada de muestra:
Johnny walked the dog to the park.
Salida de muestra
aaddeeeghhhJklnnoooprtttwy
Reglas:
• Cualquier idioma
• El código más corto gana.
Spaces and symbols can be ignored or deleted
, ¿eso significa que debe ser ignorado; o es salida como, .aaddeeeff
permitida?k
s en la salida?Respuestas:
MathGolf , 2 bytes
Pruébalo en línea!
Salida de ejemplo
Eliminar caracteres no alfabéticos
Para eliminar todos los caracteres no alfabéticos, esta solución funciona:
Es lo mismo que el código anterior, seguido de un filtro donde cada personaje se duplica primero, y luego se compara su propia capitalización. Por ejemplo, la cadena
"a"
se convierte"aa"
y luego se capitaliza en"Aa"
, que no es igual a"aa"
. De la misma manera, la cadena"B"
se convierte"BB"
y se capitaliza en"Bb"
, que no es igual a"BB"
. Sin embargo,"."
se convierte a".."
y no cambia cuando se capitaliza, por lo que se filtrará.Explicación
Realmente necesito más manejo de cadenas en MathGolf ... En este momento ni siquiera hay un operador para convertir a minúsculas / mayúsculas. Lo único que pude usar fue el operador de mayúsculas, que funciona como un operador en mayúsculas para cadenas de longitud 1. Esta solución también clasifica los caracteres no alfabéticos, pero podrían ignorarse. Los caracteres alfabéticos conservan sus mayúsculas y minúsculas en el orden correcto.
fuente
GolfScript, 24/6 caracteres
Ejemplo:
Si la entrada está restringida a ASCII imprimible, el código puede acortarse en tres caracteres utilizando
{95&.64>\91<&},
como filtro.Se puede probar aquí .
La versión que se puede ignorar es aún más corta (6 caracteres):
y rinde salida
fuente
{}$
{}$
sería equivalente a$
.Utilidades principales de GNU: 25 caracteres (29 símbolos de caída)
Ejemplo (de GNU bash 3):
De la pregunta:
¡Elegí dejarlos adentro! Para conservar sólo los caracteres alfabéticos, sustituir
fold -1
congrep -o \\w
de +4 caracteres.Gracias a la luciérnaga para recomendar
grep -o
mássed
, y para Wumpusfold -1
. ;-)fuente
-f
(doblar)sort
para ignorar el caso.C, 121
Esto es bastante largo en comparación con otras entradas, pero no depende de ninguna función incorporada de clasificación o ToLower:
Versión más legible:
Esta es una implementación del tipo de inserción con una comparación que distingue entre mayúsculas y minúsculas entre los elementos (usando la
|32
operación bit a bit). Esto se debe a que en la codificación ASCII, las letras mayúsculas y minúsculas solo difieren en 2 5 bits.fuente
Ruby - 33 caracteres
fuente
*""
lugar de.join
.p
, pero eso es cuestionable, así que solo úsaloputs
. Además,$<
es un atajo para ARGF$><<
lugar de,puts
ya que se puede eliminar el espacio de separación.PowerShell: 39
Resultado
C #: 100
Resultado
fuente
ToCharArray
;String
implementosIEnumerable<char>
sal
, no creo que puedas usar eso. Pero, puede deshacerse de la asignación de variables con"$([string[]][char[]](Read-Host)|sort)"
.APL 16
fuente
Perl6: 26 caracteres.
Primero ordena la salida en mayúscula, luego en minúscula, elimina los símbolos / espacios en blanco
Si los espacios en blanco / símbolos en la salida también pueden ignorarse, esto es solo 21 caracteres.
Esto clasifica entre mayúsculas y minúsculas, mantiene símbolos (26 caracteres)
fuente
Perl 34
Ahora toma entrada de
STDIN
.Perl 18
Si la producción incluye mayúsculas primero y símbolos incluidos es aceptable:
fuente
Haskell, 88
(38 sin importaciones desde lib estándar)
fuente
k (
109)Lecturas de stdin
Ejemplo
fuente
C #: 83
Actualización: 65
Ejecutable en LinQPad
fuente
Pitón 3: 45
fuente
J, 12 caracteres
Ignora cualquier carácter no alfa.
fuente
f=.
, o quieres que agregue la1!:1[1
?1!:1[1
yecho
por favorecho
?Javascript - 74
Desafortunadamente, debido a la forma en que JS clasifica los caracteres, no podemos usar la función de clasificación estándar:
En realidad, esto se puede acortar a:
fuente
F # (
6856)Estoy aprendiendo F #, así que estoy seguro de que esto podría ser más corto:
Salida:
fuente
PHP, 50 bytes
no elimina las letras que no son, toma la entrada de STDIN; correr con
-R
.fuente
R, 48 caracteres
Ejemplo de uso:
fuente
q / k4 (3? 5? 8?)
si es suficiente ingresar el código y la entrada directamente en el REPL, es solo
asc
:el
`s#
es q poco de notación que indica que la cadena está ordenada (puede ser binaria búsquedas, etc.). si tiene que ir, eso cuesta dos caracteres, haciendo cinco:si desea que se proporcione en stdin, es hora de cambiar a k4 (y nos deshacemos de él
`s#
de forma gratuita), y es una solución de ocho caracteres:ese, por cierto, funcionará como un archivo de código exactamente como es (aún ocho caracteres, ya que q está bien con no tener la nueva línea final en un archivo de código). normalmente habría problemas con un banner de bienvenida y con el REPL permaneciendo abierto, pero si pasa la entrada como una herejía, todo eso desaparece:
no estoy seguro de dónde proviene esa nueva línea adicional en la salida ...
fuente
Jalea, 3 bytes
¡Mi primera solución Jelly en este sitio! ¡Gracias a @LeakyNun y @ErikTheOutgolfer por enseñarme cómo usar Jelly y @Dennis por hacerlo! :RE
Explicación
Alternativamente,
ŒuÞ
hace exactamente lo mismo excepto convertir a mayúsculas en su lugar.fuente
Powrshell, 36 bytes
Script de prueba:
Salida:
fuente
05AB1E , 3 bytes
Pruébalo en línea .
Explicación:
fuente
Java 10, 72 bytes (como función lambda)
Pruébalo en línea.
Pero dado que es un viejo desafío que establece el programa completo:
Java 10, 126 bytes (como programa completo)
Pruébalo en línea.
Explicación:
fuente