Su tarea es imprimir el texto Good morning, Green orb!
, con cada carácter repetido en su lugar tantas veces como el byte más frecuente en su fuente (el modo). Se permite una nueva línea final y no es necesario repetirla.
Por ejemplo, si su fuente era
print p
Dado que p
aparece dos veces y cada dos bytes aparece una vez, necesitaría imprimir
GGoooodd mmoorrnniinngg,, GGrreeeenn oorrbb!!
Las respuestas se puntuarán por el producto de su recuento de bytes y la cantidad de veces que se repite la salida. Por ejemplo, el código anterior (si funcionó) obtendría una puntuación de 7 * 2 = 14 . El objetivo debe ser minimizar el puntaje.
Su código debe contener al menos 1 byte.
Use este programa para verificar que su código y salida coincidan
code-challenge
kolmogorov-complexity
hello-world
self-referential
Asistente de trigo
fuente
fuente
Respuestas:
Brain-Flak ,
384 * 106366 * 100 = 36,600Pruébalo en línea!
Explicación
Lo primero que hago es empujar la cuerda
a la pila usando tácticas de complejidad de Kolmogorov bastante complicadas.
Luego empujamos un contador hacia la pila de fichas para decirnos cuántas veces duplicar cada personaje. Sin embargo, no iba a poder determinar qué era este contador hasta que terminara de escribir el programa.
A continuación, invertimos simultáneamente la cadena y duplicamos cada carácter en su lugar la cantidad correcta de veces. Específicamente el contador + 1.
Estas dos partes del programa tienen un modo de 99 paréntesis abiertos. Sin embargo, dado que sin duda vamos a necesitar al menos 1 paréntesis. Aquí es donde noté que el último carácter que empujamos
!
convenientemente tiene el código de caracteres 33, lo que significa que podemos usarlo para crear 99, el número exacto que queremos usando solo un paréntesis adicional. Esta es una coincidencia pero funciona.fuente
Haskell , 37 bytes × 3 = 111
-20 gracias a H.PWiz. -25 gracias a nimi.
Pruébalo en línea!
Los operadores de Haskell FTW.
Recordatorio para nunca jugar golf en el móvil. Sigo cometiendo errores tontos. Puedo llevar al menos la mitad de la culpa al móvil. :PAGS
fuente
<*
para guardar bytes (tenga en cuenta que no he verificado su validez)brainfuck , 235 x 77 = 18,095 puntos
Editar: -2 bytes gracias a @Dennis
Pruébalo en línea!
Prueba de TIO
Espera, ¿esto no es código de bolos? \ s
Con solo 8 caracteres utilizables, Brainfuck es uno de los peores idiomas para hacer esta pregunta. Tuve que comenzar minimizando qué personaje inevitablemente aparecería más, típicamente uno
+
o-
. Después de escribir la primera iteración del código, lo encontré terriblemente desequilibrado a favor de+
s. Reorganicé partes del código, como la generación de números más grandes, para usar más-
. Finalmente, terminé enuna cantidad igual de los dos personajes en 77uno menos-
que+
. Ciertamente es posible reducir esto aún más, lo que intentaré mañana.Pero bueno, al menos superé la respuesta de Brainflak
fuente
;#
idioma (͡ ° ͜ʖ ͡ °)Jalea , 13 bytes * 1 = 13
Pruébalo en línea!
fuente
Alicia , 49 bytes * 2 =
98144Pruébalo en línea!
Explicación
Este es el marco habitual para programas lineales que operan completamente en modo ordinal. Al desplegar el flujo de control en zigzag, obtenemos:
La idea básica es evitar los caracteres que se repiten más de dos veces con la ayuda de una transliteración. La transliteración que vamos a hacer es la siguiente:
La forma en que funciona la transliteración en Alice es que las cadenas
from
yto
se repiten primero al LCM de sus longitudes, aunque en este caso, todo lo que importa es la longitud de lafrom
cadena, por lo que obtenemos:De esta forma, obtenemos cuatro caracteres diferentes para representar la
o
s, y tres para cada unon
,r
y el espacio. Podemos generar lafrom
cadena usando la expansión de rango de la siguiente manera:El único problema ahora es que necesitaríamos cuatro
"
tanto parainput
lato
cadena como para la cadena. Para evitar eso, los colocamos en una sola cadena y la dividimos en=
un separador.El resto es solo:
fuente
Pitón 2 , 62 × 3 = 186
Pruébalo en línea!
fuente
C (gcc) ,
74 × 6 = 444tachado 444 sigue siendo regular 44477 × 5 = 38581 × 4 = 324Pruébalo en línea!
fuente
C (gcc) , 68 × 3 = 204
¡Gracias a @MDXF por ahorrar 9 puntos y allanar el camino para 6 más!
Pruébalo en línea!
Versión alternativa, ASCII imprimible, 69 × 3 = 207
Pruébalo en línea!
fuente
APL (Dyalog Unicode) , 46 bytes × 2 = 92
(Contiene no imprimibles)
Pruébalo en línea!
+ Muchos bytes gracias a la página de códigos de Dyalog, gracias a @ Adám por señalarlo.
fuente
~⎕AV∊⍨⎕UCS 18
.Vim,
4241 pulsaciones de teclas × 3 = 123Explicación:
iGod morning, Green orb!<Esc>
Escribe la cadena
God morning, Green orb!
(o
falta una ).2|
Salta al primero
o
.qsyl2pl@sq
Crea una macro recursiva
s
. Como efecto secundario, triplique la corrienteo
.X0
Elimina uno
o
y salta al principio.@s
Ejecuta la macro
s
, que repite cada personaje dos veces.fuente
C, 78 × 4 = 312
Pruébalo en línea!
356332fuente
Japt , 24 bytes * 2 = 48
Contiene un no imprimible. ¡Pruébalo en línea!
La mayoría del programa es solo una cadena comprimida, que se descomprime a
y
m²
luegom
aps cada personaje repitiéndolo bien, eso fue un poco²
exagerado . El espacio es el único carácter que aparece 3 veces en la cadena comprimida; para guardar una instancia, la reemplazamos con una nueva línea, luego la usamos·¸
para dividir en nuevas líneas e inmediatamente unir en espacios. Si bien 2 bytes más, reduce sustancialmente la puntuación (de 66 a 48).Ahora, si solo hubiera una forma corta de hacerlo sin usar dos veces el personaje ...
fuente
*salute*
Y ahora que miro tu respuesta, veo que tiene ² mientras que el enlace tenía ³ :)SNOBOL4 (CSNOBOL4) , 97 bytes * 10 = 970
Pruébalo en línea!
sí ........ SNOBOL requiere que los operadores estén separados por espacios en blanco, y hay requisitos de espacios en blanco que son bastante incómodos. Hay 9
'\t'
y 10' '
en el código, por lo que cualquier mejora requerirá un cambio de enfoque bastante significativo.fuente
R ,
65 bytes * 5 = 32559 bytes * 5 = 29562 bytes * 4 = 248Pruébalo en línea!
Hay 4
(or,')
personajes.fuente
strrep
antes, eso debería ser útil.Rubí , 52 bytes × 3 = 156
Pruébalo en línea!
fuente
Perl 5 , 59 × 2 = 118 puntos
Pruébalo en línea!
Perl 5 , 51 × 3 = 153
156puntosPruébalo en línea!
Perl 5 , 43 × 4 = 172 puntos
Pruébalo en línea!
Se guardaron 2 bytes en cada solución gracias a @Xcali (hace algunos cambios). Para todas las optimizaciones mira las ediciones.
fuente
-M5.010
, que también cuentaV , 35 bytes * 2 = 70
Pruébalo en línea!
Hexdump:
fuente
SOGL V0.12 , 16 bytes * 1 = 16
Pruébalo aquí!
¡Compresión!
Sin embargo, si
Green
no se capitaliza así, esto podría ser 3 bytes más corto: /fuente
Pitón 2 , 62 * 4 = 248
Gracias a @ovs y @Giuseppe!
Pruébalo en línea!
Pitón 2 , 51 * 6 = 306
Pruébalo en línea!
Pitón 2 , 70 * 5 = 350
Pruébalo en línea!
Gracias a @Mr. ¡Xcoder para guardar un byte de ambas versiones!
fuente
6
yfor
.\x6f
s, lo que todavía es bueno para 244Ohm v2 , 20 bytes * 1 = 20
Pruébalo en línea!
Me encanta la compresión, aunque desafortunadamente no es tan buena como la de SOGL.
fuente
Limpio , 77 bytes * 3 = 231
Pruébalo en línea!
fuente
CJam , 32 bytes × 2 = 64
Pruébalo en línea!
Empuja una cadena, luego XOR con los primeros 20 caracteres
[0, 1, …, 19]
y luego duplica cada carácter.fuente
05AB1E , Puntuación: 22 (22 bytes * 1)
Pruébalo en línea.
Explicación:
NOTA 1: La pila de ajuste en la lista integrada
)
se usa en lugar del par integrado‚
, porque‚
ya es parte de la palabra del diccionariogood
.NOTA 2: Los dos comas en el código
‚
y,
pueden tener el mismo aspecto, pero son diferentes caracteres Unicode . El primero se usa generalmente para el par integrado , y el segundo para la impresión integrada en STDOUT con nueva línea final . En este caso, se utilizan para la palabra del diccionariogood
y, sin embargo, la coma esperada en la salida.Vea esta sugerencia mía 05AB1E (sección ¿Cómo usar el diccionario? ) Para comprender por qué
…‚¿•´,
es"good morning,"
y„ˆ¨èã
es"green orbit"
.fuente
PowerShell , 46 bytes * 4 = 184 puntos
Pruébalo en línea!
fuente
$0
PowerShell ,
49 * 558 bytes * 4 = 232 pts-13 pts gracias solo a ASCII
Pruébalo en línea!
Utiliza el formateo para ir de 5
o
sa 4 para obtener algunos números.fuente
Gelatina , 31 bytes × 2 = 62 puntos
Pruébalo en línea!
Explicación
fuente
JavaScript (ES6), 61 bytes * 3 = 183
Mostrar fragmento de código
JavaScript (ES6), 51 bytes * 4 = 204
Respuesta sugerida por @ETHproductions .
Mostrar fragmento de código
JavaScript (ES6), 73 bytes * 4 = 292
Mostrar fragmento de código
JavaScript (ES6), 58 bytes * 6 = 348
Mostrar fragmento de código
fuente
_=>_
a'$&'
'$&$&$&$&$&$&'
el reemplazo, lo que luego creo que le permite eliminar dos instancias y reducir varios caracteres a 4, reduciendo drásticamente la puntuación ...Retina , 36 × 4 = 144
Pruébalo en línea! Hay tres líneas nuevas y cuatro
o
s, por lo que no hay nada más que hacer.fuente
Rubí, 55x4 = 220 puntos
Estoy bastante molesto porque usar each_char hace el recuento de r's 5 ..
fuente
Insistente , 36 * 2 = 72
Pruébalo en línea!
El principio principal de esta respuesta es que cada carácter
n
se almacena comon + index - 29
para evitar la repetición en la cadena original. Esta asignación creó la cadena en los backticks. El resto del programa simplemente decodifica esto e imprime cada personaje dos veces:Bytes usados dos veces:
`'W
Registro de cambios
fuente