Que este desafío sirva como ( otro ) homenaje a Stan Lee, quien falleció a los 95 años.
Stan Lee nos ha dejado un legado invaluable y una palabra peculiar: Excelsior . Así que aquí hay un pequeño desafío basado en lo que dijo que era su significado :
Finalmente, ¿qué significa "Excelsior"? "¡Hacia arriba y hacia adelante para mayor gloria!" ¡Eso es lo que te deseo cada vez que termino de twittear! ¡Virutas de embalaje!
Desafío
Dada una serie de enteros no negativos, genera una línea Excelsior!
cada vez que un entero es mayor que el anterior.
Reglas
- La entrada será una matriz de enteros no negativos.
- La salida consistirá en líneas con la palabra
Excelsior
(el caso sí importa) seguido por!
la longitud de la ejecución actual de números cada vez mayores. También puede devolver una serie de cadenas. - Los formatos de entrada y salida son flexibles de acuerdo con las reglas del sitio, así que siéntase libre de adaptarlos a sus formatos de idioma. También puede agregar espacios al final de las líneas, o incluso nuevas líneas adicionales después o antes del texto si es necesario.
Ejemplos
Input Output
-----------------------------------
[3,2,1,0,5] Excelsior! // Excelsior because 5 > 0
[1,2,3,4,5] Excelsior! // Excelsior because 2 > 1
Excelsior!! // Excelsior because 3 > 2 (run length: 2)
Excelsior!!! // Excelsior because 4 > 3 (run length: 3)
Excelsior!!!! // Excelsior because 5 > 4 (run length: 4)
[] <Nothing>
[42] <Nothing>
[1,2,1,3,4,1,5] Excelsior! // Excelsior because 2 > 1
Excelsior! // Excelsior because 3 > 1
Excelsior!! // Excelsior because 4 > 3 (run length: 2)
Excelsior! // Excelsior because 5 > 1
[3,3,3,3,4,3] Excelsior! // Excelsior because 4 > 3
Este es el código de golf , ¡así que puede ganar el código más corto para cada idioma!
Respuestas:
JavaScript (ES6),
5854 bytesPruébalo en línea!
Comentado
¿Por qué es seguro volver a usar un [] para almacenar el valor anterior?
Hay tres casos posibles:
.map()
no se invoca en absoluto y solo obtenemos una matriz vacía, produciendo una cadena vacía.a < (a = c)
. Entonces, estamos probandoNaN
durante la primera pruebaa < (a = c)
. Por lo tanto, el resultado es falso y lo que se ejecuta es la inicialización defuente
Python 2 ,
8483817068 bytesPruébalo en línea!
-2 bytes, gracias solo a ASCII
fuente
05AB1E ,
262423 bytes-2 bytes gracias a @Kroppeb .
Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
Ver este consejo 05AB1E mío (sección Cómo comprimir cadenas que no forman parte del diccionario? ) Para entender por qué
.•1Š¥èò²•
es"excelsior"
.fuente
0Kg
conO
?Perl 6 ,
60 5857 bytes-1 byte gracias a nwellnhof
Pruébalo en línea!
Bloque de código anónimo que devuelve una lista de Excelsiors!
fuente
Java-8
118113 BytesFácil de leer :
fuente
n->{var e="";for(int i=0;i<n.length-1;System.out.print(""==e?e:"Excelsior"+e+"\n"))e=n[i++]<n[i]?e+="!":"";}
. Pruébelo en línea ( 108 bytes ). (Java 10+)n->{for(int e=0,i=0;i<n.length-1;)if(n[i++]<n[i])System.out.println("Excelsior"+"!".repeat(e++));else e=0;}
( 107 bytes )++e
lugar dee++
que haya al menos uno!
para imprimir.e=...?e+"!":
lugar dee=...?e+="!":
.R , 86 bytes
La mitad de esta respuesta es de @ Giuseppe. RIP Stan Lee.
Pruébalo en línea!
fuente
05AB1E ,
2019 bytesPruébalo en línea!
Explicación
fuente
C (gcc / clang),
1069997 bytesGracias a gastropner por jugar al golf 2 bytes.
Pruébalo en línea aquí .
Sin golf:
fuente
Japt
-R
,2522 bytesIntentalo
3 bytes guardados gracias a Kamil
fuente
-R
bandera no es realmente necesaria, el desafío dice que puede generar una serie de cadenas.slice
en mi primer pase, pero la descarté cuando funcionó demasiado tiempo. Volviendo a eso ahora, con sus indicaciones, supongo que debería haberme quedado con eso porque también lo reduje a 22.Lisp común, 111 bytes
Pruébalo en línea!
fuente
Java 8, 106 bytes
Pruébalo en línea!
(esas reasignaciones de
s
... yikes)fuente
(s="")+s
=>(s="")
n->{String s="",z=s;for(int i=0;i<n.length-1;)z+=n[i++]>=n[i]?s="":"Excelsior"+(s+="!")+"\n";return z;}
( 103 bytes ) Movers=""
a bytes de reserva.Stax , 17 bytes
Ejecutar y depurarlo
fuente
R , 111 bytes
Pruébalo en línea!
Aquí se puede encontrar un tributo R mucho mejor : estaba demasiado obsesionado con
sequence
yrle
.fuente
Jalea , 16 bytes
Un enlace monádico que produce una lista de listas de caracteres.
Pruébalo en línea!(el pie de página se une con las nuevas líneas)
¿Cómo?
fuente
Perl 5
-n
, 41 bytesPruébalo en línea!
Toma su entrada en líneas separadas.
fuente
Japt , 22 bytes
Pruébalo en línea!
Explicación, con ejemplo simplificado:
fuente
Powershell, 69 bytes
Menos guión de prueba de golf:
Salida:
fuente
PowerShell ,
8785 bytesPruébalo en línea!
Probablemente hay una reestructuración escondida allí, muy probablemente en el caso contrario, pero en general está bastante bien. Utiliza el viejo truco "La variable no instanciada predeterminada es 0" para hacer tanto el índice como el
!
.fuente
Retina , 55 bytes
Pruébalo en línea! El enlace incluye casos de prueba. Explicación:
Convierte a unario.
Procesar coincidencias superpuestas de derecha a izquierda (aunque las coincidencias se enumeran de izquierda a derecha). Esto significa que podemos hacer coincidir cada número en una carrera, y la coincidencia se extiende hasta el comienzo de la carrera. Cada coincidencia tiene la restricción adicional de que cada número coincidente adicional debe ser menor que el número adicional coincidente previamente, o el primer número si aún no se han igualado números adicionales.
Para cada coincidencia, imprima
Excelsior
con el número de números adicionales en la ejecución según lo deseado.fuente
Pyth, 32 bytes
Pruébelo en línea aquí , o verifique todos los casos de prueba a la vez aquí .
fuente
Jalea , 18 bytes
Pruébalo en línea!
Salida prettified sobre TIO.
fuente
Lua ,
888783829695113 bytesGracias @Kevin Cruijssen por actualizarse al espíritu de la pregunta original.
Pruébalo en línea!
fuente
C ++ 14 (g ++),
123118 bytesAfortunadamente
std::string
tiene un constructor que repite achar
. Pruébalo en línea aquí .Gracias a gastropner por guardar 5 bytes.
Sin golf:
fuente
C # (.NET Core) ,
115107105 bytesPruébalo en línea!
-8 bytes: cambiado
b
a una cadena que contiene "!" S desde un contador int-2 bytes: establecido
b+="!"
como una función en línea (gracias a Zac Faragher )Utiliza un delegado de acción para extraer la entrada y no requiere un retorno.
Sin golf:
fuente
b+="!"
línea con el Excelsior ¡if(a[i]>a[i-1])Console.WriteLine("Excelsior"+(b+="!"));
Pruébelo en línea!PHP ,
117109bytesPruébalo en línea!
fuente
J, 50 bytes
Pruébalo en línea!
sin golf
fuente
Java, 113 bytes
fuente
VBA, 114 bytes
fuente
a
. Dicho esto, si define la función como unasubroutine
que toma la entrada como una variante de la matriz de tipos esperada, puede convertir su enfoque en una solución válida. Se vería una versión de golf de ese enfoquesub f(x)
For i=0To UBound(x)-1
If x(i+1)>x(i)Then s=s+"!":Debug.?"Excelsior"s:Else s=""
Next
End Sub
, donde los descansos entre el bloque de código representan nuevas líneasPython 3, 87 bytes
O 97 con lo siguiente:
Esto supone que las entradas estarán en el formato:
fuente
Japt , 25 bytes
Pruébalo en línea!
fuente