O festival do meio do outono começou!
Infelizmente, todos os meus bolos da lua foram roubados - estão ficando muito caros para pessoas pequenas como eu, e temo não poder comer nenhum este ano!
Então, viro-te para pedir ajuda Você seria capaz de me fazer um pouco?
Para aqueles que não sabem, deixe-me ensinar a você como é um bolo da lua.
Mooncakes vêm em muitos tamanhos diferentes!
Então, eu vou te dar minha opinião , n , quando eu quiser.
Aqui estão alguns exemplos da saída que eu quero:
Bolo da lua de tamanho n = 3:
(@@@@@)
(@MAF@)
(@@@@@)
Bolo da lua de tamanho n = 6:
(@@@@@@@@@@@)
(@ @)
(@ M @)
(@ F @)
(@ @)
(@@@@@@@@@@@)
Ou seja, um bolo da lua do tamanho n é:
- n linhas altas
- 2n - 1 @s de comprimento
- 2n + 1 caracteres (@s e colchetes)
E é melhor você não me jogar seus bolos da lua muito pequenos!
Suponha que a entrada sempre será n> = 3 .
Mooncakes também contêm uma das seguintes decorações :
- MF
- MAF
- HMF
- JCJ
- TTT
- ZJ
- LF
- RF
- CF
Qual deles, não importa - desde que esteja centralizado vertical e horizontalmente .
Também pode ser escrito na vertical ou na horizontal!
Eu quero variedade!
Se você realmente vai me fazer dois do mesmo bolo da lua, é melhor a decoração ser diferente!
Ou seja, várias execuções do seu programa com a mesma entrada exata nem sempre devem produzir a mesma decoração .
Mal posso esperar para comer seus bolos da lua, então quanto mais cedo eu puder recebê-los ( quanto menor o seu código ), melhor!
Boa sorte!
Para aqueles que se perguntam sobre as decorações:
são as iniciais de todos os nomes alternativos para o Festival do Meio Outono.
Uma lista pode ser encontrada na página da Wikipedia vinculada no topo deste post.
Esclarecimentos:
Não há regras em relação aos espaços em branco iniciais e finais .
Tenha o quanto quiser!
As decorações devem estar no centro do seu bolo da lua!
Nas decorações horizontais, isso significa que ele deve estar na linha do meio do bolo e o número de caracteres à esquerda e à direita da sequência de decoração deve ser igual.
Nas decorações verticais, isso significa que ele deve residir na coluna do meio do bolo e o número de caracteres acima e abaixo da decoração deve ser igual.
Nem todas as decorações devem ser usadas!
O único requisito é que deve haver mais de uma possibilidade para qualquer entrada n . As possibilidades também não precisam ser iguais.
Funções são aceitáveis.
MAF
e nãoMF
? Não vejo umA
em suas opções de decoração.Respostas:
Pitão,
71655958 bytesGuardou 1 byte graças a @StevenH.
Experimente online. Suíte de teste.
Muito preenchimento.
fonte
?%Q2
com@,
(inverter a ordem das duas opções) ...Q
. Eu (ab) usei muito isso no golfe, minha própria resposta de Pyth.JavaScript ES6,
206196192188187180176169165156 bytesDemolir
Minha primeira tentativa no código-golfe. Provavelmente isso pode ser jogado mais.
salvou 4 bytes graças a @ETHProductions
Editar Tomei a liberdade de usar para satisfazer:
Date.now()%2
new Date%2
isso me permite salvar outros 7 bytes em
+Math.random()>.5
salvou outros 4 bytes graças a @Arnauld
fonte
['MA','HA'][r]+'F'
pode ser jogado para'MH'[r]+'AF'
.[' R ',' C '][r]
por" ${'RC'[r]} "
, substituindo cada"
um por um backtick.['MA','HM'][r]+'F'
é na verdade dois bytes mais do que['MAF','HMF'][r]
;)' @'[+!s]
vez de(s?' ':'@')
new Date%2
vez deDate.now()%2
.Pitão,
9979716864 bytesPyth é
muito ruimem criar strings. Ou talvez eu só estoumalficando melhor em golfe-los.Pode criar as decorações
MAF
eHMF
horizontalmente, e as decoraçõesMF
eCF
verticalmente.Experimente online!
fonte
Vim, 118 bytes
Recebe a entrada como um buffer (por exemplo, um arquivo com o número n como seu conteúdo).
Aqui está com os caracteres de controle não imprimíveis no formato xxd:
Experimente online! (Como se vê, o intérprete V também funciona bem para o código Vim normal.)
Explicação
fonte
@a
arg1,@b
arg2, etc., mas esse é um recurso específico de V. Tecnicamente, isso não importa desde que você"aD
o fez, mas pensei em apontar isso. 2) Você poderia tirar um byte de folga se o fizesse emdd@ap
vez deY@apdd
dd@ap
não funciona muito bem .dd@aP
funciona, mas requer um adicionalj
e um adicionalk
abaixo da linha.PHP,
342292249185178176 bytesLigue com
php -r '<code>' <size>
história
Rev 1: versão inicial; todos os tamanhos (incluindo pequenos bolos), todas as decorações, todas as direções possíveis
Rev. 2: removeu pequenos bolos (-36 bytes), opções de decoração reestruturadas, removeu um item de decoração (-21) e um único byte de golfe (-1).
Rev. 3: até quatro decorações; (-17), somente na horizontal para tamanhos ímpares (-18) mais golfe menor (-8).
Rev. 4: Obrigado a Jörg por jogar golfe na parte do "bolo de pintura"; ele tirou uma incrível (-31).
Outro -6 com o meu golfe adicional e -27 por usar uma única corda em vez de uma série de cordas.
Rev. 5: -7 bytes, principalmente graças a Christallkeks
demolir
Isso está diminuindo a cada hora. :)
fonte
for($i=0;$i<$n=$argv[1];$i++){$o[]=str_pad("(@",2*$n-1,!$i|$i==$n-1?"@":" ")."@)";}
!$i|$i==$n-1?"@":" "
; o ternário simplesmente não aceitaria o seu (na minha máquina), embora esteja correto.for(;$i<$n=$argv[1];)$o.=str_pad("(@",2*$n-1," @"[$i++%($n-1)==0])."@)\n";
Além disso, parece que você tem "MAD" golfe seus decos ;-)Java 7,
399349 bytesVersão atualizada com a ajuda de @Dodge e @Kevin Cruijssen:
Experimente aqui!
A nova versão é muito mais otimizada e se livrou do
String
manuseio da matriz. Também como sugerido, agora existem apenas 4 decorações: 2 para entradas pares (MF
,ZJ
) e 2 para entradas ímpares (MAF
,HMF
) que são combinadas em uma únicaString
.Ungolfed:
fonte
"MAF"
repetido?char[]
mais eficiência e jogar outras coisas ainda mais. @ Cyoce duplicou,MAF
porque então eu tenho todas as decorações para uma entrada par em índices0,2,4,6,8
e todas as decorações para uma entrada ímpar em índices1,3,5,7,9
. Isso facilita o cálculo do índice aleatório para uma determinada entrada.Math.random()*5
dá um número aleatório de0-4
.*2
espalha para0,2,4,6,8
.+n%2
adiciona1
entradas ímpares para obter1,3,5,7,9
.Lote, 386 bytes
Produzirá apenas HMF, MAF, MF ou CF, conforme apropriado. Nota: certas linhas terminam em espaço em branco. Variáveis:
n
Parâmetro de entrada (lido em STDIN)f
Prefixos de decoração (o sufixoF
está implícito)o
Estranha den
(usada apenas uma vez, mas asif
instruções não aceitam expressões)l
Linha do caractere vertical superior ou0
para uma decoração horizontalu
Linha do caractere vertical inferior ou0
para uma decoração horizontalh
Linha da decoração horizontal (substituída por uma decoração vertical)d
Índice de decoração no prefixo da decoração (0/1 na horizontal ou 1/3 na vertical)c
Cadeia den-3
espaçoss
Cadeia de saída para cada linha%1
Número da linha, mas definido comon
para a primeira linha também, para que a primeira e a última linha usem@
s em vez de espaços.fonte
C, 233 bytes
Deve ser capaz de jogar isso um pouco daqui ...
Grande desafio, foi difícil e feio de codificar.
Execute com esta função principal;
fonte
Ruby 2.3.1,
449265245233230 caracteresParece que deve haver uma resposta em rubi, então aqui está uma resposta em rubi. Realmente não é tão inteligente, espero que alguém aqui seja mais inteligente;)
Versão Golfed:
Truques de golfe:
Versão legível
Teste
fonte
Eu estava entediado ... aqui estão mais duas versões:
PHP, 193 bytes
um porto de resposta de Lmis
PHP, 191 bytes
imprimindo o caractere do bolo por caractere em um único loop
demolir
fonte
Python 3,
318301297285272 bytesDerrubou 17 bytes com a ajuda de DJMcMayhem
Bata 4 bytes graças a mbomb007
Derrubei outros 12 bytes graças a DJMcMayhem
Derrubei outros 13 bytes graças a mbomb007
Meu primeiro golfe, então não é tão bom assim. Eu usei: aliasing math.ceil como ye str.format como z, formatos de aninhamento, importações de linha única, lambda e operação bit a bit, além de outras coisas para obter isso como está.
Versão não destruída (importações separadas, sem aliases e sem operação bit a bit):
Curiosamente, o uso da versão não bit a bit ainda produz saída correta, no entanto, a saída é diferente:
Não bit a bit:
Bit a bit:
fonte
from ... import*
digitar as importações para salvar alguns bytesimport math;y=math.ceil
para remover dois bytes. Isso forneceriaimport random;import math;y=math.ceil;lambda n:"{a}{}{a}".format("{d}(@{}{b}F{c}@)\n{e}".format(" "*(y((2*n-5)/2)),b=random.sample(["L","R"],1)[0],c=" "*((2*n)-(5+y((2*n-5)/2))),d="(@{}@)\n".format(" "*(2*n-3))*y((n-3)/2),e="(@{}@)\n".format(" "*(2*n-3))*(n-(3+(y((n-3)/2))))),a="({})\n".format("@"*(2*n-1)))
13 bytes mais curtos.format
já que você chama muito disso. O problema é que eu não sei exatamente como criar um alias para uma função de membro (comostr.format
), então você teria que experimentar um pouco. Não tenho certeza de que seria mais curto.Bytes em C # 448
Golfe:
Teste aqui
Ungolfed:
fonte