En este desafío, se le dará un bloque de texto y deberá realizar una reflexión sobre el texto.
Entrada:
- Una cuerda para ser reflejada. El texto no se puede suministrar como una matriz cuyos elementos son las líneas de texto. Por ejemplo,
"ab\ncd"
y['a','b','\n','c','d']
están permitidos, pero['ab','cd']
o[['a','b'],['c','d']]
no lo son. Puede suponer que todas las líneas tienen el mismo número de caracteres (rellenadas con espacios en blanco donde sea necesario). - Un valor booleano donde
True
indica reflexión Y eFalse
indica reflexión X
Las dos entradas se pueden pasar en cualquier orden.
Salida:
La cuerda reflejada. Los personajes no cambian, solo su posición. El bloque de imagen resultante debe estar alineado con la esquina superior izquierda (la primera fila y la columna deben contener un carácter que no sea un espacio en blanco). Se permite el espacio en blanco al final (en cualquiera de las líneas).
Casos de prueba:
False
o /
--|/
|
/ \
/ o
/|--
|
\ /
True
o /
--|/
|
/ \
/ \
|
--|/
o /
True
text
text
False
text
txet
True
P
P
C
G
G
C
P
P
False
P
P
C
G
P
P
C
G
True
abcde
fghij
kl mn
opqrs
tuvwx
tuvwx
opqrs
kl mn
fghij
abcde
Este es un código de golf , ¡así que responda con la respuesta más corta en su idioma favorito!
1
y0
) o debemos usarTrue
yFalse
?\n
, iría tan lejos como para decir que no es una representación de cadena.Respuestas:
C #,
168144141120 BytesLa nueva versión utiliza la cadena obvia. Sobrecarga conjunta que toma un IEnumerable, la primera solución fue usarlo inadvertidamente. También pude usarlo para el otro lado del ternario.
Actualizar:
La nueva versión es una lambda anónima y utiliza curry para guardar un total de 21 bytes. Esto cambia el uso para ser
f("text")(false)
donde f es la función anónima.Sin golf:
fuente
Pyke, 7 bytes
Pruébalo aquí!
fuente
Brainfuck,
143140131 bytesBatir
sC #.El desafío fue bastante fácil para Brainfuck, y aparentemente estaba lo suficientemente cansado como para tener que hacerlo.
Toma el booleano como un
0x00
(falso) o cualquier otro byte (verdadero) al comienzo de la entrada, luego una cadena rellena de rectángulo.Emite una nueva línea final para el flip Y, y ninguna para el flip X.
Requiere un intérprete que admita ubicaciones de memoria a la izquierda del inicio (no estoy seguro si aún es necesario) y proporciona EOF como
0x00
. Uno de esos intérpretes está aquí . Obviamente, no admite bytes nulos en la entrada debido a eso.El código tiene muchos bloques con 10
+
's o-
' s; Es probable que se puedan reducir.Versión comentada
fuente
Código de máquina x86 de 32 bits, 76 bytes
En hexadecimal:
Entrada::
EBX
indicador de dirección (0/1),:ESI
cadena de entrada,:EDI
búfer de salida. Se requiere que la entrada sea rectangular.fuente
Haskell,
514945 bytesEjemplo de uso:
Divida en líneas, invierta las líneas (Verdadero) o invierta cada línea (Falso) y vuelva a unirlas en una sola cadena. En el caso de una
True
entrada,map r:[r|b]
es una lista de dos funciones[<reverse each line>, <reverse lines>]
y para unaFalse
entrada una lista con una función[<reverse each line>]
.last
selecciona el último elemento de esta lista.fuente
Jalea , 8 bytes
Pruébalo aquí
fuente
Python, 56 bytes
Llame con una cadena
s
y cualquier valor verdadero / falsor
.fuente
True
, lo que también podría ser1
. No puede restringir la entrada para que sea solo0
o2
.Python 3.5, 61 bytes:
Una función lambda anónima simple que asume una entrada rectangular. Llámalo nombrando primero la función y luego llamándola envuelta dentro
print()
. En otras palabras, si la función fueron nombradosH
, llamar asíprint(H(<Bool value>, <String>))
, donde<Bool Value>
es cualquier valor verdadero o falso (es decir0/1
,true/false
, etc.) y<String>
es la cadena de entrada.¡Véalo en acción! (repl.it)
Aquí hay otra versión con la misma longitud que también asume una entrada rectangular, pero esta vez una función con nombre , es decir, no tiene que nombrarla primero ni envolverla dentro
print()
:Simplemente llame a este como
J(<Bool Value>,<String>)
.¡Mira esto en acción! (repl.it)
Sin embargo, no soy yo quien se detiene allí. Aunque se nos permite asumir una entrada rectangular, también creé una versión que no asume ese tipo de entrada. Por lo tanto, espaciará todas las líneas a la misma longitud en función de la línea con la longitud máxima si y solo si la
<Bool>
entrada esFalse
, ya que solo una reflexión X dará como resultado que la cadena se "voltee". Ahora, sin más preámbulos, aquí está la versión de suposición no rectangular con una longitud de134129 bytes en forma de una función normal:¡Mira este último en acción! (repl.it)
fuente
MATL , 11 bytes
Pruébalo en línea!
La primera entrada es la cadena multilínea. Dado que MATL no reconoce
\n
como salto de línea, la cadena multilínea debe definirse como una concatenación de subcadenas o caracteres individuales y10
(ASCII para salto de línea, que se interpreta como un carácter). La concatenación en MATL es[... ...]
o[..., ...]
(las comas son opcionales). Entonces, por ejemplo, la entrada puede ser la siguiente (concatenación de una cadena, salto de línea y otra cadena):o equivalente (concatenación de caracteres individuales)
o (lo mismo con comas)
La segunda entrada se puede ingresar como
1
/0
o equivalentemente comoT
/F
paratrue
/false
respectivamente.Explicación
fuente
Brachylog ,
262416 bytesEspera una lista que contiene la cadena y el booleano
1
o0
, por ejemploExplicación
fuente
Pyth, 10 bytes
Banco de pruebas.
fuente
Bash + utilidades comunes de Linux, 16
Valor booleano (cero o no cero) pasado como un parámetro de línea de comandos. E / S del bloque de texto a través de STDIN / STDOUT. Asume que todas las líneas tienen la misma longitud, como se indica en los comentarios .
fuente
C (Ansi), 193 bytes
Golfizado:
Sin golf:
Uso:
Argumentos de compilación:
Entrada de ejemplo:
La entrada es t o no para verdadero o falso seguido de un encabezado de espacio de noticias y una cadena arrastrada.
Salida de ejemplo:
fuente
JavaScript (ES 6) 83 bytes
fuente
f(c,0)
cuando lo intento, tal vez tuc
no tiene todos los espacios en los lugares correctos.Julia, 59 bytes
Pruébalo en línea!
fuente
J, 29 bytes
La entrada LHS es el booleano donde 0 es falso y 1 es verdadero. RHS es la entrada de cadena.
fuente
JavaScript (ES6), 76
fuente
Java 99 bytes
Golfizado:
fuente
Perl, 35 bytes
Código de 34 bytes + 1 para
-n
.Requiere que las líneas de entrada se rellenen con espacios. 13 (!) Bytes guardados gracias a @ Dada .
Uso
fuente
perl -ne 'print/T/?reverse<>:map~~reverse,<>'
debe ahorrar 13 bytes :-)Mathematica, 70 bytes
Función anónima, toma un valor booleano como primer argumento (explícitamente
True
oFalse
en Mathematica) y la cadena (multilínea) como segundo argumento. Importa la cadena como una lista de cadenas correspondientes a las líneas de la cadena multilínea (la cadena NO se pasa a la función como una matriz). SiTrue
, invierte la lista. SiFalse
StringReverse
la lista, que se aplica automáticamente a cada elemento a su vez. Luego, exporte la lista como una cadena, donde cada elemento es una nueva línea.fuente
05AB1E , 10 bytes
Explicación
Pruébalo en línea!
fuente
Vim, 33 bytes
Se cambió la respuesta V anterior a Vim. Cualquier respuesta V sería muy diferente, por lo que no fue realmente justo.
Pruébalo en línea!
Hexdump
fuente