Contrairement à la plupart des langages, Python évalue a<b<c
comme il le ferait en mathématiques, comparant en fait les trois nombres, au lieu de comparer le booléen a<b
à c
. La bonne façon d'écrire cela en C (et bien d'autres) serait a<b && b<c
.
Dans ce défi, votre tâche consiste à étendre ces chaînes de comparaison de longueurs arbitraires de la représentation Python / intuitive, à la façon dont elle serait écrite dans d'autres langues.
Caractéristiques
- Votre programme devra gérer les opérateurs:
==, !=, <, >, <=, >=
. - L'entrée aura des chaînes de comparaison utilisant uniquement des entiers.
- Ne vous inquiétez pas de la justesse des comparaisons en cours de route, il s'agit uniquement d'un défi d'analyse syntaxique.
- L'entrée n'aura aucun espace pour empêcher les réponses qui banalisent l'analyse en se divisant en espaces.
- Cependant, votre sortie peut avoir un seul espace entourant uniquement le
&&
s, ou les deux opérateurs de comparaison et les&&
s, ou aucun, mais être cohérent.
Cas de test
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
C'est le code-golf , donc le code le plus court en octets gagne!
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
la source
la source
&&
?Réponses:
Rétine ,
332217 octets-5 octets grâce à @MartinEnder
Essayez-le en ligne!
la source
1>-2
ne fonctionne pas pour limiter des deux côtés à la fois ...Husk ,
1614 octetsImprime un espace autour de chaque opérateur.
Essayez-le en ligne!
Explication:
la source
w
au lieu de;
pour une approche plus directe de la jonction de chaînes avec des espacesRétine ,
424722 octetsGolf massif grâce à Kevin Cruijssen
Essayez-le en ligne!
la source
(==|!=|<=?|>=?)
peut être\D+
(?<!^|\d)
peut être(?<=\D)
. De plus, il(?=\d+)
n'est pas nécessaire, l'opérateur sera toujours suivi d'un opérande, auquel cas vous pouvez supprimer le+
après le\D
. Il y a aussi$&
au lieu de$1$2
, puis un octet supplémentaire peut être enregistré en capturant derrière et en regardant en avant au lieu de capturer en avant et en regardant en arrière.(\D(\d+))(?=\D)
sur la ligne 1, et$1&&$2
sur la ligne deux est suffisant ( 22 octets ). Essayez-le ici.V , 37 octets
Essayez-le en ligne!
Hexdump:
la source
Clojure, 88 octets
Mise à jour:
subs
au lieu declojure.string/join
.la source
J ,
5946 octetsEssayez-le en ligne!
Comment cela fonctionnait
Nous recherchons des limites d'opérateur. Les chaînes «décapitées» et «raccourcies» sont transformées en zéros et en uns où les 0 sont des chiffres, puis sont xorés ensemble. Ajoutez le zéro à la longueur.
la source
Python 2 ,
60595857 octetsEssayez-le en ligne!
la source
re.sub(r'\D(\d+)(?=\D)',r'\g<0>&&\1',s)
enregistre 1 octet.Fusain, 29 octets
Deux formulations légèrement différentes du même algorithme de base. La chaîne d'entrée est itérée par caractère. Lorsque les chiffres sont trouvés, ils sont collectés dans une variable. Lorsqu'une frontière entre un nombre et un opérateur est trouvée, un "&&" supplémentaire plus la variable est imprimé et la variable est effacée. La variable est initialement initialisée à un espace afin que la première frontière ne déclenche pas le "&&" supplémentaire.
la source
Gelée , 16 octets
Essayez-le en ligne!
Explication:
la source
Java 8, 46 octets
Explication:
Essayez-le ici.
Explication de l'expression régulière:
Exemple étape par étape des remplacements:
la source
Perl 5 , 47 + 1 (-p) = 48 octets
Essayez-le en ligne!
la source
Rubis , 37 octets
Essayez-le en ligne!
la source
JavaScript (SpiderMonkey) , 43 octets
Essayez-le en ligne!
la source