Você reconhece o logotipo PPCG? fica assim, quando você faz uma arte ascii.
+---+
|PCG|
+---+
v
Agora, neste Code Golf, você criará um código que cria logotipos para outros sites, semelhantes ao logotipo PPCG.
O que você deveria fazer
A string "Encurtada" será a string, com todas as letras maiúsculas e números na string de entrada (que seria PPCG
quando a string de entrada for Programming Puzzles & Code Golf
)
A Caixa" (
+---+
| |
+---+
v
) deve caber perfeitamente na corda encurtada. (Não é maior ou menor)
Além disso, a v
peça deve ser exatamente 1 para baixo e 1 para a esquerda, para a direita +
.
Em seguida, imprima a caixa que possui a string encurtada.
Exemplo
Stack Overflow
:
+--+
|SO|
+--+
v
Area 51
:
+---+
|A51|
+---+
v
Regras
Você pode supor que a entrada contenha pelo menos um dígito ou letra maiúscula.
Aplicam-se as regras de código-golfe padrão .
^
texto não adiciona muito em comparação com o segundo desafio que vinculei, mas não vou lançar um golpe nisso, mas deixo que a comunidade decida se eles o consideram um idiota ou não.99 Bottles Of Beer
, seria99BOB
.Respostas:
Vim, 42 golpes
Substitua
<DOWN>
por ↓,<LEFT>
com ←,<ESC>
com esce<C-V>
com CTRL+ V.Aqui está uma animação desse script em execução (versão antiga que usa um em
V
vez de av
):Explicação do script:
fonte
i+↓←|␛␖ky$p
porA+↓|␛␖ky0P
para salvar um byte.I|<END>|␛
V 34 bytes
Observe que isso funcionou em uma versão mais antiga, mas não funciona na versão atual, tente online. Eu mudei
Ä
paraYP
qual é funcionalmente equivalente.Experimente online!
Explicação:
Remova tudo, exceto dígitos e caracteres maiúsculos.
Agora, o buffer fica assim:
E nosso cursor está na primeira coluna da última linha.
Versão não concorrente: (31 bytes)
fonte
Programming Puzzles & Code Golf
produz a string incorretaPP&CG
na saída. O&
deve ser removidoCódigo de máquina x86 de 16 bits, 72 bytes
Em hexadecimal:
Parâmetros:
SI
= string de entrada,DI
- buffer de saída.Gera uma sequência terminada em NULL com linhas delimitadas por nova linha. Usa a string de entrada como um buffer temporário.
fonte
3c 41 cmp al,a'
não deveria ser3c 41 cmp al,'a'
?Retina , 43 bytes
Experimente online!
Este é o desafio perfeito para demonstrar a Retina, a linguagem de golfe de Martin Ender.
Essa solução é dividida em duas etapas (o que chamamos de etapas), sendo ambas as etapas uma substituição.
O primeiro estágio:
Isso corresponde às substrings correspondentes
[^A-Z\d]
, que são os caracteres que não estão em maiúsculas e nem dígitos e, em seguida, os substituem por nada, o que significa excluí-los.A segunda etapa:
Ele
.+
corresponde ao resultado inteiro e o substitui pela segunda linha.Na segunda linha:
$&
refere-se a toda a partida$.&
refere-se à duração de toda a partida$*
significa pegar o número inteiro anterior, repita o próximo caractere várias vezes. Aqui$.&$*-
significa repetir a-
duração da partida.¶
refere-se a uma nova linha.fonte
T`dLp`dL_
mas infelizmente tem o mesmo comprimento.C #,
183177165bytesmultiplicar caracteres é terrível em C #. sugestões apreciadas
muito obrigado a aloisdg por -18 bytes
fonte
| |
por|
return$"+{x}+\n|{s}|\n+{x}+\n{new string(' ',m+1)}v";}
string.Join("",
porstring.Concat(
return
VBA do Excel,
375359358 bytes:Funciona, desisto de tentar diminuir ...
Editar: Alternada para instrução de caso de instruções if, -16 bytes
Edit2: Se livrou de u e substituído por Len (b), -1 byte
fonte
Lua,
14599 bytesNão há muito a dizer, manipular strings é sempre prolixo na lua :). Obtém um argumento da linha de comando e gera saída via STDOUT
Obrigado a @LeakyNun por me salvar 45 bytes!
100 bytes propostos por @LeakyNun
OLD 145 Bytes
Ungolfed
fonte
n=(...):gsub("[^A-Z%d]","")s="+"..("-"):rep(#n).."+\n"return s.."|"..n.."|\n"..s..(" "):rep(#n).."V"
é de 100 bytes%u
, ganhamos mais alguns bytes. De qualquer forma, graças :) (atualizará o mais tarde ungolfed)2sable ,
3634333231 bytesApresentando 2sable :). Embora tenha muito em comum com 05AB1E, este realmente se junta automaticamente à pilha em vez de gerar a parte superior da pilha. Código:
Usa a codificação CP-1252 .
fonte
JavaScript (ES6), 99 bytes
fonte
Haskell, 107 bytes
Esta resposta é fortemente baseada na resposta de Zylviij e nos comentários de nimi . Eu teria acrescentado mais comentários a essa resposta, mas, infelizmente, não tenho representante suficiente.
Truques adicionais usados:
intersect
por sua implementação para que a importação possa ser descartada. (Nota: a implementação é quase a mesma da biblioteca, não consegui encontrar uma versão mais curta.)where
cláusula para que as funções possam usar on
parâmetro internamente.(#)
foi curto o suficiente para ser incorporado.fonte
Python 3.5,
11493112 bytes:Um programa completo. Basicamente, usa uma expressão regular para corresponder a todas as ocorrências de letras maiúsculas e números, depois cria a caixa do tamanho exato com base no comprimento da lista de correspondências e, finalmente, coloca a lista de correspondências "dentro" dela.
Experimente Online! (Ideona)
fonte
Python 3,
121124 bytesCorrigido erro estúpido
não importa bibliotecas como outra resposta python.
fonte
Java 8, 149 bytes
Experimente online.
Explicação:
fonte
Pyke, 39 bytes
Experimente aqui!
12 bytes de criação de mini-string, 20 bytes de formatação. Alegria!
fonte
Pitão,
3837 bytesExperimente online.
Observe a nova linha no início.
fonte
Python 2, 113 bytes
fonte
47<x<58|64<x<91
:)char
tipo integral - todos os caracteres nas seqüências de caracteres Python são eles mesmos e não podem ser comparados diretamente com números inteiros. Seria necessário47<ord(x)<58or 64<ord(x)<91
.[x for x in n if x.isupper()^x.isdigit()]
é um byte menor que #filter(lambda x:x.isupper()^x.isdigit(),n)
x.isupper()^x.isdigit()
->x.isupper()|x.isdigit()
Jolf, 35 bytes
Preciso de uma maneira mais curta de remover todos, exceto letras maiúsculas e números ...
fonte
C,
171163A função
f()
modifica sua entrada e imprime o resultado.Programa de teste
Requer um parâmetro, a string a ser usada no favicon:
fonte
Haskell, 161
Uso
fonte
replicate
,length
ef
exclusivamente nesta combinação, para mesclá-los em uma função:r=replicate.length.f
e chamá-lo comor n '-'
. Você pode salvar ainda mais bytes usando um operador infix:(#)=replicate.length.f
en#'-'
/n#' '
. Além disso,replicate.length
é>>
(com uma string singleton em vez de um caractere), então é:(#)=(>>).f
en#"-"
/n#" "
, ambos sem( )
o uso.( )
voltat n
ef n
."|"++
é'|':
. Todos em todos:o n=t n++'|':f n++"|\n"++t n++n#" "++"V"
.Bash,
9974 bytesUso: Execute o comando acima, digite o nome do site, pressione enter e, em seguida, Ctrl+ D(envie 'fim do arquivo').
fonte
CJam, 41
Experimente online
fonte
R, 108 bytes
Explicação
Indo de dentro para fora (porque quem não gosta de atribuir variáveis globais de dentro de uma regex), assumindo que
s
é a nossa string de entrada:y<-gsub("[^A-Z0-9]","",s)
mantém maiúsculas e números, atribui o valor resultante a y.gsub(".","-",y<-...)
substitui todos os caracteres por hífens acima.x<-gsub("(.*)","+\\1+\n",gsub(...))
lança um+
em cada extremidade da linha de hífens e uma nova linha, e os armazenamos como x.O resto é bem direto, com saída na ordem apropriada e use o fato de que o número de espaços antes do
v
será o mesmo que o comprimento de y.fonte
Brachylog , 61 bytes
Vinculado ao repositório em 7 de julho para garantir compatibilidade com versões anteriores.
Não concorrente, 53 bytes
Experimente online!
fonte
APL,
5249 bytes(até 49 graças ao comentário).
fonte
{x⍪2⌽'v'↑⍨≢⍉x←⍉z⍪⍨(z←'+|+')⍪'-','-',⍨⍪⍵/⍨⍵∊⎕D,⎕A}
(Você nunca entre parênteses um dos arguents em uma função argumento revertida quando golfe Ele sempre pode estar em ordem normal para salvar um byte..)Perl, 57 bytes
Código de 56 bytes + 1 para
-p
.Originalmente, tentei fazer isso usando regexes, mas era muito maior do que eu esperava, então usei algumas repetições de string.
Experimente online!
fonte
MATL , 34 bytes
Experimente online!
fonte
JavaScript (ES6), 119 bytes
fonte
J , 52 bytes
Experimente online!
fonte
Ruby, 81 bytes (78 +
-p
sinalizador)fonte
Lisp comum (Lispworks), 159 bytes bytes
ungolfed:
Uso:
fonte