Introdução:
Vi que havia apenas mais um desafio relacionado ao badminton no momento . Como eu mesmo jogo badminton (nos últimos 13 anos), imaginei que adicionaria alguns desafios relacionados ao badminton. Aqui o segundo (o primeiro pode ser encontrado aqui ):
Desafio:
Algumas regras sobre o badminton servem:
- Um saque sempre será feito na diagonal pela rede.
- Você deve sempre servir após a linha paralela e mais próxima da rede.
- A área na qual você pode veicular difere dependendo se é um single (1 vs 1) ou duplo / mix (2 vs 2).
- Para solteiros (1 vs 1), a área azul na figura abaixo é onde você pode servir. Portanto, isso inclui a parte de trás, mas exclui as partes ao lado.
- Para duplas / mixagens (2 x 2), a área verde na figura abaixo é onde você tem permissão para servidor. Portanto, isso exclui a parte de trás, mas inclui as partes ao lado.
- Você pode não ficar na linha ao servir. Mas o ônibus ainda estará dentro se pousar em cima de uma linha.
Aqui o layout de um campo de badminton:
Regras do desafio:
Entrada:
Você receberá duas entradas:
- Algo para indicar se estamos tocando um single ou double / mix (ou seja, um booleano)
- Algo para indicar de qual bloco você está servindo (por exemplo,
[1,2,3,4]
ou['A','B','C','D']
conforme usado na figura acima).
Resultado:
Somente as linhas relevantes para a veiculação atual (incluindo a rede), incluindo uma F
para indicar de onde você é veiculado e várias T
para indicar para onde você potencialmente será veiculado.
Embora, na realidade, você possa servir de e para qualquer lugar nas áreas designadas, presumimos que uma pessoa que servirá estará sempre no canto da área de serviço perto do meio da rede, que é onde você colocará o F
. E eles servirão para qualquer um dos quatro cantos da área em que devem servir, que é onde você colocará os T
.
Como arte ASCII, todo o campo de badminton seria o seguinte (os números são adicionados para que você não precise contá-los):
2 15 15 2
+--+---------------+---------------+--+
| | | | | 1
+--+---------------+---------------+--+
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | 9
| | | | |
| | | | |
| | | | |
| | | | |
+--+---------------+---------------+--+
| | | | | 2
| | | | |
O=====================================O 37 times '='
| | | | |
| | | | | 2
+--+---------------+---------------+--+
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | 9
| | | | |
| | | | |
| | | | |
| | | | |
+--+---------------+---------------+--+
| | | | | 1
+--+---------------+---------------+--+
Exemplos:
Aqui estão dois exemplos para gerar apenas as partes relevantes do serviço:
Entrada: Escolha e sirva o bloco A
Saída:
T---------------T
| |
+---------------+
| |
| |
| |
| |
| |
| |
| |
| |
| |
T---------------T
| |
| |
O=====================================O
| |
| |
+---------------+
| F|
| |
| |
| |
| |
| |
| |
| |
| |
+---------------+
| |
+---------------+
Como você pode ver, o F
é adicionado no canto dentro do bloco, mas T
está substituindo o +
na saída ASCI-art.
Entrada: Dobrar e servir o bloco C
Saída:
+--+---------------+
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | F|
+--+---------------+
| | |
| | |
O=====================================O
| | |
| | |
T---------------+--T
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
T---------------+--T
Regras do desafio:
- As novas linhas à esquerda e à direita são opcionais (incluindo as duas linhas vazias à esquerda e à direita quando a entrada é única). Os espaços à direita também são opcionais. Espaços principais são obrigatórios no entanto.
- Quaisquer quatro entradas distintas razoáveis para indicar de qual bloco estamos servindo são permitidas (para números inteiros, permaneça dentro do intervalo [-999.999]); bem como quaisquer duas entradas distintas razoáveis para indicar se é um single ou double / mix (observe essa brecha proibida relevante ). Indique a E / S que você usou em sua resposta!
- Você tem permissão para usar letras minúsculas
f
et
(ou maiúsculas e minúsculas ) em vez deF
eT
. - Você tem permissão para retornar uma lista de linhas ou matriz de caracteres em vez de retornar ou imprimir uma única sequência de saída.
Regras gerais:
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Não permita que idiomas com código de golfe o desencorajem a postar respostas com idiomas que não sejam codegolf. Tente encontrar uma resposta o mais curta possível para 'qualquer' linguagem de programação. - As regras padrão se aplicam à sua resposta com as regras de E / S padrão , para que você possa usar STDIN / STDOUT, funções / método com os parâmetros adequados e programas completos do tipo retorno. Sua chamada.
- As brechas padrão são proibidas.
- Se possível, adicione um link com um teste para o seu código (ou seja, TIO ).
- Além disso, é altamente recomendável adicionar uma explicação para sua resposta.
Respostas:
Carvão vegetal , 81 bytes
Experimente online! Link é a versão detalhada do código. Toma a primeira entrada como
1
ou2
para individuais ou duplos, segunda entrada como uma dasABCD
perguntas da pergunta. Explicação:Passe as larguras e alturas relevantes da
D
quadra e desenhe os retângulos.Desenhe a rede e aplique simetria rotacional para adicionar a
A
quadra.Adicione o
F
aoD
tribunal.Adicione
T
s aos locais relevantes noA
tribunal.Reflita a saída conforme necessário para servir da quadra correta.
fonte
Python 2 ,
285284 bytesExperimente online!
Recebe entrada como
0/1
(ouFalse/True
) para o tipo de jogo (Double/Single
),e
0-3
para bloco de veiculação (0,1,2,3
=C,D,A,B
)fonte
JavaScript (ES7),
216 ... 205 201199 bytes(block)(double)
Experimente online!
Versão formatada
Como?
p = X * Y * b < 0
q = Y > 0 ^ b & 1
x * 24 % 35 > 2
Experimente online!
~16 >> Y % 62 % 6 & 2
Experimente online!
|
-
+
ouT
(d ? Y : X - 87) > 169
(d ? X - 87 : Y) % 169
T
fonte
[-999,999]
para as quatro entradas distintas, então talvez você possa, de alguma forma, usar isso como vantagem para obter alguns bytes. Significaria recomeçar parcialmente, o que talvez não valha a pena. Infelizmente, não posso dar dicas de golfe para ajudá-lo com menos de 200 bytes; Só posso lhe desejar boa sorte em suas tentativas. ; pGeléia ,
10899 bytesExperimente online!
Tenho certeza que isso pode ser melhor jogado.
Link diádico com argumento esquerdo 0 ou 1 para singles / duplos e argumento direito 0,1,2,3 para diferentes quadrantes de saque. Retorna uma lista de strings
Agradecemos a @KevinCruijssen por salvar um byte!
fonte
“|-+TO= ”“F”
, não é“F”
possível jogar golfe com outro tipo de string para caracteres únicos? No 05AB1E, por exemplo, existem componentes internos para cadeias de tamanho 1 ('
), 2 („
) ou 3 (…
), portanto pode ser'F
. Você não sabe se Jelly tem algo parecido ou se você tem outro motivo para isso“|-+TO= ”“F”
?”
poderia ser usado para um único caractere literal - oops! Obrigado por salvar um byte.