Défi:
Contribution:
Deux paramètres entiers a
et b
(où a<b
et la différence est d'au moins 2)
Sortie:
Sortez ou renvoyez ce texte, où a
et b
sont remplis:
(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
Règles du défi:
- Les E / S sont flexibles. Peut être imprimé dans STDOUT, renvoyé sous forme de chaîne / tableau de caractères, etc. Peut être entré sous la forme de deux entiers, décimaux, chaînes (je ne sais pas pourquoi car vous devez calculer le
a+1
etb-1
, mais soyez mon invité ..), etc. - Toute quantité de nouvelles lignes de début et / ou de fin est autorisée, et toute quantité d'espaces de fin et / ou de début pour chaque ligne est autorisée.
- Les espaces aux signes égaux (y compris ceux pour les aligner dans la même colonne) sont obligatoires, les espaces entre les autres caractères ne sont pas autorisés.
a+1
etb-1
sont remplacés par les valeurs correctes après ces calculs.- Vous n'êtes pas autorisé à utiliser à la
≤
place de<=
. - Vous n'êtes pas autorisé à utiliser à la
&
place de&&
. - Vous êtes autorisé à sortir les nombres avec
.0
(tant qu'il est cohérent et pas plus d'un zéro décimal). - Vous pouvez supposer qu'il
a
est au moins 2 inférieur àb
(pour(a,b)
être correct). - Les lignes doivent être sorties dans l'ordre indiqué.
Exemple:
Entrée: a=-5, b=10
Sortie:
(-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
Règles générales:
- C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
Ne laissez pas les langues de golf de code vous décourager de publier des réponses avec des langues autres que le golf de code. Essayez de trouver une réponse aussi courte que possible pour «n'importe quel» langage de programmation. - Des règles standard s'appliquent à votre réponse, vous êtes donc autorisé à utiliser STDIN / STDOUT, fonctions / méthode avec les paramètres appropriés et des programmes complets de type retour. Ton appel.
- Les failles par défaut sont interdites.
- Si possible, veuillez ajouter un lien avec un test pour votre code.
- Veuillez également ajouter une explication si nécessaire.
PS: Pour ceux qui avaient vu ce défi dans le bac à sable quand il s'agissait encore d'un défi de complexité kolmogorov avec a
et b
codé en dur, je l'ai changé en un défi d'entrée pour éviter les réponses ennuyeuses codées en dur et codées comme nous le voyons habituellement avec Défis KC.
a=5, b=6
sortie encore(5,6) = ... = 6...5
?a
etb
seront toujours séparés d'au moins 2. Je vais éditer le défi.Réponses:
Stax , 74 octets
Exécuter et déboguer
Cela utilise fortement les modèles de chaînes de stax. Déballé, non golfé et commenté, il ressemble à ceci.
Exécutez celui-ci
la source
JavaScript (ES6),
184182181180 180 octetsPrend une entrée dans la syntaxe de curry
(a)(b)
. Renvoie un tableau de 4 chaînes.Essayez-le en ligne!
Comment?
Pour chaque ligne k avec 1 ≤ k ≤ 4 , nous commençons avec le modèle suivant:
et remplacez chaque chiffre décimal n à la position i selon le tableau suivant:
la source
Python 2 ,
225203195 octetsEssayez-le en ligne!
la source
Python 2 , 187 octets
Essayez-le en ligne!
la source
Java (JDK 10) , 251 octets
Essayez-le en ligne!
Crédits
la source
.replace
.Perl 5 , 181 octets
Je pensais que cela aurait fonctionné beaucoup plus court ...
Essayez-le en ligne!
Explication
À l'origine, cela utilisait une
printf
chaîne de format, mais justes
etd
était plus court lorsqu'il était combiné avecs///
.Tout d' abord la chaîne de format est intégré dans
$_
et quadruplicated, touss
s sont remplacés par les correspondants, support<
,<=
ou des espaces, en fonction de l'indice de remplacement. J'espérais économiser quelques octets de plus avec la duplication des 5 derniers caractères de chaque bloc, mais cela n'a fini par économiser 2 octets. La chaîne résultante est divisée en éléments d'espaces<=
ou en caractères uniques.Enfin, tous les
d
s sont remplacés par le nombre souhaité qui est ajusté en fonction de l'index du remplacement actuel via une clé de hachage.la source
JavaScript,
190189 octetsEssayez-le en ligne
la source
m4 , 194
On dirait un travail pour un macro processeur. Je ne sais pas si m4 répond à nos normes pour un langage de programmation. Il a une capacité de boucle et une évaluation arithmétique, donc je suppose que c'est proche de la marque.
Ceci est mon premier regard non trivial sur m4, donc je soupçonne qu'il y a plus d'occasions de golf que j'ai ratées.
Les entrées sont transmises à l'aide de
-D
définitions de macro sur la ligne de commande. Je ne sais pas si quelque chose doit être ajouté au score pour ceux-ci, pour autant que je sache, c'est la seule façon de transmettre les paramètres de manière significative:Essayez-le en ligne .
Merci @Dennis d'avoir ajouté m4 à TIO si rapidement!
la source
-D
arguments c'est très bien. Dans ma description du défi, j'ai déclaré que les E / S sont complètement flexibles, donc que vous preniez l'entrée comme STDIN, les paramètres de fonction, les arguments de ligne de commande du programme, les drapeaux du compilateur, la lecture d'un fichier ou toute autre méthode d'entrée à laquelle vous pouvez penser est complètement dépend de vous.Python 2 ,
277199193189 189 octetsEssayez-le en ligne!
la source
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&&')
sauve deux :)Excel, 399 octets
Rien de particulièrement intéressant ici.
la source
C (gcc) , 224
237octetsEssayez-le en ligne!
Déplacer le "<[=]" dans la chaîne de format m'a permis de supprimer complètement le tableau. En outre, le déplacement
printf()
dans lafor
boucle a enregistré un point-virgule.Réponse originale
Essayez-le en ligne!
Il n'y a rien de particulièrement remarquable ici: j'ai utilisé les astuces habituelles pour raser la taille de la fonction (hisser les
int
autos dans l'en-tête de la fonction, utiliser le style K&R, indexer dans les constantes de chaîne.) Stocker le {"<=", "<"} dans un tableau s'est avéré plus efficace en termes de taille que l'insertion d'un spécificateur de format pour ce défi car il a été utilisé plusieurs fois.la source
Javascript,
273258232 octetsMerci à Kevin Cruijssen de m'avoir sauvé 15 octets!
Essayez-le en ligne
Merci à TFeld de m'avoir donné cette idée, économisant environ 60 octets par rapport à ma réponse d'origine.
Non golfé:
Javascript (réponse originale), 340 octets
la source
{a<=x&&\nx<=b}
ne devrait pas être là, et vous manquez la première(a,b) =
. En ce qui concerne le golf: au lieu d'alerte, vous pouvez simplement renvoyer le résultat.(m)=>
peut êtrem=>
.(e,f)=>
peut êtree=>f=>
. Et vous pouvez utiliserg
directement au lieu de créer lelet g=
:m=>{return{a:e,b:f,c:e+1,d:f-1}[m]}
. Essayez-le en ligne 258 octets . Et probablement plus peut être joué au golf, je ne suis pas trop habile en JS ..(m)->
àm->
;(e,f)->
àe->f->
, etvar g=new int[]{...}return g[m]
àreturn new int[]{...}[m]
. ;) De plus, je suis actif sur ce SO depuis un peu plus de deux ans maintenant, donc j'ai déjà vu des réponses JS utiliser ce genre de choses auparavant.Rétine , 216 octets
Essayez-le en ligne! Explication:
Construisez l'essentiel du résultat.
Si la variable est impliquée dans une inégalité lâche, alors la valeur est inclusive, nous pouvons donc supprimer l'espace réservé.
Convertissez la valeur en unaire et ajoutez 2.
Supprimez l'espace réservé pour une inégalité stricte inférieure ou une inégalité supérieure stricte négative. Il en reste encore 2 ajoutés, mais 1 sera soustrait plus tard, donnant le résultat souhaité.
Soustrayez 2 des autres inégalités strictes non nulles, en restaurant la valeur d'origine, à laquelle 1 sera soustrait plus tard.
Modifiez une stricte inégalité supérieure de
0
à-1
.Soustrayez 1 des inégalités strictes restantes et convertissez-les en décimales.
Réparez un autre cas de bord.
la source
Python 3, 180 octets:
explication
Fondamentalement, construit une chaîne f qui est évaluée dans une compréhension de liste. L'
%
interpolation de chaîne à l' ancienne est utilisée pour retarder l'évaluation des expressions jusqu'à ce que la chaîne f soit évaluée.La première partie de la chaîne, «f», deviendra le préfixe de la chaîne f.
La deuxième partie de la chaîne crée la chaîne de format pour les deux premières expressions d'intervalle.
%r
est utilisé pour éviter d'avoir à mettre des guillemets au format, c'est-à-dire qu'il"{%r[j]}"
est le même que"{'%s'[j]}"
. Lorsque la chaîne f est évaluée, le crochet correct est sélectionné.La troisième partie de la chaîne crée les deux expressions d'intervalle suivantes.
La dernière partie formate la partie "a..b" de la chaîne f.
La chaîne f assemblée ressemble à:
f"{'(['[j]}{a},{b}{')]'[i]} = .... = {a+j}..{b-i}"
Lorsque la chaîne f est évaluée, toutes les expressions entre accolades
{}
sont remplacées par leur valeur. Donc,{a}
est remplacé par la valeur dea
, et{'(['[j]}
est remplacé par(
si j est 0 ou[
si j est 1.la source
SOGL V0.12 , 110 octets
Essayez-le ici!
la source
Python 3, 248 octets
Essayez-le en ligne!
la source