Diferentemente da maioria das linguagens, o Python avalia a<b<c
como seria feito em matemática, na verdade comparando os três números, em vez de comparar o booleano a<b
com c
. A maneira correta de escrever isso em C (e muitos outros) seria a<b && b<c
.
Nesse desafio, sua tarefa é expandir essas cadeias de comparação de comprimentos arbitrários da representação intuitiva / Python, para como ela seria escrita em outras linguagens.
Especificações
- Seu programa terá que lidar com os operadores:
==, !=, <, >, <=, >=
. - A entrada terá cadeias de comparação usando apenas números inteiros.
- Não se preocupe com a veracidade de nenhuma das comparações ao longo do caminho, isso é puramente um desafio de análise / sintático.
- A entrada não terá espaços em branco para impedir respostas que trivializam a análise dividindo espaços.
- No entanto, sua saída pode ter um único espaço em torno
&&
dos operadores de comparação e dos operadores&&
, ou nenhum, mas seja consistente.
Casos de teste
Input Output
---------------------------------------------------------------
3<4<5 3<4 && 4<5
3<4<5<6<7<8<9 3<4 && 4<5 && 5<6 && 6<7 && 7<8 && 8<9
3<5==6<19 3<5 && 5==6 && 6<19
10>=5<7!=20 10>=5 && 5<7 && 7!=20
15==15==15==15==15 15==15 && 15==15 && 15==15 && 15==15
Isso é código-golfe , então o código mais curto em bytes vence!
code-golf
parsing
conversion
syntax
code-golf
sequence
primes
code-challenge
geometry
optimization
code-golf
graph-theory
code-golf
number-theory
primes
integer
code-golf
source-layout
cops-and-robbers
code-golf
source-layout
cops-and-robbers
code-golf
sequence
primes
integer
code-golf
math
number-theory
primes
rational-numbers
code-golf
math
sequence
number-theory
primes
code-golf
string
code-golf
math
combinatorics
permutations
restricted-complexity
code-golf
array-manipulation
code-golf
number
sequence
code-golf
number
sequence
code-golf
binary-matrix
code-golf
math
tips
javascript
algorithm
code-golf
string
code-golf
number
sequence
code-golf
math
arithmetic
parsing
code-golf
number
sequence
primes
code-golf
string
ascii-art
geometry
integer
code-golf
geometry
code-golf
number
array-manipulation
code-golf
math
geometry
code-golf
number
sequence
arithmetic
integer
code-golf
string
kolmogorov-complexity
code-golf
number
code-golf
number
chess
code-golf
sequence
decision-problem
subsequence
code-golf
math
number
primes
code-golf
primes
permutations
code-golf
integer
probability-theory
statistics
code-golf
string
code-golf
sequence
decision-problem
parsing
board-game
code-golf
binary
graph-theory
code-golf
board-game
classification
tic-tac-toe
code-golf
ascii-art
polyglot
code-golf
date
code-golf
geometry
Maltysen
fonte
fonte
&&
?Respostas:
Retina ,
332217 bytes-5 bytes graças a @MartinEnder
Experimente online!
fonte
1>-2
não funciona para limite de ambas as extremidades de uma vez ...Casca ,
1614 bytesImprime um espaço ao redor de cada operador.
Experimente online!
Explicação:
fonte
w
em vez de;
uma abordagem mais direta de se juntar cordas com espaçosRetina ,
424722 bytesGolfe maciço graças a Kevin Cruijssen
Experimente online!
fonte
(==|!=|<=?|>=?)
pode ser\D+
(?<!^|\d)
pode ser(?<=\D)
. Além disso, como(?=\d+)
é desnecessário, o operador sempre será seguido por um operando; nesse momento, você poderá soltar o+
após o\D
. Também há em$&
vez de$1$2
, e então um byte adicional pode ser salvo capturando para trás e olhando para frente, em vez de capturar para frente e olhar para trás.(\D(\d+))(?=\D)
na linha 1 e$1&&$2
na linha dois é suficiente ( 22 bytes ). Experimente aqui.V , 37 bytes
Experimente online!
Hexdump:
fonte
Clojure, 88 bytes
Atualização: em
subs
vez declojure.string/join
.fonte
J ,
5946 bytesExperimente online!
Como costumava funcionar
Estamos procurando limites do operador. Seqüências de caracteres “decapitadas” e “reduzidas” são transformadas em zeros e aquelas em que 0s são dígitos e depois armazenadas juntas. Anexe um zero para corresponder ao comprimento.
fonte
Python 2 ,
60595857 bytesExperimente online!
fonte
re.sub(r'\D(\d+)(?=\D)',r'\g<0>&&\1',s)
salva 1 byte.Carvão, 29 bytes
Duas formulações ligeiramente diferentes do mesmo algoritmo básico. A sequência de entrada é iterada por caractere. À medida que os dígitos são encontrados, eles são coletados em uma variável. Quando um limite entre um número e um operador é encontrado, um "&&" extra mais a variável é impressa e a variável é limpa. A variável é inicializada inicialmente em um espaço para que o primeiro limite não ative o "&&" extra.
fonte
Gelatina , 16 bytes
Experimente online!
Explicação:
fonte
Java 8, 46 bytes
Explicação:
Experimente aqui.
Explicação Regex:
Exemplo passo a passo das substituições:
fonte
Perl 5 , 47 + 1 (-p) = 48 bytes
Experimente online!
fonte
Ruby , 37 bytes
Experimente online!
fonte
JavaScript (SpiderMonkey) , 43 bytes
Experimente online!
fonte