Concaténer n avec n + 1

44

introduction

La séquence OEIS A127421 est la séquence de nombres dont le développement décimal est une concaténation de 2 nombres non négatifs croissants consécutifs. En termes simples, chaque nombre de la séquence est formé en assemblant n avec n + 1 pour une valeur entière non négative de n . Les premiers termes sont:

1, 12, 23, 34, 45, 56, 67, 78, 89, 910, 1011, 1112, 1213, 1314, 1415, 1516, 1617, 1718, 1819, 1920, 2021, 2122, 2223, 2324, 2425, 2526, 2627, 2728, 2829, 2930, 3031, 3132, 3233, 3334, 3435, 3536, 3637, 3738, 3839, 3940, 4041, 4142, 4243, 4344, 4445, 4546,…

Défi

Avec un seul entier positif n , affiche les n premières entrées de la séquence OEIS A127421 par ordre croissant.

  • L'entrée et la sortie peuvent être dans n'importe quel format acceptable . Les chaînes ou les nombres conviennent à la sortie.
  • Les zéros en tête ne sont pas autorisés.
  • Un programme complet ou une fonction est autorisée.
  • Pour les besoins de ce défi, n sera positif et inférieur à 100.
  • Les failles standard sont interdites par défaut.
  • Cette question est le code de golf, donc le plus petit nombre d'octets gagne.
  • Voici quelques exemples d’entrée et de sortie:

    1 => 1
    2 => 1, 12
    3 => 1, 12, 23
    10 => 1, 12, 23, 34, 45, 56, 67, 78, 89, 910
    

Si vous avez des questions, n'hésitez pas à demander. Bonne chance.

PS c'est mon premier défi, alors j'espère que tout cela a du sens.

EDIT: Suppression de la restriction de sortie pour autoriser les nombres ou les chaînes.

Amphibologique
la source
1
Peut-il être 0 indexé?
Jo King
3
Personne ne l'a encore dit, mais bienvenue à PPCG! Belle première question, pas trop dure, mais pas complètement triviale non plus, et il y a un certain nombre d'approches différentes
Jo King
3
Après 7 jours, j'accepterai la réponse la plus courte qui réponde à tous ces critères. Pourquoi faut-il que le défi se termine?
Erik the Outgolfer
2
De nos jours, nous avons tendance à ne pas accepter de réponse, car cela décourage la publication ultérieure de réponses. Je suppose que vous prenez les vieux défis comme modèle (ce qui est également déconseillé). Voir les choses à éviter lorsque vous écrivez des défis
utilisateur202729
2
@ Dennis Ok, je vais supprimer la date du défi; j'accepterai peut-être quand il n'y aura plus de nouvelles réponses
Amphibologique le

Réponses:

13

Gelée , 3 octets

ŻVƝ

Un lien monadique acceptant un entier qui donne une liste d'entiers

Essayez-le en ligne!

Comment?

ŻVƝ - Link: integer       e.g. 59
Ż   - zero-range               [0,1,2,3,4,5,6, ... ,58,59]
  Ɲ - apply to each pair: i.e: [0,1] or [5,6]  or  [58,59]
 V  -   evaluate* jelly code   1     or 56     or  5859
    -                       -> [1,12,23,45,56, ... 5859]

* When given a list V actually joins the Python string values and evaluates that
  ...so e.g.: [58,59] -> ['58','59'] -> '5859' -> 5859
Jonathan Allan
la source
Dennis trop bien joué!
Okx
10

R , 32 octets

strtoi(paste0((x=1:scan())-1,x))

Essayez-le en ligne!

Outgolfed by MickyT , alors allez-y pour cette réponse!

Giuseppe
la source
Il y a eu une modification pour autoriser les chaînes ... pas besoin de strtoi!
JayCe
2
@JayCe, il est nécessaire de supprimer le texte principal 0de la première sortie.
Giuseppe
Ne pourriez-vous pas supprimer le zéro non significatif en finissant par [-1]plutôt qu'en utilisant strtoiou cela échoue-t-il dans certains cas extrêmes?
JDL
@JDL strtoiest utilisé pour convertir de "01"en 1parce que paste0va revenir c("01","12","23","34",...)et nous ne sommes pas autorisés à revenir "01".
Giuseppe
1
@CriminallyVulgar malheureusement cela échouera pour l'entrée de1
Giuseppe
8

Haskell, 38 37 octets

f n=("":)>>=zipWith(++)$show<$>[1..n]

Essayez-le en ligne!

Merci à Cat Wizard pour un octet!

Poignée de porte
la source
En ce qui concerne le golf, vous pouvez également vous en servir <$>comme substitut map.
Wheat Wizard
7

Cubix , 19 octets

I.1.W)>OSo;u.uO;@!-

Essayez-le en ligne!

Ceci enveloppe le cube comme suit

    I .
    1 .
W ) > O S o ; u
. u O ; @ ! - .
    . .
    . .

Regardez-le courir

Vous avez encore un peu de place pour jouer, mais pour le moment

  • W rediriger vers la face supérieure en descendant
  • I1> mettre en place la pile avec l'entrée et 1 puis rediriger dans la boucle principale
  • OSo;u affiche le haut de la pile, ajoute de l'espace pour la pile, la sortie, la suppression et la suppression
  • -!@;Ou)soustraire le TOS de l’entrée, si 0 arrêt, sinon résultat pop, TOS de sortie, total et incrémenter le TOS. Retour dans la boucle principale.
MickyT
la source
7

Perl 6 , 19 18 octets

{(^$_ Z~1..$_)X+0}

Essayez-le en ligne!

Bloc de code anonyme qui compresse les plages de 0 à n-1 avec 1 à n à l'aide de l'opérateur de concaténation, puis ajoute 0 à chaque élément pour le forcer à un nombre et supprimer les 0 initiaux.

Jo King
la source
5

R , 30 29 octets

Un octet supplémentaire grâce à @Giuseppe

10^nchar(n<-1:scan())*(n-1)+n

Essayez-le en ligne!

Une solution essentiellement mathématique, sauf utiliser nchar()plutôt que floor(log10()). J'ai été vraiment surpris qu'il soit plus court que la version à cordes .

MickyT
la source
29 octets! beau travail là-dessus, je n'y aurais jamais pensé!
Giuseppe
@ Giuseppe merci pour l'octet supplémentaire.
MickyT
4

APL (Dyalog) , 13 à 12 octets

1 octet enregistré grâce à @FrownyFrog

(⍎⍕,∘⍕1∘+)¨⍳

Essayez-le en ligne!

Uriel
la source
Wow, nos réponses à égalité
Zacharý
@ Zacharý, c'est plus apaisant pour toi :)
Uriel
Économisez 1:(⍎⍕,∘⍕1∘+)¨⍳
FrownyFrog le
4

Python 2 , 42 à 41 octets

f=lambda n:n-1and f(n-1)+[`n-1`+`n`]or[1]

Essayez-le en ligne!

Fonction récursive qui renvoie une liste mélangée de chaînes et d'entiers

Jo King
la source
Aviez-vous l'intention de supprimer la description d'origine "Fonction anonyme qui renvoie une liste"?
Esolanging Fruit
@EsolangingFruit Oopsie, corrigé! Merci
Jo King
Peut-être me manque quelque chose mais cela ne semble pas avoir «12» comme deuxième élément.
ElPedro
2
@ElPedro Cela peut être corrigé en sauvegardant un octet avecn and
M. Xcoder
1
Ce n'est pas souvent qu'un correctif sauve des octets :-)
ElPedro
4

Fleur , 88 octets

rule e<int x>[1(x)]=>[1(x-1),2(str(x)+str(x+1))|1->2];rule c[1(0),2|1->2]=>[2("12")];e!c

Blossom est un langage de programmation graphique sur lequel je travaille. Comme il ne peut prendre que des graphiques en entrée, ce programme attend donc un graphique comprenant un seul nœud avec son étiquette un entier. Il retourne un graphe d'arêtes connectées pour former le plus proche d'un tableau que je peux obtenir, et le graphe résultant est imprimé pour être affiché.

Une version non modifiée du code est la suivante:

rule expand <int x>
    [ 1 (x) ]
 => [ 1 (x-1), 2(str(x)+str(x+1)) | 1->2 ]
where x > 0;

rule clean
    [ 1 (0), 2 ("12") | 1->2 ]
 => [ 2 ("12") ];

expand! clean

Il définit deux règles: l'une appelée expand, qui (s'il existe un nœud avec une étiquette de valeur entière dans le graphique actuel) crée un autre nœud avec son incrément concaténé et réduit la valeur. Cela crée également un bord entre ces deux nœuds. Cette règle a également la condition que x soit supérieur à 0.

Le programme !exécute cette règle aussi longtemps qu'il est possible de l'appliquer sur le graphique. Dans ce cas, il s'exécutera jusqu'à ce que x soit égal à 0.clean règle supprime ensuite ce nœud 0 et son bord.

Blossom n'était pas fait pour le golf, mais ça ne se fait pas trop mal, je ne pense pas, vu ce que c'est. Il n’existe actuellement pas de moyen facile pour les personnes de tester le code de la floraison (et l’interprète sur lequel je travaille en ce moment n’est pas tout à fait fini et un peu bogué), mais ce n’est pas vraiment une entrée en concurrence!

IMP1
la source
3

Shakespeare , 703 octets

Q.Ajax,.Ford,.Act I:.Scene I:.[enter Ajax and Ford]Ford:Open mind!Scene V:.Ajax:You is the sum of thyself the sum of myself the sum of a big bad fat old red pig a big bad fat old lie!Ford:Open mind!Is you nicer zero?Ajax:If so, you is twice the sum of the sum of twice thyself twice thyself thyself!If so,Let us Scene V!Ford:You a cat!Open heart!Scene X:.Ajax:You is the sum of thyself a pig!Is you worse than a cat?If so,let us Scene C.Remember thyself.You is the sum of the sum of a big old red cute rich cat a big old red cute joy a big old pig!Speak mind!You is a big old red cute rich cat!Speak mind!Recall!Ford:Open heart!You is the sum of thyself a joy!Open heart!Let us Scene X.Scene C:.[exeunt]

essayez-le ici

version non golfée

127421th Night.
Ajax, likes to read the stars.
Ford, someone Ajax can always count on.
Act I:.
Scene I: Ajax reads a star.
[enter Ajax and Ford]
Ford: Open your mind! 
Scene V: Ford counts what ajax has learned.
Ajax: you are the sum of thyself and the sum of myself and the sum of a big bad fat old red pig and a big bad fat old lie!
Ford: Open Your mind! Are you nicer than zero?
Ajax: If so, you are twice the sum of the sum of twice thyself and twice thyself and thyself! 
If so, Let us Scene V!
Ford: You are a cat! Open your heart!

Scene X: Ajax and Ford recall the nights.
Ajax: You are the sum of thyself and a pig! Are you worse than a cat? If so, Let us Scene C.
Remember thyself. 
You are the sum of the sum of a big old red cute rich cat and a big old red cute joy and a big old pig! 
Speak you mind!
You are a big old red cute rich cat! Speak your mind! Recall your finest hour!
Ford: Open your heart! You are the sum of thyself and a joy! Open your heart! Let us Scene X.
Scene C: Fin.
[exeunt]
Al R
la source
3

Groovy , 35 octets

{(0..<it)*.with{""+it+++it as int}}

Essayez-le en ligne!

Je suis venu à la dernière minute avec l'idée d'utiliser * .with au lieu de .collect. Je n'ai aucune idée de ce it+++ità quoi on pars mais si c'est it++ + itou it + ++itles deux font la même chose. J'ai essayé de trouver un moyen de se débarrasser de <in .. <en le transformant en 1..it et en le décrémentant, mais je ne pense pas que cela raccourcirait.

Hlaaftana
la source
Bienvenue chez PPCG; joli premier post! En ce qui concerne l'analyse de a+++b, ce test suggère qu'il est analysé de gauche à droite, ce qui signifie (a++)+b.
Jonathan Frech
3

C (gcc) , 44 43 octets

f(i){i--&&printf(" %2$d%d"+5*!f(i),i+1,i);}

Essayez-le en ligne!

ErikF
la source
@DLosc Le %m$spécificateur de format "indique la position dans la liste d'arguments de l'argument souhaité, indexé à partir de 1" ( printf(3)page de manuel) . C'est très pratique tant que votre bibliothèque C le supporte!
ErikF
Merci ... mais je ne comprends toujours pas pourquoi %d%d(et changer l'ordre des arguments) ne fonctionne pas. (Je l'ai essayé, mais je ne sais pas pourquoi il ne produit aucune sortie.)
DLosc
@DLosc Si vous modifiez la chaîne de format, veillez à modifier le décalage après celle-ci (par exemple, vous " %d%d"devriez l'avoir +3*!f(i); sinon, le décalage de +5 pointe vers le NUL à la fin de la chaîne.)
ErikF
Oh, d'accord - j'ai enfin compris: le "# 2, puis le # 1" est nécessaire car, dans le cas de base, la chaîne de format abrégée devient simplement "# 1" et le premier argument printf doit donc être i+1non i. Très intéressant.
DLosc
3

Pyth , 9 8 6 octets

ms+`dh

Essayez-le en ligne!

Explication:

       - implicit output
m      - map function with argument d:
  +    -  concatenate
    d  -  argument d
   `   -  to string
     h -  into implicit d + 1
       - into Q (implicit input)
indéfini
la source
1
Bienvenue à PPCG! :)
Shaggy
@ Shaggy Merci, c'est la première fois que je fais cela.
u_ndefined
2

Gelée , 4 octets

ḶżRV

Essayez-le en ligne!

Comment ça marche

ḶżRV  Main link. Argument: n

Ḷ     Unlength; yield [0, ..., n-1].
  R   Range; yield [1, ... n].
 ż    Zipwith; yield [[0, 1], ..., [n-1, n]].
   V  Eval; cast each array to string and evaluate, yielding integers.
Dennis
la source
2

05AB1E , 6 octets

>GNJ,N

Essayez-le en ligne!

Explication

>G       # for N in [1 ... input]
  N      # push N
   J     # join stack
    ,    # print
     N   # push N (for next iteration)

LεD<ìï fonctionnerait pour le même nombre d'octets mais avec une sortie de liste

Emigna
la source
2

Japt -m , 6 5 octets

ó2 ¬n

Essayez-le en ligne!

Comme toujours, connais les drapeaux .

Déballé et comment ça marche

-m       Convert to range and map...

Uó2 q n
Uó2      Construct [U, U+1]
    q    Join
      n  Convert to number

         Implicit output (Array is printed as comma-delimited values)
Barboteur
la source
5 octets . Je ne sais pas pourquoi óne fonctionne pas ici sans le 2.
Shaggy
J'ai deux autres solutions de 5 octets (toutes deux utilisant la même méthode) qui n'utilisent pas d'indicateur, si quelqu'un d'autre veut tenter leur chance.
Shaggy
Je pense que 5 + 2 = 7 octets à cause du drapeau?
u_ndefined
2

C # (compilateur interactif Visual C #) , 103 71 64 56 octets


Golfed Essayez-le en ligne!

i=>{for(int x=0;x<i;)Write($"{(x>0?$",{x}":"")}{++x}");}

Ungolfed

i => {
    for( int x = 0; x < i; )
        Write( $"{( x > 0 ? $",{x}" : "")}{ ++x }" );
}

Code complet

Action<Int32> a = i => {
    for( int x = 0; x < i; )
        Write( $"{( x > 0 ? $",{x}" : "")}{ ++x }" );
    };

Int32[]
    testCases = new Int32[] {
        1,
        2,
        3,
        10,
    };

foreach( Int32[] testCase in testCases ) {
    WriteLine( $" Input: {testCase}\nOutput:" );
    a(testCase);
    WriteLine("\n");
}

Versions plus anciennes:

  • v1.2, 64 octets

    i=>{for(int x=0;x<i;)Write($"{(x>0?$",{x}":"")}{++x}");}
  • v1.1, 71 octets

    i=>{for(int x=0;x<i;)System.Console.Write($"{(x>0?$",{x}":"")}{++x}");}
  • v1.0, 103 octets

    i=>{for(int x=0;x<i;)System.Console.Write($"{(x>0?",":"")}{x++*System.Math.Pow(10,$"{x}".Length)+x}");}

Communiqués

  • v1.3 - - 8 bytes- Suppression de Consolenouveau grâce à raznagul
  • v1.2 - - 7 bytes- Supprimé Systemgrâce à raznagul
  • v1.1 --32 bytes
  • v1.0 - 103 bytes- Solution initiale.

Remarques

  • Aucun
auhmaan
la source
1
Le compilateur interactif C # a des importations statiques pour System.Console. Ainsi, vous pouvez économiser 15 octets en le supprimant.
Raznagul
Droite! L' habitude d'avoir à utiliser les
auhmaan
Vous pouvez également supprimer Console.: TIO
raznagul
2

ABAP, 101 octets

Pas vraiment une langue de golf, mais je m'amuse beaucoup avec elle

WHILE x<w.
CLEAR z.
IF x=1.
WRITE x.
ELSE.
CONCATENATE y x INTO z.
WRITE z.
ENDIF.
y=x.
x=x+1.
ENDDO.

W est le terme en entrée, X est le compteur de 1, Y est X-1 à partir du deuxième passage et Z est une chaîne concaténée.

Noir Antares
la source
2

Powershell, 27 à 26 octets

1.."$args"|%{"$p$_";$p=$_}

-1 octet: merci AdmBorkBork

Script de test:

$f = {
1.."$args"|%{"$p$_";$p=$_}
}

&$f 1
""
&$f 2
""
&$f 3
""
&$f 10
""
&$f 46
mazzy
la source
1
Vous pouvez enregistrer un octet à la 1.."$args"place.
AdmBorkBork
2

PHP, 33 32 octets

while($argv[1]--)echo" $i".++$i;

Essayez-le en ligne

Ancienne version

for(;$i<$argv[1];)echo" $i".++$i;     // 33 bytes
Crypto
la source
2

Javascript, 43 44,46,49,53 octets

n=>[...Array(n)].map((_,a)=>~~(a+(a+1+"")))

Versions précédentes :

n=>[...Array(n)].map((_,a)=>~~(a+(""+ ++a)))
n=>[...Array(n)].map((_,a)=>0- -(a+(""+ ++a)))
n=>[...Array(n).keys()].map(a=>0- -(a+(""+ ++a)))
n=>[...Array(n).keys()].map(a=>parseInt(a+(""+ ++a)))

3 octets sauvés grâce à la solution de @ Shaggy (qui est meilleure que la mienne) à supprimer .keys()

IEatBagels
la source
1
39 octets
Shaggy