Oreoorererereoo
Dada uma sequência de entrada semelhante à palavra "oreo", forneça uma representação ASCII do cookie que seja tão larga quanto a sequência de entrada (para garantir a estabilidade do cookie).
Regras
- A entrada é minúscula, uma sequência não-vazia, sem espaço em branco, que contém qualquer combinação das sequências "o" e "re" e contém apenas essas sequências.
- A sequência "o" representa o cookie sólido, enquanto a sequência "re" representa o preenchimento.
- A saída deve ser um cookie empilhado que seja tão largo quanto a sequência de entrada.
- A saída pode não ser uma matriz de strings
- O cookie deve sobrepor o preenchimento por um caractere de cada lado
- Os caracteres usados para a saída não precisam corresponder à saída abaixo (█ e ░), eles apenas precisam ser caracteres diferentes de espaço em branco diferentes para as duas partes do cookie
- É necessário o preenchimento de espaço em branco no lado esquerdo do preenchimento e qualquer espaço em branco à direita é opcional
Exemplos
Input: oreo
Output:
████
░░
████
Input: o
Output:
█
Input: re
Output: (two spaces)
Input: rere
Output:
░░
░░
Input: oreoorererereoo
Output:
███████████████
░░░░░░░░░░░░░
███████████████
███████████████
░░░░░░░░░░░░░
░░░░░░░░░░░░░
░░░░░░░░░░░░░
░░░░░░░░░░░░░
███████████████
███████████████
Como esse é o código de golfe, a resposta mais curta vence, boa sorte :)
re
agora seja aceitável1 or 2 spaces
, pois não necessariamente 2?Respostas:
Geléia ,
16 1413 bytes-1 Agradecimentos a Erik, o Outgolfer
Usa
1
para o creme e0
para o biscoito.Experimente online!
Quão?
16 byter anterior:
Usa
r
para a equiper
eo
para a equipeo
.Experimente online!
fonte
Pepe , 364 bytes
Infelizmente, o intérprete on-line não cuida da compactação de comentários, portanto, todos os
o
caracteres serão substituídos por um espaço. Nem os espaços nem oo
são necessários, portanto podem ser 295 bytes, mas eu gosto mais desta maneira:Experimente online!
Ungolfed
Pode haver algumas oportunidades de golfe com bandeiras que eu perdi, mas acabei por enquanto:
fonte
Tela ,
191817 bytesExperimente aqui!
Usa o código irritantemente longo de
:r≠*┤]
para removerr
s da entrada.fonte
Japonês
-R
,1615 bytesTente
Alternativas
fonte
C # (compilador interativo do Visual C #) , 95 bytes
Experimente online!
Alternativa usando Agregado, 108 bytes
Experimente online!
fonte
o
, poisn.Length-2
isso resultará em-1
.n.Length-2
é para quando a entrada tiverre
.R , 106 bytes
Experimente online!
Versão anterior com explicação:
R , 118 bytes
Experimente online!
Código desenrolado e explicação:
fonte
05AB1E ,
181716 bytes-1 byte graças a @Emigna
Usa
o
para o cookie er
para o recheio.Experimente online ou verifique todos os casos de teste .
Explicação:
fonte
oro
não é uma entrada possível, pois a entrada conterá apenaso
s ere
s. Independentemente disso,oro
ainda parece ter uma saída correta seguindo a especificação, uma vez que éooo\n r\nooo
emitida . O que há de errado nisso?2*
pode ser·
e o espaço em branco ausente pode ser corrigido alterando».c
para.c.B»
·
, obrigado! :) E sempre bom ter especificações alteradas durante o desafio, suspiro ..Retina ,
7473 bytesSinto que não publico uma resposta há muito tempo. Bem, aqui estou eu. Além disso, a Retina mudou muito e sinto que sou péssima agora.
Experimente online!
fonte
[or]
significao
ou emr
vez de[
ou]
. Faz minha cabeça doer.Retina , 21 bytes
Experimente online! Explicação:
Exclua os
r
s.Liste cada letra em sua própria linha repetida para o comprimento da entrada original.
Substitua os dois primeiros
ee
s em cada linha por um espaço.fonte
&
: PC (gcc) ,
135113109104 bytesvinte e doisvinte e sete bytes graças a NieDzejkob .Experimente online!
fonte
-D$=putchar
e=o
para a condição do primeiro loop for e depois remover o else.JavaScript ES6, 103 bytes
Usando substituir 103 bytes:
Experimente online!
Usando divisão e mapear 116 bytes:
Experimente online!
fonte
${"|".repeat(s>1?s-2:0)}
e seus espaços em branco, em vez de usar" "+"|".repeat(s>1?s-2:0)
.Perl 5
-p
, 47 bytesExperimente online!
fonte
Python 3 , 77 bytes
Experimente online!
fonte
+" \n"
para salvar um byte.Mathematica,
11191 bytesExperimente Online!
Este foi majorly encurtado graças ao Misha 's edições .
Meu código original:
Esse código não é muito sofisticado, mas parece muito caro converter-se de strings e depois voltar ou fazer qualquer outra coisa inteligente.
Em particular, com apenas 3-4 comandos com o nome String, minha abordagem original não conseguiu salvar bytes tentando abstraí-lo. Por exemplo, o seguinte é 129 bytes:
fonte
StringRepeat
pode ser,Table
pois<>
converterá a lista em uma string posteriormente; oIf
é desnecessário, pois assumimos ore
ramo somente quandon
tiver pelo menos 2; podemos economizar parênteses definindon
apenas quando o usamos. Experimente online!If
foi adicionado porqueStringRepeat
lançaria um erro no caso de "re"; não permite que você repita uma string 0 vezes.Table
não tem essa limitação, então é uma grande salva!Perl 6 , 37 bytes
Experimente online!
Bloco de código anônimo que pega uma string e imprime o oreo, com
o
o cookie er
o creme.Explicação:
fonte
o
poderia ser usado no lugar de∘
. Muito bem jogado.Java 11, 110 bytes
Usa
=
para o cookie e~
para o recheio.Experimente online.
Explicação:
A solução acima usa uma substituição. Os seguintes mapas mapeiam os caracteres da entrada:
Java 11,
113112 bytes-1 byte graças a @Neil .
Experimente online.
Explicação:
fonte
~c&1
?PHP ,
1009993 bytesExperimente online!
OUCH. Os nomes de funções waaaay_too_long do PHP atacam novamente!
Resultado:
fonte
PHP ,
968785 bytesObrigado a @gwaugh -9 Bytes
Obrigado a @manatwork -2 Bytes
Experimente online!
Experimente online! (87 bytes)
Experimente online (envio original de 97 bytes)!
E uma função recursiva
PHP , 135 bytes
Experimente online! (recursivo)
fonte
<?=
podermos usar<?
, ou estou enganado?' '.$r(o,$l-2).""
→" {$r(o,$l-2)}"
.""
istead de''
$argn
: Experimente online!JavaScript,
726564 bytesExperimente online
fonte
Powershell,
716966 bytes-2 bytes obrigado @Veskah
-3 bytes obrigado @AdmBorkBork
Script de teste com menos golfe:
Resultado:
fonte
$args
69 bytes[string[]]
é um[int[]]
... O[int[]]
é[int]
se a matriz contiver apenas um elemento. Ótimo! Obrigado!r
pode usar" "+'%'*($l-2)
-3 bytes.Carvão , 19 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
Faça um loop pelos caracteres da sequência de entrada.
Ligue cada personagem.
Se for um
o
, imprima a sequência de entrada substituída por#
s em sua própria linha.Se for um
e
movimento para a direita, imprima uma linha de-
s que seja dois a menos que o comprimento da sequência de entrada e, em seguida, mova para baixo e para a esquerda.fonte
Bash, 87 bytes
Sem
sed
:Graças a @manatwork.
Com
sed
(90 bytes):fonte
test.sh
. Então, você chama test.sh na linha de comando da seguinte forma:bash test.sh oreoorererereoo
.f
é necessário repetir o$2
$1
número de caracteres várias vezesC # (compilador interativo do Visual C #) , 71 bytes
Experimente online!
Emprestou algumas idéias da resposta da Modalidade de Ignorância, com certeza.
-6 bytes graças a @ASCIIOnly!
O conceito geral é calcular uma cadeia de caracteres agregada sobre os caracteres de entrada seguindo estas regras:
r
for encontrado, adicione umcaractere de espaço único para indentação. Sabemos que o próximo personagem será um
e
.o
ou ume
for encontrado, gere uma sequência repetindo o caractere atual um número específico de vezes e acrescentando-o a uma nova linha ou a um preenchimento e a uma nova linha.PadLeft
função é usada para gerar a sequência de caracteres repetidos.O resultado é a concatenação de todas essas seqüências.
fonte
Pitão , 28 bytes
Experimente aqui! Este usa um loop.
Pitão, 30 bytes
(Como string substituir)
Experimente aqui! Este usa substituição de string.
Eu realmente gosto de python (foi no que escrevi meus scripts de teste originais), então pensei em fazer uma entrada pyth por diversão :)
fonte
█
e░
três bytes cada. Ou estou faltando alguma coisa aqui?N
, economizando alguns bytes!33 chars, 37 bytes
, mas não nas linguagens de golfe no TIO. Mas nas suas soluções, apenas alterar esses caracteres corrige o problema, então não é um problema tão grande aqui.Ruby ,
6260 bytesExperimente online!
Usa
O
para o cookie,*
para o recheio.-1 graças a @manatwork apontando um erro bobo e outro -1 devido ao relaxamento das regras sobre espaços em branco.
fonte
.gsub
dos parâmetros.C # (.NET Core) , 143 bytes
Sem LINQ.
Experimente online!
fonte
Clojure , 137 bytes
Não estou usando os bons caracteres impressos na versão golfada, pois são caros. Retorna uma string a ser impressa.
Experimente online!
Veja abaixo a explicação.
Pré-golfe:
fonte
Dardo ,
120106107 bytesExperimente online!
fonte
Python 2 ,
777672 bytesExperimente online!
A parte externa do cookie é 'o' e o recheio é 'r'.
fonte
+' '
depois(l-2)
. Além disso, você tem um erro de digitação,*' '
deve ser+' '
.código de máquina x86-64 (Linux), 97 bytes
Essa função x86-64 pega o ponteiro para a string de entrada em rsi e constrói a saída iniciando no ponteiro em rdi (esses são os registradores usados para passar os dois primeiros argumentos de uma função C no Linux). Por conveniência, escrevi um wrapper C ++ para isso, que também faz uma boa limpeza de entrada e imprime a saída. Esse código pode ser localizado aqui . Isso também mostra o conjunto de sintaxe nasm original que escrevi para esta função (bem como a versão sem golf que trabalhei primeiro).
Algumas coisas a serem observadas é que esse código não respeita nenhum registro salvo de callee, o que significa que o código C ++ provavelmente falhará se for executado por um tempo depois de chamar esta função. Na minha máquina, não, mas isso é bastante surpreendente. Também não adiciono um byte nulo para delimitar a sequência de saída e, em vez disso, o espaço alocado para a sequência de saída é preenchido com bytes. (Se isso não for permitido, posso adicionar o terminador nulo a um custo de 3 bytes).
A lógica para esse código é essencialmente contar o comprimento da sequência, construindo uma linha desse comprimento para cada caractere 'o' e 'r' visto na sequência de entrada e, em seguida, para qualquer caractere 'e' visto, substituindo o primeiro e últimos caracteres na linha anterior com caracteres de espaço.
Não consigo encontrar nenhum lugar on-line para compilar e executar uma mistura de código-fonte C ++ e nasm, portanto, devo escrever um pequeno código de invólucro para isso para provar que funciona.Caso contrário, você poderá compilar e executar isso com o makefile no link que forneci com o comando:Consegui formatar o assembly para algo aceitável pelo gcc, então tente online!
fonte