Dada una cadena x
, muestre los caracteres x
ordenados según el orden de aparición en su código fuente.
Ejemplos
Source: ThisIs A Test
Input: Is it a Test?
Output: TissI etta?
Source: Harry - yer a wizard.
Input: I'm a what?
Output: aa wh'?Imt
Source: Mr. H. Potter, The Floor, Hut-on-the-Rock, The Sea
Input:
Output:
Reglas
- Se aplican las lagunas estándar y las reglas de E / S
- La entrada y salida puede ser una cadena, una lista de caracteres o una lista de bytes.
- Si un personaje se usa varias veces en la fuente, use la primera aparición.
- Si uno o más caracteres no aparecen en la fuente, deberían estar al final; su orden no importa, ni tiene que ser consistente.
- La fuente no debe estar vacía
- Las líneas nuevas se tratan igual que otros caracteres.
- El orden en que se ejecuta el código no importa; solo la cuerda cruda.
- La entrada está en la misma codificación que el código.
- La entrada se ordena por caracteres, no por bytes.
- La clasificación distingue entre mayúsculas y minúsculas
- Este es el código de golf , por lo que gana la respuesta más corta en bytes para cada idioma.
x
codificarnos en UTF-8 o UTF-16 si nuestra solución no está codificada en Unicode en absoluto, y los caracteres Unicode enx
representan caracteres en la página de códigos de la solución? Por ejemplo, algunos idiomas de golf usan páginas de códigos personalizadas para reducir su conteo de bytes, pero aún así se pueden leer a simple vista.Respuestas:
Python 3.8 (pre-release) ,
1021009685797668615960 bytesPruébalo en línea!
-2 bytes al usar esto
-4 bytes al darse cuenta de que
<0
====-1
y eliminar lo innecesario+1
-11 bytes gracias a Neil
-6 bytes gracias a dzaima
-3 bytes gracias a la barra
-8 bytes gracias a siete negativos que señalan que el programa puede generar una lista de caracteres
-7 bytes debido a la Realización de la Ignorancia al volver a Python 3.8 y usar
:=
-2 bytes debido a que Jo King cambió el nombre de la variable s por c, por lo que podríamos omitir el
;c
+1 bytes porque siete negativos señalaron que no se estaba filtrando
;
correctamentefuente
('s=%r;exec(s)'%s+x).find(x)
?('s=%r;exec(s)'%s).find(x)
con su código la haría válida?input()
y guardar 4 bytes;
no está ordenado correctamente en la versión actualAPL (Dyalog Unicode) , SBCS de 14 bytes
Función de prefijo tácito anónimo.
⊂
adjuntar argumento (para actuar en su conjunto)...
⊃¨
de eso, elige un personaje para cada uno de los siguientes índices:∘⍋
los índices que ordenarían el argumento en el orden dado por la siguiente cadena (todos los no miembros van en orden de aparición al final):'''∘⍋⊃¨⊂'
los caracteres'∘⍋⊃¨⊂
Pruébalo en línea!
fuente
C # (compilador interactivo de Visual C #) , 48 bytes
Pruébalo en línea!
fuente
JavaScript (Node.js) ,
60 5856 bytes-2 bytes de Jo King
Pruébalo en línea!
fuente
f=...
. Si ese es el caso, inclúyalo en su envío y número de bytes.Perl 6 , 56 bytes
Pruébalo en línea!
fuente
Ruby , 57 bytes
Pruébalo en línea!
Bastante sencillo, suponiendo que no me haya perdido un truco de golf. Tome una lista de caracteres y ordénelos por su índice en una cadena que contenga todos los caracteres uniq en el código en orden de aparición. A menudo, su primera aparición es en esa misma cadena, pero eso no cambia el orden.
fuente
05AB1E ,
242221 bytesPruébalo en línea!
Explicación:
Primera vez que intenta cosas en 05AB1E, así que probablemente haya mucho que guardar
fuente
}krR«'«
. NOTA:'
es un solo carácter, por lo que'"
es suficiente (a diferencia de C # donde necesita un seguimiento adicional'
) Actualmente, su código primero empuja la cadenaΣ
, luego la cadena"
, luego la cadena«
, luego la cadena'«Rrk}
, y luego hace el anexar, invertir, apilar, indexar. Sin embargo, ¡uso inteligente del reverso de la cadena y al final! Veré si puedo encontrar una solución para su respuesta, y eliminaré la mía después.}krR«'"Σ
. PD: A=
veces suelo usar (imprimir sin reventar) para propósitos de depuración. También puede agregar--debug-stack
como argumento, pero es un poco extraño en la nueva versión 05AB1E en mi humilde opinión.Jelly ,
1614 bytes (página de códigos Jelly), 25 bytes (UTF8)Pruébalo en línea!
Un programa completo que toma un solo argumento, la cadena que se ordenará.
¡Gracias a @JonathanAllan por señalar un error!
Según @EriktheOutgolfer, aunque el código se puede ingresar utilizando la página de códigos Jelly, los caracteres ordenados son los UTF-8 equivalentes en lugar de los bytes de la fuente. Como tal, también he incluido la puntuación en bytes UTF-8. Tenga en cuenta que lo mismo probablemente se aplica a todos los idiomas con páginas de códigos personalizados.
Explicación
La cadena anterior se evalúa como:
Ṿv`
es un no-op efectivamente aquí, pero existe para garantizar que todos los personajes estén representados.fuente
Jalea , 14 bytes
Un programa completo que acepta una cadena (formateada en Python) (de caracteres de página de códigos Jelly ) que imprime la salida.
(como enlace monádico produce una lista de listas de caracteres)
Pruébalo en línea!
¿Cómo?
fuente
f
yḟ
trabajo en caracteres Unicode, porque ese es el tipo de caracteres que la cadena tiene realmente dentro. Por ejemplo,”ĿO
devuelve319
si se prueba codificado localmente en JELLY, por lo que veĿ
el C7 y no el C7.f
yḟ
trabajo en Unicode también, pero ¿es eso un problema aquí? Paso el conjunto restringido de caracteres Unicode que aparecen en la página de códigos de Jelly (es decir, bytes codificados usando esa codificación, cumpliendo "La entrada está en la misma codificación que el código"); filtrarlos correctamente (ya que estos bytes ingresados se codificaron como Unicode) y luego generarlos correctamente. Lo que luego cuento son los bytes del código (cumpliendo "La entrada está ordenada por caracteres, no por bytes" y "la respuesta más corta en bytes para cada idioma gana").Carbón , 37 bytes
Pruébalo en línea!Explicación:
Hay dos formas de citar personajes en Carbón;
´
cita cualquier carácter individual mientras que”y
...”
cita cualquier carácter excepto”
y también cuenta como una cadena separada. Resulta que la sobrecarga en tener que lidiar con”
significa que no termina ningún golfista.Pase el cursor sobre los caracteres a su vez, generando los caracteres coincidentes de la entrada. Esto ordena la entrada.
Salida de caracteres no coincidentes en la entrada.
fuente
J , 14 bytes
Función de prefijo tácito anónimo.
Pruébalo en línea!
]
el argumento...
i:
última aparición (los no miembros obtienen el índice más allá del final de la cadena de búsqueda) de cada carácter en:']/:''i'
los caracteres]/:'i
...
/:
usa eso para ordenar:]
el argumentofuente
Java 10,
129100bytes-29 bytes al portar la respuesta C #
+c
de @EmbodimentOfIgnorance .Pruébalo en línea.
Explicación:
NOTA: Por lo general, es más barato de usar en
s.sort((a,b)->Long.compare(a,b))
lugar des.sort(java.util.Comparator.comparing(c->c)
, pero en este caso sería 11 bytes más largo:Pruébalo en línea.
fuente
05AB1E ,
312619 bytes-7 bytes inspirándose en el enfoque de @ EmbodimentOfIgnorance en su respuesta C # de agregar el carácter actual antes de la indexación.
Pruébelo en línea o con la línea de depuración agregada para ver las cadenas que se están indexando .
Explicación:
fuente
Potencia Shell , 68 bytes
Pruébalo en línea!
fuente
sort
cambiosort-object
funciona también. 2) la variable$b
definida fuera del alcance de su código. ElStandard loopholes
requiere una respuesta completa . Para Powershell significa: cualquier persona puede escribir el código en un archivo como un script de PowerShell y ejecutarlo en una terminal. Su código no funciona desde el archivo de script. Lo siento.sort
alias no funciona en pwsh en Ubuntu 18.04 2) sí, es mi culpa, pero me corregí y, como resultado, el código se hizo más largo, por supuesto :)code became longer
- este es el desafío :)$p
se agrega al final de la cadena con el código fuente y obtiene un índice igual a$src.Length
, pero dado que "su orden no importa y no debe ser coherente", no importa. En esta respuesta , toda la cadena de entrada se agrega al final de la cadena con el código fuente.Python 2 , 62 bytes
El mismo concepto que mi respuesta C #.
Pruébalo en línea!
fuente
\\\'
debería ser\'\\
. Buen enfoque sin embargo! Guardado 23 bytes en mi respuesta Java.Japt , 18 bytes
Intentalo
fuente
Gelatina , 26 bytes (UTF-8 *)
Pruébalo en línea!
Toma datos como una cadena con formato Python en el primer argumento de la línea de comandos.
Personajes únicos :
* Nota: descubrí que esto no funciona cuando se codifica en JELLY, ya que ordena los caracteres UTF-8 en lugar de sus propios bytes.
fuente