Desafio:
Entrada:
Dois parâmetros inteiros a
e b
(onde a<b
e a diferença é pelo menos 2)
Saída:
Envie ou retorne este texto, onde a
e b
é preenchido:
(a,b) = ]a,b[ = {a<x<b} = {a<x&&x<b} = a+1..b-1
[a,b) = [a,b[ = {a<=x<b} = {a<=x&&x<b} = a..b-1
(a,b] = ]a,b] = {a<x<=b} = {a<x&&x<=b} = a+1..b
[a,b] = [a,b] = {a<=x<=b} = {a<=x&&x<=b} = a..b
Regras do desafio:
- A E / S é flexível. Pode ser impresso em STDOUT, retornado como uma seqüência de caracteres / matriz, etc. Pode ser inserido como dois números inteiros, decimais, seqüências de caracteres (não sei por que, desde que você precisa calcular
a+1
eb-1
, mas seja meu convidado ...), etc. - Qualquer quantidade de novas linhas à esquerda e / ou à direita é permitida, e qualquer quantidade de espaços à direita e / ou à esquerda para cada linha.
- Os espaços nos sinais de igual (incluindo aqueles para alinhá-los na mesma coluna) são obrigatórios, espaços entre os outros caracteres não são permitidos.
a+1
eb-1
são substituídos pelos valores corretos após esses cálculos.- Você não tem permissão para usar em
≤
vez de<=
. - Você não tem permissão para usar em
&
vez de&&
. - Você tem permissão para emitir os números com
.0
(desde que sejam consistentes e não mais que um zero decimal). - Você pode assumir que
a
é pelo menos 2 menor queb
((a,b)
para estar correto). - As linhas devem ser exibidas na ordem mostrada.
Exemplo:
Entrada: a=-5, b=10
Saída:
(-5,10) = ]-5,10[ = {-5<x<10} = {-5<x&&x<10} = -4..9
[-5,10) = [-5,10[ = {-5<=x<10} = {-5<=x&&x<10} = -5..9
(-5,10] = ]-5,10] = {-5<x<=10} = {-5<x&&x<=10} = -4..10
[-5,10] = [-5,10] = {-5<=x<=10} = {-5<=x&&x<=10} = -5..10
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, 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.
- Além disso, adicione uma explicação, se necessário.
PS: Para aqueles que tinham visto este desafio no Sandbox quando ainda era um Kolmogorov-complexidade desafio com a
e b
hard-coded, eu mudei-o para um desafio de entrada para evitar chato respostas codificados e codificados como costumamos ver com Desafios da KC.
a=5, b=6
saída ainda(5,6) = ... = 6...5
?a
eb
sempre estará pelo menos 2 separados. Vou editar o desafio.Respostas:
Stax , 74 bytes
Execute e depure
Isso usa fortemente os modelos de string do stax. Descompactado, não jogado e comentado, parece com isso.
Execute este
fonte
JavaScript (ES6),
184182181180 bytesRecebe entrada na sintaxe de currying
(a)(b)
. Retorna uma matriz de 4 strings.Experimente online!
Quão?
Para cada linha k com 1 ≤ k ≤ 4 , começamos com o seguinte modelo:
e substitua cada dígito decimal n na posição i de acordo com a tabela a seguir:
fonte
Python 2 ,
225203195 bytesExperimente online!
fonte
Python 2 , 187 bytes
Experimente online!
fonte
Java (JDK 10) , 251 bytes
Experimente online!
Créditos
fonte
.replace
.Perl 5 , 181 bytes
Eu pensei que isso teria funcionado muito mais curto ...
Experimente online!
Explicação
Originalmente, isso era usando uma
printf
string de formato, mas apenas tendos
ed
era mais curta quando combinada coms///
.Primeiro, a sequência de formatação é incorporada
$_
e quadruplicada; todos oss
s são substituídos pelo colchete correspondente<
,<=
ou espaços, dependendo do índice de substituição. Eu esperava salvar mais alguns bytes com a duplicação dos últimos 5 caracteres de cada bloco, mas isso acabou salvando apenas 2 bytes. A sequência resultante é dividida em elementos de espaços<=
ou caracteres únicos.Finalmente, todos os
d
s são substituídos pelo número desejado, que é ajustado com base no índice da substituição atual por meio de uma chave de hash.fonte
JavaScript,
190189 bytesExperimente online
fonte
m4 , 194
Parece um trabalho para um processador de macro. Não tenho certeza se m4 atende aos nossos padrões para uma linguagem de programação. Ele tem capacidade de loop e avaliação aritmética, então suponho que esteja próximo da marca.
Este é o meu primeiro olhar não trivial para o m4, então suspeito que tenha perdido mais oportunidades de golfe.
As entradas são transmitidas usando
-D
definições de macro na linha de comandos. Não tenho certeza se alguma coisa precisa ser adicionada à pontuação para eles, tanto quanto posso dizer, essa é a única maneira de passar parâmetros de forma significativa:Experimente online .
Obrigado @Dennis por adicionar m4 ao TIO tão rapidamente!
fonte
-D
argumentos, está completamente bem. Na descrição do meu desafio, afirmei que a E / S é completamente flexível, portanto, se você considera a entrada como STDIN, parâmetros de função, argumentos de linha de comando do programa, sinalizadores de compilador, leitura de um arquivo ou qualquer outro método de entrada que você possa imaginar é completamente você decide.Python 2 ,
277199193189 bytesExperimente online!
fonte
2*('{%d<%s<%s%d} %s= '%(a,e*x+'%sx',e[y:],b,i/2*' '))%('','x&&')
->2*('{%d<%s%%sx<%s%d} %s= '%(a,e*x,e[y:],b,i/2*' '))%('','x&&')
salva dois :)Excel, 399 bytes
Nada particularmente interessante aqui.
fonte
C (gcc) , 224
237bytesExperimente online!
Mover o "<[=]" para a cadeia de formato permitiu-me remover completamente a matriz. Além disso, a mudança
printf()
para ofor
loop salvou um ponto e vírgula.Resposta original
Experimente online!
Não há nada particularmente digno de nota aqui: usei os truques comuns para reduzir o tamanho da função (içar
int
automóveis no cabeçalho da função, usar o estilo K&R, indexar em constantes de seqüência de caracteres). Armazenar o {"<=", "<"} em um O array mostrou-se mais eficiente em tamanho do que inserir um especificador de formato para esse desafio, pois foi usado mais de uma vez.fonte
Javascript,
273258232 bytesObrigado Kevin Cruijssen por me salvar 15 bytes!
Experimente online
Obrigado por TFeld por me dar essa idéia, economizando cerca de 60 bytes da minha resposta original.
Ungolfed:
Javascript (resposta original), 340 bytes
fonte
{a<=x&&\nx<=b}
não deveria estar lá, e você está perdendo a primeira(a,b) =
. Quanto ao golfe: em vez de alerta, basta retornar o resultado.(m)=>
pode serm=>
.(e,f)=>
pode sere=>f=>
. E você pode usarg
diretamente em vez de criar olet g=
:m=>{return{a:e,b:f,c:e+1,d:f-1}[m]}
. Experimente online 258 bytes . E, provavelmente, muito mais pode ser golfed, eu não estou muito hábil na JS ..(m)->
am->
;(e,f)->
parae->f->
evar g=new int[]{...}return g[m]
parareturn new int[]{...}[m]
. ;) Além disso, estou ativo nesse SO há pouco mais de dois anos, então já vi respostas JS usarem esse tipo de coisa antes.Retina , 216 bytes
Experimente online! Explicação:
Construa a maior parte do resultado.
Se a variável estiver envolvida em uma desigualdade fraca, o valor será inclusivo, para que possamos excluir o espaço reservado.
Converta o valor em unário e adicione 2.
Remova o espaço reservado para uma desigualdade inferior estrita ou uma desigualdade superior estrita negativa. Ainda foram adicionados 2, mas 1 será subtraído mais tarde, fornecendo o resultado desejado.
Subtraia 2 das outras desigualdades estritas diferentes de zero, restaurando o valor original, do qual 1 será subtraído posteriormente.
Altere uma desigualdade superior estrita de
0
para-1
.Subtraia 1 das desigualdades estritas restantes e converta em decimal.
Corrija outro estojo de borda.
fonte
Python 3, 180 bytes:
explicação
Cria basicamente uma string f que é avaliada em uma compreensão de lista. A
%
interpolação de string no estilo antigo é usada para atrasar a avaliação das expressões até que a string f seja avaliada.A primeira parte da string, 'f "', se tornará o prefixo da string f.
A segunda parte da string cria a string de formato para as duas primeiras expressões de intervalo.
%r
é usado para evitar a necessidade de colocar aspas no formato, ou seja,"{%r[j]}"
é o mesmo que"{'%s'[j]}"
. Quando a string f é avaliada, o suporte correto é selecionado.A terceira parte da string cria as próximas duas expressões de intervalo.
A última parte formata a parte "a..b" da string f.
A string f montada se parece com:
f"{'(['[j]}{a},{b}{')]'[i]} = .... = {a+j}..{b-i}"
Quando a string f é avaliada, todas as expressões entre chaves
{}
são substituídas por seu valor. Portanto,{a}
é substituído pelo valor dea
e{'(['[j]}
é substituído por(
se j for 0 ou[
se j for 1.fonte
SOGL V0.12 , 110 bytes
Experimente aqui!
fonte
Python 3, 248 bytes
Experimente online!
fonte