Oreoorererereoo
Dada una cadena de entrada que es similar a la palabra "oreo", proporcione una representación ASCII de la cookie que sea tan ancha como la cadena de entrada (para garantizar la estabilidad de la cookie).
Reglas
- La entrada es minúscula, una cadena no vacía sin espacios en blanco que contiene cualquier combinación de las cadenas "o" y "re", y que contiene solo esas cadenas.
- La cadena "o" representa la cookie sólida, mientras que la cadena "re" representa el relleno.
- La salida debe ser una cookie apilada que sea tan ancha como la cadena de entrada.
- La salida puede no ser una matriz de cadenas
- La cookie debe superponerse al relleno por un carácter en cada lado
- Los caracteres utilizados para la salida no tienen que coincidir con la salida a continuación (█ y ░), solo tienen que ser diferentes caracteres que no sean espacios en blanco para las dos partes de la cookie
- Se requiere el relleno de espacios en blanco en el lado izquierdo del relleno, y cualquier espacio en blanco final es opcional
Ejemplos
Input: oreo
Output:
████
░░
████
Input: o
Output:
█
Input: re
Output: (two spaces)
Input: rere
Output:
░░
░░
Input: oreoorererereoo
Output:
███████████████
░░░░░░░░░░░░░
███████████████
███████████████
░░░░░░░░░░░░░
░░░░░░░░░░░░░
░░░░░░░░░░░░░
░░░░░░░░░░░░░
███████████████
███████████████
Dado que este es el código de golf, la respuesta más corta gana, buena suerte :)
re
debería ser ahora aceptable1 or 2 spaces
, ¿no necesariamente 2?Respuestas:
Jalea ,
16 1413 bytes-1 Gracias a Erik the Outgolfer
Usos
1
para la crema y0
para la galleta.Pruébalo en línea!
¿Cómo?
16 byter anterior:
Usos
r
para el cr
eam yo
para el co
okie.Pruébalo en línea!
fuente
Pepe , 364 bytes
Desafortunadamente, el intérprete en línea no se encarga de comprimir los comentarios, por lo tanto, todos los
o
caracteres serán reemplazados por un espacio ... Ni los espacios ni loso
son necesarios, por lo que esto podría ser de 295 bytes, pero me gusta más de esta manera:Pruébalo en línea!
Sin golf
Puede haber algunas oportunidades de golf con banderas que me perdí, pero ya he terminado:
fuente
Lienzo ,
191817 bytesPruébalo aquí!
Utiliza el código largamente molesto de
:r≠*┤]
eliminarr
s de la entrada.fuente
Japt
-R
,1615 bytesIntentalo
Alternativas
fuente
C # (compilador interactivo de Visual C #) , 95 bytes
Pruébalo en línea!
Alternativa usando Agregado, 108 bytes
Pruébalo en línea!
fuente
o
, ya que eln.Length-2
resultado será-1
.n.Length-2
es para cuando la entrada tienere
.R , 106 bytes
Pruébalo en línea!
Versión anterior con explicación:
R , 118 bytes
Pruébalo en línea!
Código desenrollado y explicación:
fuente
05AB1E ,
181716 bytes-1 byte gracias a @Emigna
Usos
o
para la galleta yr
para el relleno.Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
fuente
oro
no es una entrada posible, ya que la entrada solo contendráo
syre
s. De todos modos,oro
todavía parece salir correctamente siguiendo la especificación, ya queooo\n r\nooo
sale . ¿Qué tiene de malo?2*
puede ser·
y el espacio en blanco que falta puede».c
.c.B»
·
, ¡gracias! :) Y siempre es bueno tener especificaciones cambiantes durante el desafío, suspiro ..Retina ,
7473 bytesSiento que no he publicado una respuesta en mucho tiempo. Pues aquí estoy. Además, Retina ha cambiado mucho, y siento que ahora soy un asco.
Pruébalo en línea!
fuente
[or]
significao
o enr
lugar de[
o]
. Me duele la cabeza.Retina , 21 bytes
Pruébalo en línea! Explicación:
Eliminar el
r
s.Liste cada letra en su propia línea repetida a la longitud de la entrada original.
Reemplace los primeros dos
ee
s en cada línea con un espacio.fuente
&
: PC (gcc) ,
135113109104 bytesveintidósveintisiete bytes gracias a NieDzejkob .Pruébalo en línea!
fuente
-D$=putchar
e=o
a la condición del primer bucle for y luego elimina el resto.JavaScript ES6, 103 bytes
Usando reemplazar 103 bytes:
Pruébalo en línea!
Usando dividir y asignar 116 bytes:
Pruébalo en línea!
fuente
${"|".repeat(s>1?s-2:0)}
y sus espacios en blanco, en lugar de usar" "+"|".repeat(s>1?s-2:0)
.Perl 5
-p
, 47 bytesPruébalo en línea!
fuente
Python 3 , 77 bytes
Pruébalo en línea!
fuente
+" \n"
para guardar un byte.Mathematica,
11191 bytes¡Pruébelo en línea!
Esto se acortó principalmente gracias a las ediciones de Misha .
Mi código original:
Este código no es muy sofisticado, pero parece demasiado caro para convertirlo en cadenas y luego volverlo a hacer o hacer cualquier otra cosa inteligente.
En particular, con solo 3-4 comandos que tienen el nombre de Cadena, mi enfoque original no pudo guardar bytes en absoluto al tratar de abstraerlo. Por ejemplo, el siguiente es 129 bytes:
fuente
StringRepeat
puede serTable
porque<>
convertirá la lista en una cadena más tarde; elIf
es innecesaria, ya que se toma lare
rama sólo cuandon
es al menos 2; podemos ahorrar en paréntesis definiendon
solo cuando lo usamos. Pruébalo en línea!If
agregó porqueStringRepeat
arrojaría un error en el caso de "re"; no le permite repetir una cadena 0 veces.Table
no tiene esa limitación, ¡así que es un gran ahorro!Perl 6 , 37 bytes
Pruébalo en línea!
Bloque de código anónimo que toma una cadena e imprime el oreo, con
o
la galleta yr
la crema.Explicación:
fuente
o
podría usarse en lugar de∘
. Muy bien golfizado.Java 11, 110 bytes
Usos
=
para la galleta y~
para el relleno.Pruébalo en línea.
Explicación:
La solución anterior utiliza un reemplazo. Los siguientes mapas sobre los caracteres de la entrada en su lugar:
Java 11,
113112 bytes-1 byte gracias a @Neil .
Pruébalo en línea.
Explicación:
fuente
~c&1
?PHP ,
1009993 bytesPruébalo en línea!
AY. ¡Los nombres de funciones waaaay_too_long de PHP vuelven a aparecer!
Salida:
fuente
PHP ,
968785 bytesGracias a @gwaugh -9 Bytes
Gracias a @manatwork -2 Bytes
Pruébalo en línea!
Pruébalo en línea! (87 bytes)
¡Pruébelo en línea (presentación original de 97 bytes)!
Y una función recursiva
PHP , 135 bytes
Pruébalo en línea! (recursivo)
fuente
<?=
eso podemos usar<?
, ¿o me equivoco?' '.$r(o,$l-2).""
→" {$r(o,$l-2)}"
.""
lugar de''
$argn
: ¡ Pruébelo en línea!JavaScript,
726564 bytesPruébalo en línea
fuente
Powershell,
716966 bytes-2 bytes gracias @Veskah
-3 bytes gracias @AdmBorkBork
Menos guión de prueba de golf:
Salida:
fuente
$args
69 bytes[string[]]
es un[int[]]
... El[int[]]
es[int]
si la matriz contiene un solo elemento. ¡Excelente! ¡Gracias!r
puede ser" "+'%'*($l-2)
en su lugar para -3 bytes.Carbón de leña , 19 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Recorre los caracteres de la cadena de entrada.
Enciende cada personaje.
Si es un
o
, imprima la cadena de entrada reemplazada por#
s en su propia línea.Si es un
e
movimiento hacia la derecha, imprima una línea de-
s que sea dos menos que la longitud de la cadena de entrada, luego muévase hacia abajo y hacia la izquierda.fuente
Bash, 87 bytes
Sin
sed
:Gracias a @manatwork.
Con
sed
(90 bytes):fuente
test.sh
. A continuación, se llama a test.sh desde la línea de comandos de la siguiente manera:bash test.sh oreoorererereoo
.f
es necesario para repetir el$2
$1
número de caracteres varias vecesC # (compilador interactivo de Visual C #) , 71 bytes
Pruébalo en línea!
Tomó prestadas algunas ideas de la respuesta de Encarnación de la Ignorancia con seguridad.
-6 bytes gracias a @ASCIIOnly!
El concepto general es calcular un agregado de cadena sobre los caracteres de entrada siguiendo estas reglas:
r
se encuentra un, agregue un solocarácter de espacio para la sangría. Sabemos que el próximo personaje será un
e
.o
o unae
, genere una cadena repitiendo el carácter actual un número específico de veces y preponiéndola a una nueva línea o algún relleno y una nueva línea.PadLeft
función se utiliza para generar la cadena de caracteres repetitiva.El resultado es la concatenación de todas estas cadenas.
fuente
Pyth , 28 bytes
Pruébalo aquí! Este usa un bucle.
Pyth, 30 bytes
(Como reemplazo de cadena)
Pruébalo aquí! Este usa reemplazo de cadena.
Realmente me gusta Python (es en lo que escribí mis scripts de prueba originales), así que pensé en hacer una entrada de Pyth por diversión :)
fuente
█
y░
son tres bytes cada uno. ¿O me estoy perdiendo algo aquí?N
, ¡incluso ahorrando algunos bytes!33 chars, 37 bytes
, pero no en idiomas de golf en TIO. Pero en sus soluciones, solo cambiar esos caracteres realmente soluciona el problema, por lo que no es un gran problema aquí.Ruby ,
6260 bytesPruébalo en línea!
Usos
O
para la galleta,*
para el relleno.-1 gracias a @manatwork señalando un error tonto y otro -1 debido a la relajación de las reglas sobre espacios en blanco.
fuente
.gsub
de los parámetros.C # (.NET Core) , 143 bytes
Sin LINQ
Pruébalo en línea!
fuente
Clojure , 137 bytes
No estoy usando los simpáticos personajes en la impresión en la versión de golf ya que son caros. Devuelve una cadena para imprimir.
Pruébalo en línea!
Vea a continuación la explicación.
Pre-golf:
fuente
Dart ,
120106107 bytesPruébalo en línea!
fuente
Python 2 ,
777672 bytesPruébalo en línea!
La parte externa de la cookie es 'o' y el relleno es 'r'.
fuente
+' '
después(l-2)
. Además, tiene un error tipográfico,*' '
debe ser+' '
.Código de máquina x86-64 (Linux), 97 bytes
Esta función x86-64 toma el puntero a la cadena de entrada en rsi y construye la salida comenzando en el puntero en rdi (estos son los registros utilizados para pasar los dos primeros argumentos de una función C en Linux). Para mayor comodidad, he escrito un contenedor de C ++ para esto que también hace una buena desinfección de entrada e imprime la salida. Ese código se puede encontrar aquí . Esto también muestra el ensamblaje de sintaxis nasm original que escribí para esta función (así como la versión sin golf en la que trabajé primero).
Algunas cosas a tener en cuenta es que este código no respeta ningún registro guardado de la persona que llama, lo que significa que el código C ++ probablemente se bloqueará si se ejecuta durante un tiempo después de llamar a esta función. En mi máquina no, pero eso es bastante sorprendente. Tampoco agrego un byte nulo para delimitar la cadena de salida, y en su lugar, el espacio asignado para la cadena de salida se llena previamente con bytes. (Si esto no está permitido, puedo agregar el terminador nulo a un costo de 3 bytes).
La lógica de este código es esencialmente contar la longitud de la cadena, luego construir una línea de esta longitud para cada carácter 'o' y 'r' visto en la cadena de entrada, y luego para cualquier carácter 'e' visto, reemplazando el primero y últimos caracteres en la línea anterior con caracteres de espacio.
No puedo encontrar ningún lugar en línea para compilar y ejecutar una combinación de código fuente C ++ y nasm, por lo que podría escribir un pequeño código de envoltura para que esto demuestre que funciona.De lo contrario, debería poder compilar y ejecutar esto con el archivo MAKE en el enlace que le di con el comando:Pude formatear el ensamblaje a algo aceptable por gcc, ¡así que pruébelo en línea!
fuente