Reto
Dada una lista de nombres de colores únicos como entrada, ordénelos en el orden en que aparecen por primera vez en el Amazing Technicolor Dreamcoat de Joseph .
Ejemplo
Input: green, blue, red, brown
Output: red, green, brown, blue
La lista completa de colores, en orden, es:
1. red
2. yellow
3. green
4. brown
5. scarlet
6. black
7. ochre
8. peach
9. ruby
10. olive
11. violet
12. fawn
13. lilac
14. gold
15. chocolate
16. mauve
17. cream
18. crimson
19. silver
20. rose
21. azure
22. lemon
23. russet
24. grey
25. purple
26. white
27. pink
28. orange
29. blue
O como una serie de cadenas:
["red","yellow","green","brown","scarlet","black","ochre","peach","ruby","olive","violet","fawn","lilac","gold","chocolate","mauve","cream","crimson","silver","rose","azure","lemon","russet","grey","purple","white","pink","orange","blue"]
Reglas
- Puede recibir información por cualquier medio razonable y conveniente (por ejemplo, una matriz de cadenas, una cadena delimitada, cadenas individuales) siempre que lo permitan nuestras reglas de E / S estándar , pero especifique su método de entrada en su respuesta.
- Puede hacer lo mismo para su salida.
- La entrada solo contendrá colores de la lista anterior.
- Su solución debería ser capaz de manejar entradas vacías.
- Puede elegir si todas las palabras en la entrada son mayúsculas, minúsculas o mayúsculas, pero la carcasa de su salida debe coincidir con la de su entrada.
- Este es el código de golf, por lo que gana el conteo de bytes más bajo en cada idioma.
- Como siempre, las lagunas estándar están prohibidas.
Casos de prueba
Input: []
Output: []
Input: ["green", "blue", "red", "brown"]
Output: ["red", "green", "brown", "blue"]
Input: ["gold", "grey", "green"]
Output: ["green", "gold", "grey"]
Input: ["ruby","yellow","red","grey"]
Output: ["red", "yellow", "ruby", "grey"]
Input: ["gold", "green", "fawn", "white", "azure", "rose", "black", "purple", "orange", "silver", "ruby", "blue", "lilac", "crimson", "pink", "cream", "lemon", "russet", "grey", "olive", "violet", "mauve", "chocolate", "yellow", "peach", "brown", "ochre", "scarlet", "red"]
Output: ["red", "yellow", "green", "brown", "scarlet", "black", "ochre", "peach", "ruby", "olive", "violet", "fawn", "lilac", "gold", "chocolate", "mauve", "cream", "crimson", "silver", "rose", "azure", "lemon", "russet", "grey", "purple", "white", "pink", "orange", "blue"]
code-golf
array-manipulation
Lanudo
fuente
fuente
Respuestas:
PowerShell ,
26215515112712595 bytesPruébalo en línea!
Enfoque ingenuo.PowerShellsort-object
puede ordenar en función de un bloque de script que se ejecuta para cada objeto. Aquí simplemente estamos obteniendo el.IndexOf()
color de una cadena, que asignará un valor numérico a cada color, y luego se clasifica en función de esos números. La cadena se construye a partir de la cuarta y primera letra de cada color para garantizar la unicidad. La salida es implícita.-4 bytes gracias a Shaggy.
-2 bytes gracias a mazzy.
La friolera de -30 bytes gracias a KGlasier.
fuente
green grey
que está en el orden alfabético correcto..IndexOf()
volverá-1
si no se encuentra la cadena, lo que se ordenared
en el orden correcto. ¡Gracias!JavaScript (SpiderMonkey) ,
106105104bytes"En caso de duda, solo hash la entrada sangrienta".
Pruébalo en línea!
fuente
%99%55
no es mejor que%123%55
con este enfoque). Entonces es ciertamente subóptimo. Sin embargo, puedo probar algo un poco más sofisticado más adelante.Jalea , 28 bytes
Pruébalo en línea!
Cómo funciona
µ
convierte todo a su izquierda en una cadena monádica, que seÞ
asigna sobre la matriz de entrada y clasifica la entrada de acuerdo con los valores generados.“½Ṗ©cƘʂẒẹMMỤẓHP’
establece el valor de retorno en 176073885534954276199526358143331.Œ?
genera la permutación 176073885534954276199526358143331 th de los enteros positivos (sin la cola ordenada), produciendo .“ðÑþQ’
rinde 391695582;,
lo antepone a la permutación. Luego,ḥ
compute la función de hash 391695582 de Jelly , asignando los cubos resultantes a los enteros de la permutación.La constante mágica 391695582 fue encontrada por las utilidades de Jelly .
fuente
Python 3 , 93 bytes
Pruébalo en línea!
Lee cada color como base-36
int
. Bruto forzó los módulos y eligió una compensación arbitraria entre los 19 que no requirieron escapes.fuente
Powershell,
124120124119118102 bytes¡Pruébelo en línea!
Explicación:
La cadena de datos contiene las primeras letras significativas de las etiquetas de color en orden descendente. Excepto por la
Grey
etiqueta,G*y
es más corta.-csplit'(?=[A-Z])'
divide la cadena de datos en la matriz(blu,Or,Pi,W,Pu,G*y,Rus,Le,A,Ro,Si,Cri,Cr,M,C,Go,L,F,V,Ol,Ru,P,O,Bl,S,B,G,Y,R)
|%{$c-like"$_*"}
asigna la matriz de cadenas a la matriz de boolean. DondeTrue
significa "una etiqueta de color comienza desde esta cadena" (como es un operador que no distingue entre mayúsculas y minúsculas, csplit - mayúsculas y minúsculas. Ver doc ).sort{}
ordena las etiquetas de color por las matrices de booleanos en orden ascendente .La ordenación por matriz es una característica muy interesante en Powershell. En este script, todas las matrices tienen la misma longitud y contienen solo valores booleanos. Esta clasificación se realiza en el orden lexográfico de las matrices booleanas.
Por lo tanto, la cadena puede contener abreviaturas de una letra para las últimas etiquetas. Si hay una coincidencia al comienzo de la matriz, las coincidencias al final no tienen efecto.
Donde
T
estatrue
y-
estafalse
.Script de prueba:
Salida:
fuente
This site can’t be reached
error Lo siento.Mejoraré la compresión de cuerdas en un tiempo
Japt ,
887871 bytesPruébalo en línea!
fuente
Wolfram Language
255 213199 bytesDennis guardó catorce bytes, evitando las "marcas", utilizando símbolos en lugar de cadenas.
¡Pruébelo en línea!
fuente
Python 2 , 186 bytes
Pruébalo en línea!
Encuentra todas las coincidencias para las subcadenas de caracteres progresivas (por ejemplo, "verde" verificará "g", "gr", "gre", "gree" y "verde") en la cadena de identificación, y mantiene el índice máximo. "rojo" siempre es primero, y anf find () devuelve -1 para las coincidencias faltantes, por lo que no hay un identificador para rojo específicamente.
Una vez que los colores se convierten en pares (índice, color), ordena la matriz en el primer elemento del par y luego descarta el primer elemento de cada par.
fuente
Python 3 , 130 bytes
Pruébalo en línea!
fuente
ca
es una subcadena decca
chocolate oof.C # (compilador interactivo de Visual C #) ,
321219210161159138 bytesPruébalo en línea!
-3 bytes gracias a Shaggy, -18 gracias a TheLethalCoder
Toma la entrada como a
List<string>
, devuelve unIOrderedEnumerable<string>
Cómo funciona esto es que ordena la lista por el índice de cada cadena en la cadena original. La cadena original tiene todos los colores, excepto el gris convertido en sus primeras tres letras. El gris no está allí, ya que el verde y el gris causarían ambigüedad. El rojo tampoco está allí, ya que
IndexOf
devuelve -1 si la cadena no aparece.Versión más corta que toma IOrderedEnumerable como entrada, 137 bytes
Aprovecha el hecho de que
ThenBy
es 1 byte más corto queOrderBy
, peroThenBy
solo funciona enIOrderedEnumerable
s.Pruébalo en línea!
fuente
red
de su cadena de búsqueda y reemplazar68
con65
al ahorro 3 bytes. En mi teléfono, así que no lo he probado completamente.n=>n.OrderBy(a=>a!="grey"?"redyelgrebroscablaochperuboliviofawlilgolchomaucrecrisilrosazulemruspurwhipinorablu".IndexOf(a.Substring(0,3)):68);
Sin embargo, debe incluir losusing
s en el recuento de bytes, ya que se requieren para ejecutarse. Puedes usar el truco del espacio de nombres embargo, para acortar el recuento requerido.namespace System.Linq{}
o lo que sea que hubieras elegido.Carbón ,
69686356 bytesPruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Tome la cuerda comprimida
edyeeebrscckhrpeubivvifa99gohomaamrisiosazemuseypuwhpiorlu
y haga un bucle sobre cada subcadena de longitud 2.Para cada subcadena, imprima las cadenas de entrada que contienen esa subcadena, a menos que la subcadena lo sea
99
, en cuyo caso busque en sulil
lugar. (lilac
es el único color que no tiene una subcadena única de dos letras;olive
incluyeli
;silver
incluyeil
eblack
incluyelac
.fawn
yazure
se puede detectar con una sola letra, pero eso no ayuda aquí).fuente
Pyth, 66 bytes
Pruébalo en línea aquí , o verifique todos los casos de prueba a la vez aquí .
Los colores en la lista se pueden identificar de forma única tomando los caracteres en el índice
0
y3
asumiendo una indexación modular. Esto da como resultado la siguiente asignación:Explicación completa:
fuente
05AB1E , 48 bytes
La misma solución que la mayoría de las otras respuestas. Trataré de jugar golf desde aquí más tarde.
Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
Vea este consejo 05AB1E (sección ¿Cómo comprimir cadenas que no forman parte del diccionario? ) Para comprender cómo
.•Aå₂мÕh∊þèmvƶ\kΛ1YŠíJ>J#θ₁2©€,Ù{η¦ù-•
es"rrylgebwsrbcorpcryovvlfnlagdccmvcacmsvrearlorsgyppwtpkonbe"
.fuente