Nesse desafio, você receberá um bloco de texto e precisará refletir sobre o texto.
Entrada:
- Uma sequência a ser refletida. O texto não pode ser fornecido como uma matriz cujos elementos são as linhas de texto. Por exemplo,
"ab\ncd"
e['a','b','\n','c','d']
são permitidos, mas['ab','cd']
ou[['a','b'],['c','d']]
não são. Você pode supor que todas as linhas tenham o mesmo número de caracteres (preenchido com espaço em branco quando necessário). - Um booleano onde
True
indica reflexão Y eFalse
indica reflexão X
As duas entradas podem ser passadas em qualquer ordem.
Saída:
A sequência refletida. Os personagens não mudam, apenas sua posição. O bloco de imagem resultante deve estar alinhado com o canto superior esquerdo (a primeira linha e coluna devem conter um caractere que não seja um espaço em branco). Espaço em branco à direita (em qualquer uma das linhas) é permitido.
Casos de teste:
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
Como é um código de golfe , responda com a resposta mais curta no seu idioma favorito!
1
e0
) ou devemos usarTrue
eFalse
?\n
eu diria que não é uma representação de string.Respostas:
C #,
168144141120 bytesJuntar a sobrecarga que leva um IEnumerable, a primeira solução foi usá-lo inadvertidamente, eu só era capaz de usá-lo para o outro lado do ternário.
Atualizar:
A nova versão é uma lambda anônima e usa currying para economizar 21 bytes no total. Isso muda o uso para estar
f("text")(false)
onde f é a função anônima.Ungolfed:
fonte
Pyke, 7 bytes
Experimente aqui!
fonte
Brainfuck,
143140131 bytesBata
sC #.O desafio foi fácil o suficiente para Brainfuck, e eu aparentemente estava cansado o suficiente para ter que fazer isso.
Leva o booleano como um
0x00
byte (falso) ou qualquer outro (verdade) byte no início da entrada e, em seguida, uma string preenchida com retângulo.Emite uma nova linha à direita para o flip Y e nenhuma para o flip X.
Requer um intérprete que suporte localizações de memória à esquerda do início (não tem certeza se ainda é necessário) e fornece EOF como
0x00
. Um desses intérpretes está aqui . Obviamente, não suporta bytes nulos na entrada por causa disso.O código tem muitos blocos com 10
+
'ou-
' s; esses provavelmente podem ser reduzidos.Versão comentada
fonte
Código de máquina x86 de 32 bits, 76 bytes
Em hexadecimal:
Entrada::
EBX
sinalizador de direção (0/1),:ESI
sequência de entrada,:EDI
buffer de saída. A entrada é necessária para ser retangular.fonte
Haskell,
514945 bytesExemplo de uso:
Divida em linhas, inverta as linhas (True) ou inverta cada linha (False) e junte-as em uma única string novamente. No caso de uma
True
entrada,map r:[r|b]
há uma lista de duas funções[<reverse each line>, <reverse lines>]
e, para umaFalse
entrada, uma lista com uma função[<reverse each line>]
.last
escolhe o último elemento desta lista.fonte
Geléia , 8 bytes
Experimente aqui.
fonte
Python, 56 bytes
Ligue com uma string
s
e qualquer valor de verdade / falseyr
.fonte
True
, o que também poderia ser1
. Você não pode restringir a entrada para ser apenas0
ou2
.Python 3.5, 61 bytes:
Uma função lambda anônima simples que assume entrada retangular. Chame-o primeiro nomeando a função e, em seguida, chamando-a de dentro
print()
. Em outras palavras, se a função foram nomeadosH
, chamá-lo assimprint(H(<Bool value>, <String>))
, onde<Bool Value>
é qualquer valor verdadeiro ou falso (ie0/1
,true/false
etc.) e<String>
é a seqüência de entrada.Veja em ação! (repl.it)
Aqui está outra versão com o mesmo comprimento que também assume entrada retangular, mas desta vez uma função nomeada , ou seja, você não precisa nomeá-la primeiro nem envolvê-la por dentro
print()
:Simplesmente chame este de como
J(<Bool Value>,<String>)
.Veja isso em ação! (repl.it)
No entanto, eu não sou o único a parar por aí. Embora nos seja permitido assumir uma entrada retangular, também criei uma versão que não assume esse tipo de entrada. Portanto, ele espaçará todas as linhas com o mesmo comprimento, com base na linha com o comprimento máximo se e somente se a
<Bool>
entrada forFalse
, pois apenas uma reflexão X resultará no "flipping" da string. Agora, sem mais delongas, aqui está a versão assumida não retangular, com um comprimento de134129 bytes na forma de uma função normal:Veja este último em ação! (repl.it)
fonte
MATL , 11 bytes
Experimente online!
A primeira entrada é a cadeia de linhas múltiplas. Como o MATL não reconhece
\n
como avanço de linha, a sequência de múltiplas linhas deve ser definida como uma concatenação de substrings ou caracteres individuais e10
(ASCII para avanço de linha, que é interpretado como um caractere). A concatenação no MATL é[... ...]
ou[..., ...]
(vírgulas são opcionais). Portanto, por exemplo, a entrada pode ser a seguinte (concatenação de uma sequência, avanço de linha e outra sequência):ou equivalente (concatenação de caracteres individuais)
ou (o mesmo com vírgulas)
A segunda entrada pode ser inserida como
1
/0
ou equivalente comoT
/F
paratrue
/false
respectivamente.Explicação
fonte
Brachylog ,
262416 bytesEspera uma lista contendo a string e o booleano
1
ou0
, por exemplo,Explicação
fonte
Pitão, 10 bytes
Suíte de teste.
fonte
Bash + utilitários comuns do linux, 16
Valor booleano (zero ou diferente de zero) passado como um parâmetro de linha de comando. E / S do bloco de texto via STDIN / STDOUT. Supõe que todas as linhas tenham o mesmo comprimento, conforme indicado nos comentários .
fonte
C (Ansi), 193 bytes
Golfe:
Ungolfed:
Uso:
Argumentos de compilação:
Exemplo de entrada:
A entrada está em ou não t para true de false, seguida por um lead do espaço de notícias e uma sequência arrastada.
Saída de exemplo:
fonte
JavaScript (ES 6) 83 bytes
fonte
f(c,0)
quando tento - talvez o seuc
não tenha todos os espaços nos lugares certos.Julia, 59 bytes
Experimente online!
fonte
J, 29 bytes
A entrada LHS é o booleano em que 0 é falso e 1 é verdadeiro. RHS é a entrada da string.
fonte
JavaScript (ES6), 76
fonte
Java 99 bytes
Golfe:
fonte
Perl, 35 bytes
Código de 34 bytes + 1 para
-n
.Requer que as linhas de entrada sejam preenchidas com espaços. 13 (!) Bytes salvos graças a @ Dada .
Uso
fonte
perl -ne 'print/T/?reverse<>:map~~reverse,<>'
deve salvar 13 bytes :-)Mathematica, 70 bytes
Função anônima, recebe um valor booleano como primeiro argumento (explicitamente
True
ouFalse
no Mathematica) e a cadeia de caracteres (multilinhas) como segundo argumento. Importa a sequência como uma lista de sequências correspondentes às linhas da sequência multilinha (a sequência NÃO é passada para a função como uma matriz). SeTrue
, inverta a lista. SeFalse
StringReverse
a lista, que é aplicada automaticamente a cada elemento por vez. Em seguida, exporte a lista como uma sequência, em que cada elemento é uma nova linha.fonte
05AB1E , 10 bytes
Explicação
Experimente online!
fonte
Vim, 33 bytes
Mudou a resposta V anterior para o Vim. Qualquer resposta em V seria bem diferente, então não era realmente justo.
Experimente online!
Hexdump
fonte