Desafio
Desenhe uma forma de coração
... como arte ASCII!
Sua arte não precisa se parecer exatamente com a minha, mas deve ter a forma de um coração.
O interior do coração deve conter as palavras "Amor" pelo menos 20 vezes
Regras
- O programa deve gravar a arte no console.
- O código mais curto (em bytes, qualquer idioma) vence.
O vencedor será escolhido no dia 14 de fevereiro no dia dos namorados
:D
popularity-contest
Respostas:
JavaScript [160 bytes]
O código a seguir parece ter 160 bytes não formatados.
Simplesmente execute isso no console do navegador (por exemplo, no Firebug ou no Chrome Dev Tools).
fonte
/[lve]\d/
a/../
e usando um array['','Love','\n']
em vez de objeto vai economizar mais 10 bytes levando a 150 bytes no total, mas o coração fonte não será tão bem em forma mais:)
function(c){return
porc=>
e remova}
. Você deve postar uma versão mais curta!:)
mas obrigado por apontar! Espero que em breve o JavaScript concorra com o Perl e o Python em assuntos de golfe e que todos possam experimentar isso.GolfScript:
625754 caracteresSaída:
Ou, por algum amor adicional e pelo abuso obrigatório de insignificância em espaço em branco (para 84 caracteres):
Saída:
fonte
C - 183 bytes
Não é um vencedor, mas muito amor. Você pode descobrir como isso funciona?
Saída:
fonte
V
no fundo.C
! A curva do coração é de domínio público :)Python, 210 caracteres
Claro, isso não vai ganhar, porque é um código de golfe, mas eu queria ser criativo e não usei a palavra
Love
no meu código-fonte:Esta é a saída:
fonte
Scala - 273 caracteres
Bem, certamente não espero ganhar por brevidade, mas queria ver se conseguiria em Scala. Um jogador mais esperto provavelmente poderia raspar vários bytes, mas aqui está o que eu consegui:
Ou, se preferir (código ainda válido!)
Imprime dois semicírculos e um triângulo na tela, formando um fac-símile bastante decente.
Precisa ser executado com o intérprete scala (a compilação exigiria a adição de uma quantidade extra de crosta
object Main { def main(args: Array[String]) = { ... } }
e eu não tenho nada disso.fonte
Python 2, 117
imprime exatamente 20
love
s na horizontal.saída:
fonte
replace()
eles; na terceira linha,print
altere um+
para,
e 10 com 9; na última linha, use o valor da variável x. pastebin.com/i1TSEZfElove
s verticais no lado direito que conseguiu ao escalonar oslove
s horizontais ?love
s verticais . Incluindo os que alove
contagem será 23: DPerl - 36 bytes
Saída:
Isso é meio trapaceiro; ele será impresso
Love
uma vez a cada dois caracteres de espaço não em branco no código-fonte. Com o espaço em branco necessário para dar forma ao coração, o código tem 61 bytes de comprimento: achatado, tem apenas 36 bytes:Perl - 60 bytes
Emite o seguinte:
Exatamente 20
Love
.Breve explicação
por solicitação
for'3h112a05e0n1l2j4f6b9'=~/./g
Isso modifica a instrução print e itera sobre cada caractere. A regex
/./
obviamente corresponde a um único caractere e, em um contexto de lista/./g
, retornará uma lista de todos os caracteres da string. Uma maneira mais comum, mas um pouco mais longa, de escrever isso seriafor split//,'3h112a05e0n1l2j4f6b9'
.print$"x(15&ord),Love,$/x/\D/
O
$"
padrão da variável especial é um espaço. O ord valor inal de cada personagem mod 16 lojas os espaços número necessário entre cadaLove
via repetição string (x
). Por fim, se o caractere não for um dígito (/\D/
), o valor de$/
, cujo padrão"\n"
é adiado até o final.fonte
-e
)$"
por' '
:perl -e "print' 'x(15&ord),Love,$/x/\D/for'3h112a05e0n1l2j4f6b9'=~/./g"
Língua Wolfram (Mathematica) - 111
fonte
Javascript -
147141137133 caracteresNota: Eu postei outra resposta, mas esta usa uma abordagem diferente e o coração tem uma forma diferente.
Como funciona :
Primeiro, renderizo um diamante (equação é
|x|+|y|
) e depois combino dois círculos no topo. Os valores x são espelhados (portanto, apenas um círculo é necessário).fonte
0
números flutuantes anteriores e atribuindoMath.abs
a uma variável.Sclipting - 28 caracteres / 56 bytes
Saída:
fonte
긢꼙겱딧꽔밂各감啃갰啃긂밀⓶復냄뭖끐⓷復겠⓸復終
- mas isto usos da啃
instrução, que eu adicionado após este desafio foi publicado, por isso não conta.)JavaScript -
136121115113 caracteresPara executar: copie e cole no console do navegador (por exemplo: Chrome ou Firefox)
fonte
["L","o","v","e"] => "Love"
irá salvar 11 bytes.C, 116 caracteres
(Não sei se isso tem a forma de um coração suficiente ... preenche o interior de três círculos para produzir a saída.)
Saída:
No início do processo de golfe, antes de substituir expressões constantes (altere
M
para ajustar o tamanho):Eu também me senti compelido a fazer isso. : P
fonte
All variables in C are typed
pt.wikibooks.org/wiki/C_Programming/Variablesint
, um recurso herdado emprestado do pré-ANSI-C. Ele compila muito bem para mim comclang foo.c
ougcc -std=c99 foo.c
(no entanto, com muitos avisos). Você recebe algum erro? Não conheço C o suficiente para garantir que não dependo de comportamento indefinido, mas acredito que não faço isso.Ruby, 47, ou Golfscript, 41
Resposta chata.
Versão Golfscript:
Saída:
fonte
Ruby - 113 Personagens
Saída:
Para ser mais claro
fonte
Perl - 159 caracteres
Não é massivamente golfado ...
Aqui está o mesmo com espaço em branco adicionado para facilitar a leitura ...
A saída é ...
A palavra completa "Amor" está contida (verticalmente) 22 vezes, mais numerosas parciais.
fonte
APL, 36 caracteres / bytes *
Deve ser avaliado com
⎕IO←0
(o padrão varia de acordo com a implementação)* O APL pode ser gravado em um conjunto de caracteres de byte único, se necessário (contanto que você não use nenhum outro caractere Unicode), portanto, N chars = N bytes para fins de contagem.
Saída:
Contém exatamente 20 "amor"
fonte
BrainFuck estendido : 193 (contado sem espaço em branco não essencial)
Torna-se em:
Brainfuck: 264 (contado sem espaço em branco não essencial)
Você o executa com qualquer intérprete de bf. Ubuntu tem
bf
ebeef
e ambos funciona muito bem.A saída (344 bytes):
Código EBF não destruído:
fonte
C # 224
Formatado:
Saída:
fonte
Python, 334 bytes
saída:
fonte
str
chamada com repetições de sequência, porque*
tem uma precedência maior que+
.Perl - 97 caracteres
Esta resposta é baseada na solução Python de 121 caracteres do @ Wasi.
Você precisa executar o perl com a
-M5.010
opção de ativar os recursos específicos da 5.10. Aparentemente, isso é permitido .Recursos interessantes:
$.
para armazenar a palavra "amor". Isso ocorre porque pode ser seguido imediatamente por outra palavra, se necessário.$.for
é inequivocamente tokenizado,$.
seguido defor
;$_for
não seria tokenizado como$_
seguido,for
porque$_for
ele próprio é um nome de variável legal.$"
, uma variável interna que representa o caractere ao qual as matrizes serão unidas quando interpoladas em uma string (e o padrão é um caractere de espaço único) é usada em vez de" "
economizar um caractere aqui e ali..replace
significativamente o método no golfe de código.for 0..4
também vencefor i in range(5)
fonte
CJam - 33 bytes
Experimente online
Saída:
Explicação:
fonte
Bash, 170 bytes
totalmente uma cópia do programFOX's :)
fonte