Nous avons beaucoup d'axes horizontaux pour les chiffres, mais je pense honnêtement qu'ils sont un peu ennuyeux. Votre tâche aujourd'hui est de me construire une portion d'un axe diagonal entre deux entiers non négatifs distincts donnés en entrée.
Comment construire un axe diagonal?
Prenons un exemple, avec l'entrée
0, 5
. Notre axe devrait ressembler à ceci:0 1 2 3 4 5
Cependant, notre axe devrait bien paraître pour les nombres qui ont plus de chiffres aussi! Si l'entrée est, par exemple
0, 14
, le nouvel axe doit être:0 1 2 3 4 5 6 7 8 9 dix 11 12 13 14
L'idée est que le premier chiffre du nombre suivant sur l'axe doit toujours être placé exactement après le dernier chiffre du nombre précédent. Pour mieux comprendre l'idée, voici un autre exemple avec
997, 1004
:997 998 999 1000 1001 1002 1003 1004
Règles
Vous pouvez supposer que l'entrée est dans l'ordre croissant ou décroissant (vous pouvez choisir entre
5,3
et3,5
).Vous pouvez également supposer que la différence entre les deux entiers est inférieure à 100.
Vous pouvez avoir une nouvelle ligne de début ou un espace de début cohérent (sur chaque ligne). Les espaces de fin / les nouvelles lignes conviennent également.
Vous pouvez prendre des entrées et fournir des sorties par n'importe quel moyen standard .
C'est le code-golf , donc le code le plus court en octets dans toutes les langues gagne!
Autres cas de test
1, 10
:1 2 3 4 5 6 7 8 9 dix
95, 103
:95 96 97 98 99 100 101 102 103
999999, 1000009
:999999 1000000 1000001 1000002 1000003 1000004 1000005 1000006 1000007 1000008 1000009
Réponses:
05AB1E ,
876 octetsMerci à Magic Octopus Urn pour avoir sauvé un octet!
Cela fonctionne en quelque sorte, mais honnêtement, je ne sais pas pourquoi.
Code
Utilise l' encodage 05AB1E . Essayez-le en ligne!
Explication
la source
.O = pop a,b push connected_overlap(b) (deprecated)
- Oh, je suppose?.O
est extrêmement bogué et obsolète depuis plus d'un an, donc je n'ai aucune idée de ce qui fonctionne et de ce qui ne fonctionne pas. Je pourrais jurer que j'avais besoinÎ
, mais cela ne semble plus du tout être le cas (?). Merci! :)Î
était nécessaire pour réduire le nombre maximal d'espaces de tête à 1.Python 2 , 43 octets
Utilise une languette verticale pour créer un effet d'échelle. La façon dont le
\v
rendu est rendu dépend de la console, il peut donc ne pas fonctionner partout (comme TIO).la source
\x0b
dans votre code pour enregistrer un octet?\\v
et remplacé par\x0B
lequel apparaît unVT
personnage à sa place pour le score, vous pouvez soit publier un hexdump réversible (xxd
ou quelque chose) ou simplement dire que: "\v
est un onglet vertical littéral", je pense que ce serait juste. J'espère que ça t'as aidé!Fusain ,
98 octetsEssayez-le en ligne!
Le lien est vers la version détaillée du code. Saisie par ordre croissant.
la source
R,
706961 octetsFonction qui prend la variable de début et de fin comme arguments. Boucle sur la séquence et imprime chaque élément, ajouté avec suffisamment d'espace.
F
commence au furFALSE=0
et à chaque itération, la quantité de caractères pour cette valeur y est ajoutée.F
décide du nombre d'espaces imprimés.Essayez-le en ligne!
-8 octets grâce à @Giuseppe
la source
scan()
deux fois, il peut être réduit à 67 octetsfor(i in scan():scan()){cat(rep(' ',F),i,'\n',sep='');F=F+nchar(i)}
.F=0;for(i in scan():scan()){cat(rep(' ',F),i,'\n',sep='');F=F+nchar(i)}
(71 octets)nchar
.\n
pour une nouvelle ligne fonctionne également, et cela ne coûte apparemment pas deux octets.cat
, mais je ne pouvais pas penser correctement et le comprendre pour une raison quelconque.C #,
908985 octets1 octet enregistré grâce à @LiefdeWen.
4 octets enregistrés grâce à @auhmaan.
Essayez-le en ligne!
Version complète / formatée:
la source
i<=e
àe>i
i
et en le réutilisant à las
placePython 2 ,
5854 octetsEssayez-le en ligne!
la source
Mathematica, 59, octets
contribution
-3 octets @JungHwanMin
problème avec 0 fixe (voir les commentaires pour plus de détails)
merci à @ngenisis
la source
Spacings -> 0
si vous voulez que ce soit exact.Grid[(DiagonalMatrix@Range[1+##]/. 0->""+1)-1,Spacings->0]&
est le moyen le plus court que j'ai pu trouver pour résoudre ces problèmesGelée , 9 octets
Essayez-le en ligne!
la source
Mathematica, 48 octets
comme il y a tellement de réponses, je pensais que celle-ci devrait être incluse
contribution
sortie
la source
C,
1661349582 octetsNouvelle réponse
Juste comme une fonction et non comme un programme entier.
Merci à Falken d'avoir aidé à éliminer 13 octets (et à corriger un problème)!
Merci à Steph Hen d'avoir aidé à éliminer 12 octets!
Merci à Zacharý pour son aide à supprimer 1 octet!
Anciennes réponses
Débarrassé de int avant main et changé const char * v [] en char ** v et débarrassé de return 0;
C'est la première fois que je joue au golf et je voulais essayer quelque chose en C. Je ne sais pas si j'ai formaté cela correctement, mais j'ai eu du plaisir à le faire!
Explication
Usage
la source
argc
etargv
à une variables lettre.int s=0
boucle for, comme dansfor(int s=0;a<=b;a++)
.int i=s;while(i--)
au lieu defor(int i=0;i<s;i++)
pour la boucle interne économisera deux octets.C ++,
167165 octets-2 octets grâce à Zacharý
la source
int m=0,i=l,j
dans la premièrefor
boucle pour enregistrer un octet? 2. Pouvez-vous changerr+=t;r+=10
pourr+=t+10
? 3. J'ai battu quelqu'un, yay.r+=t+=10
mais pasr+=t+10
, cela m'a donné une erreurr+=t+=10
ça marche? Cela n'affecterait-il past.size()
?++i
lastd::to_string(i)
questd::to_string(i++)
pour sauver un octet?APL (Dyalog) ,
2524 octets-1 merci à Zacharý .
Suppose
⎕IO←0
que le comptage est basé sur zéro. Prend la borne inférieure comme argument de gauche et la borne supérieure comme argument de droite.Essayez-le en ligne!
(
…)
Appliquer la fonction tacite suivante entre les arguments:-
soustraire la partie supérieure inférieure de la limite supérieure1-
soustrayez cela d'un (c.-à-d. 1 + ∆)⊣+∘⍳
borne inférieure gauche plus les entiers 0 à travers cette⍕¨
formater (stringify) chacun{
…}
Appliquer l'anonymat suivant à ce sujet (représenté par ⍵):≢¨
longueur de chacun (nombre)+\
somme cumulée-
nier⍵↑⍨¨
pour chaque nombre stratifié, prenez autant de caractères de la fin (blocs avec des espaces)↑
mélanger la liste des chaînes dans une matrice de caractèresla source
+-⍨
être--
?Rétine ,
8178 octetsEssayez-le en ligne! Prend l'entrée comme une liste séparée par des sauts de ligne de deux entiers. Edit: sauvé 3 octets en volant le code d'extension de plage de ma réponse à Partageons-nous le cluster principal? Explication:
Convertissez les deux entrées en unaire.
Alors que les deux derniers éléments (a, b) de la liste diffèrent de plus de 1, remplacez-les par (a, a + 1, b). Cela étend la liste d'un tuple à une plage.
Convertissez en décimal en double.
Convertissez la copie en double en espaces.
Additionnez cumulativement les espaces de chaque ligne à la suivante.
la source
Pyth ,
1413 octetsEssayez-le en ligne!
la source
LOGO , 53 octets
Il n'y a pas de "Essayez-le en ligne!" lien car tous les interpréteurs de LOGO en ligne ne prennent pas en charge la liste de modèles.
Il s'agit d'une liste de modèles (équivalent de la fonction lambda dans d'autres langues).
Usage:
(
apply
appelle la fonction)imprimera
Remarque:
Cela utilise la tortue
ycor
(coordonnée Y) pour stocker le nombre d'espaces nécessaires pour taper, donc:window
doit être exécuté s'ilycor
devient trop gros pour que la tortue quitte l'écran. Description de lawindow
commandeif the turtle is asked to move past the boundary of the graphics window, it will move off screen.
:, contrairement au paramètre par défautwrap
, quiif the turtle is asked to move past the boundary of the FMSLogo screen window, it will "wrap around" and reappear at the opposite edge of the window.
Explication:
la source
05AB1E , 8 octets
Essayez-le en ligne!
-2 merci à Adnan .
la source
vy
parʒ
etgF
parv
pour économiser 2 octets.ʒ
truc soit toujours utilisé ...JavaScript (ES8),
696762 octetsPrend les entrées sous forme d'entiers, dans l'ordre croissant, en utilisant la syntaxe de curry. Renvoie un tableau de chaînes.
Essayez-le
la source
Japt , 12 octets
Prend l'entrée dans l'un ou l'autre ordre et renvoie toujours les nombres dans l'ordre croissant, sous la forme d'un tableau de lignes.
Essayez-le en ligne! avec le
-R
drapeau pour rejoindre le tableau avec des sauts de ligne.Explication
Saisie implicite de
U
etV
.Créez une plage inclusive
[U, V]
et mappez chaque valeur sur ...Les valeurs avant le courant (
¯Y
), jointes à une chaîne (¬
) et remplies d'espaces (ç
).Plus le numéro actuel. Le tableau résultant est implicitement sorti.
la source
Python 2 ,
65 63 6261 octets-2 octets Merci à @Mr. Xcoder:
exec
n'a pas besoin d'accolades-1 bye merci à @ Zacharý:
print s*' '
asprint' '*s
Essayez-le en ligne!
la source
m,n=input();s=0;exec(n-m+1)*"print s*' '+`m`;s+=len(`m`);m+=1;"
suffit.print s*' '
pourprint' '*s
sauver un octet.JavaScript, 57 octets
la source
y=>g=(x,s='')=>y<x?s:s+'\n'+g(x+1,s.replace(/./g,' ')+x)
Appel avec taitement avec les entiers inversés:f(103)(95)
.x=>y=>g=(s='')=>y<x?s:s+'\n'+g(s.replace(/./g,' ')+x++)
appeler en tant quef(x)(y)()
.Python 2,
6059 octets-1 octet merci à Mr.Xcoder pour avoir défini mon s = 0 comme variable optionnelle dans ma fonction.
Essayez-le en ligne!
Je pense qu'il est possible de transférer cela dans une version lambda, mais je ne sais pas comment. Je pense également qu'il existe une sorte de correspondance entre les espaces et la longueur du nombre actuel, mais je ne l'ai pas encore compris. Je pense donc qu'il y a encore place à amélioration.
Ce que j'ai fait était de créer une plage de la limite inférieure
l
à la limite supérieure enu
imprimant chaque ligne avec un espace multiplié par un nombres
. J'augmente le multiplicateur avec la longueur du nombre actuel.la source
Python 2,
787779 octetsEssayez-le en ligne!
f(A, B)
imprimera la partie de l'axe entre A et B inclus.Première fois que je réponds à un défi!
Utilise et abuse des astuces de Python 2 pour compter le nombre d'espaces qu'il doit ajouter avant le nombre.
-1 octet grâce à Mr.Xcoder
+2 car j'ai oublié un
+1
la source
sum(len(`j`)) for
peut devenirsum(len(`j`)for
, -1 octetsrange(a,b)
parrange(a,b+1)
, car Python a des plages semi-inclusives.C (gcc) ,
4138 octets-3 octets grâce à ASCII uniquement
Fonctionne sur RedHat6, accessible via PuTTY
Essayez-le en ligne!
la source
more
sur ce fichierV , 16 octets
Essayez-le en ligne!
Ce serait beaucoup plus facile si je pouvais prendre
start
end - start
mais je pense que cela change un peu trop le défi.Cela prend le numéro de début comme entrée dans le tampon et le numéro de fin comme argument. Il crée en fait l'échelle de
start
àstart + end
puis supprime tout après le numéro de fin.la source
MATL , 11 octets
Essayez-le en ligne!
Explication
Cela fonctionne en générant une chaîne pour chaque numéro et en la concaténant avec une copie à négation logique de la chaîne précédente. Ainsi, char 0 est ajouté 0 autant de fois que la longueur de la chaîne précédente. Le caractère 0 est affiché comme un espace et chaque chaîne est affichée sur une ligne différente
la source
Swift 4 , 115 octets
Je pense que personne n'aurait publié une solution Swift de toute façon ...
Essayez-le en ligne!
la source
Perl, 19 octets
Remarque:
\x0b
est compté comme un octet.Avec d'autres, je pensais que l'utilisation des mouvements du curseur serait l'itinéraire le plus court, cela signifie que cela ne fonctionne pas sur TIO:
Usage
la source
1..
là, car on vous donne deux entiers.1..
je ne lisais pas complètement les spécifications, c'est réglé maintenant! Quant au test en ligne, car la sortie contient l'onglet vertical, elle ne s'affiche pas comme prévu. Essayer de voir si je peux trouver un moteur de rendu qui prend en charge les caractères de contrôle ... Sinon, ce pourrait être mon nouveau projet!Japt ,
109 octetsTestez-le en ligne! Renvoie un tableau de lignes;
-R
drapeau inclus pour rejoindre les nouvelles lignes pour une visualisation plus facile.Explication
Ancienne version, 10 octets:
Testez-le en ligne!
la source
D,
133127126125 125121119 octetsJelly et APL ont été prises.
Essayez-le en ligne!
Si vous êtes d'accord avec les résultats dépendants de la console (va sur le même principe que la réponse C de Giacomos), voici un pour
7271 octets:Comment? (Uniquement des astuces spécifiques à D)
f(T)(T a,T b,T s=0)
Le système de modèles de D peut déduire des typesfor(T j;j++<s;)
Les entiers sont définis par défaut sur0
.' '.write;a.writeln
D vous permet d'appelerfun(arg)
commearg.fun
(une des rares choses golfiques que D a)a.text.length
Comme ci-dessus, et D vous permet également d'appeler une méthode sans paramètres comme s'il s'agissait d'une propriété (text
c'est la conversion en chaîne)la source
Java 8, 79 octets
Essayez-le en ligne!
la source
(a,b)->
pourb->a->
. (Et vous pourriez économiser trois octets supplémentaires en allant à Java 10 et en changeantString
envar
.) Essayez-le en ligne.