Verketten von n mit n + 1

44

Einführung

OEIS-Folge A127421 ist die Folge von Zahlen, deren Dezimalerweiterung eine Verkettung von 2 aufeinanderfolgenden aufsteigenden nicht-negativen Zahlen ist. Einfach ausgedrückt, wird jede Zahl in der Folge gebildet, indem n mit n + 1 für einen nicht negativen ganzzahligen Wert von n zusammengesetzt wird . Die ersten Begriffe sind:

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,…

Herausforderung

Bei einer einzelnen positiven Ganzzahl n werden die ersten n Einträge der OEIS-Sequenz A127421 in aufsteigender Reihenfolge gedruckt.

  • Die Ein- und Ausgabe kann in jedem akzeptablen Format erfolgen . Zeichenfolgen oder Zahlen können problemlos ausgegeben werden.
  • Führende Nullen sind nicht zulässig.
  • Es ist entweder ein vollständiges Programm oder eine vollständige Funktion zulässig.
  • Für die Zwecke dieser Herausforderung ist n positiv und unter 100.
  • Standardlücken sind standardmäßig nicht zulässig.
  • Diese Frage ist Codegolf, also gewinnt die niedrigste Byteanzahl.
  • Hier sind einige Beispiele für Ein- und Ausgaben:

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

Wenn Sie Fragen haben, zögern Sie nicht zu fragen. Viel Glück.

PS Das ist meine erste Herausforderung. Hoffentlich macht das alles Sinn.

BEARBEITEN: Die Ausgabeeinschränkung wurde entfernt, um Zahlen oder Zeichenfolgen zuzulassen.

Amphibologisch
quelle
1
Kann es 0 indiziert werden?
Jo King
3
Niemand hat es bisher gesagt, aber willkommen bei PPCG! Schöne erste Frage, nicht zu schwer, aber auch nicht ganz trivial, und es gibt verschiedene Ansätze
Jo King
3
Nach 7 Tagen akzeptiere ich die kürzeste Antwort, die alle diese Kriterien erfüllt. Warum muss die Herausforderung enden?
Erik der Outgolfer
2
Heutzutage neigen wir dazu, eine Antwort nicht zu akzeptieren, da dies weitere Veröffentlichungen von Antworten verhindert. Ich nehme an, Sie alte Herausforderungen als Vorbild nehmen anzeigen (die auch abgeraten) Dinge zu vermeiden-wenn-writing-Herausforderungen
user202729
2
@ Tennis Ok, ich werde das Datum von der Herausforderung entfernen; Vielleicht akzeptiere ich, wenn keine neuen Antworten mehr kommen.
Amphibological

Antworten:

13

Gelee , 3 Bytes

ŻVƝ

Ein monadischer Link, der eine Ganzzahl akzeptiert, die eine Liste von Ganzzahlen ergibt

Probieren Sie es online!

Wie?

Ż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
quelle
Outgolfed Dennis!
Okx
10

R , 32 Bytes

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

Probieren Sie es online!

Outgolfed von MickyT , also stimme dieser Antwort zu!

Giuseppe
quelle
Es wurde eine Bearbeitung vorgenommen, um Zeichenfolgen zuzulassen ... strtoi ist nicht erforderlich!
JayCe
2
@ JayCe Es ist notwendig, den Zeilenabstand 0von der ersten Ausgabe zu entfernen .
Giuseppe
Konnten Sie die führende Null nicht entfernen, indem Sie mit enden, [-1]anstatt sie zu verwenden, strtoioder schlägt dies in irgendeinem Randfall fehl?
JDL
@JDL strtoiwird zum Konvertieren von "01"nach verwendet, 1da zurückgegeben paste0wird c("01","12","23","34",...)und wir nicht zurückgeben dürfen "01".
Giuseppe
1
@ CriminallyVulgar leider wird das für die Eingabe von fehlschlagen1
Giuseppe
8

Haskell, 38 37 Bytes

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

Probieren Sie es online!

Danke an Cat Wizard für ein Byte!

Türknauf
quelle
Was das Golfen angeht, können Sie dieses auch <$>als Ersatz mapverwenden.
Weizen-Assistent
7

Cubix , 19 Bytes

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

Probieren Sie es online!

Dies wird wie folgt auf den Würfel gewickelt

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

Beobachten Sie es laufen

Habe noch ein wenig Platz zum Spielen, aber im Moment

  • W Weiterleiten an die Oberseite nach unten
  • I1> Richten Sie den Stack mit der Eingabe und 1 ein und leiten Sie ihn in die Hauptschleife um
  • OSo;u Geben Sie den Anfang des Stapels aus, fügen Sie Speicherplatz zum Stapeln hinzu, geben Sie aus, entfernen Sie und verwenden Sie
  • -!@;Ou)subtrahieren Sie die TOS von der Eingabe, wenn 0 stop else pop result, geben Sie die TOS aus und erhöhen Sie die TOS. Zurück in die Hauptschleife.
MickyT
quelle
7

Perl 6 , 19 18 Bytes

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

Probieren Sie es online!

Anonymer Codeblock, der den Bereich 0 bis n-1 mit 1 bis n mithilfe des Verkettungsoperators komprimiert und dann zu jedem Element 0 hinzufügt, um es zu einer Zahl zu zwingen und führende Nullen zu entfernen.

Scherzen
quelle
5

R , 30 29 Bytes

Ein extra Byte dank @Giuseppe

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

Probieren Sie es online!

Eine meist mathematische Lösung, außer für die Verwendung nchar()und nicht floor(log10()). Ich war wirklich überrascht, dass es kürzer als die String- Version war.

MickyT
quelle
29 Bytes! Gute Arbeit, daran hätte ich nie gedacht!
Giuseppe
@ Giuseppe danke für das extra Byte.
MickyT
4

APL (Dyalog) , 13 12 Bytes

Dank @FrownyFrog wird 1 Byte gespeichert

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

Probieren Sie es online!

Uriel
quelle
Wow, unsere Antworten gebunden
Zacharý
@ Zacharý dein ist mehr APLish obwohl :)
Uriel
Speichern Sie 1:(⍎⍕,∘⍕1∘+)¨⍳
FrownyFrog
4

Python 2 , 42 41 Bytes

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

Probieren Sie es online!

Rekursive Funktion, die eine gemischte Liste von Zeichenfolgen und Ganzzahlen zurückgibt

Scherzen
quelle
Wollten Sie die ursprüngliche Beschreibung "Anonyme Funktion, die eine Liste zurückgibt" ändern?
Esolanging Fruit
@EsolangingFruit Oopsie, behoben! Danke
Jo King
Vielleicht fehlt mir etwas, aber dies scheint nicht "12" als zweites Element zu haben.
ElPedro
2
@ElPedro Dies kann behoben werden, indem ein Byte mitn and
Mr. Xcoder
1
Es ist nicht oft, dass ein
Update
4

Blüte , 88 Bytes

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 ist eine Graph-Programmiersprache, an der ich arbeite. Es können nur Graphen als Eingaben verwendet werden. Daher erwartet dieses Programm einen Graphen, der aus einem einzelnen Knoten besteht und dessen Bezeichnung eine Ganzzahl ist. Es wird ein Diagramm der verbundenen Kanten ausgegeben, das dem Array, das ich erhalten kann, am nächsten kommt, und das resultierende Diagramm wird zur Ausgabe gedruckt.

Eine nicht abgeschlossene Version des Codes lautet wie folgt:

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

Es werden zwei Regeln definiert: Eine aufgerufene expand, die (während es im aktuellen Diagramm einen Knoten mit einer Ganzzahlbezeichnung gibt) einen anderen Knoten mit seinem verketteten Inkrement erstellt und den Wert senkt. Es wird auch eine Kante zwischen diesen beiden Knoten erstellt. Diese Regel hat auch die Bedingung, dass x größer als 0 ist.

Die !führt diese Regel so lange , wie es in der graphischen Darstellung aufgetragen werden kann, so dass in diesem Fall wird es ausgeführt , bis x 0 ist , und dann die cleanentfernt Regel den 0 - Knoten und die Kante.

Blossom ist nicht zum Golfen gemacht, aber es macht sich nicht schlecht, glaube ich. Wenn man bedenkt, was es ist. Es gibt momentan keine einfache Möglichkeit, Blütencode zu testen (und der Interpreter, an dem ich gerade arbeite, ist noch nicht ganz fertig und ein bisschen fehlerhaft), aber dies ist kein konkurrierender Eintrag!

IMP1
quelle
3

Shakespeare , 703 Bytes

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]

versuche es hier

ungolfed version

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
quelle
3

Groovy , 35 Bytes

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

Probieren Sie es online!

Ich kam in letzter Minute auf die Idee, * .with anstelle von .collect zu verwenden. Ich habe keine Ahnung, was it+++itanalysiert wird, aber ob es it++ + itoder it + ++itbeide dasselbe tun. Ich habe versucht, einen Weg zu finden, das <in .. <loszuwerden, indem ich es in 1..it verwandelte und dekrementierte, aber ich glaube nicht, dass es kürzer werden würde.

Hlaaftana
quelle
Willkommen bei PPCG; schöner erster Beitrag! Im Hinblick auf die Analyse von a+++b, dieser Test schlägt es von links nach rechts analysiert wird, was bedeutet (a++)+b.
Jonathan Frech
3

C (gcc) , 44 43 Bytes

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

Probieren Sie es online!

ErikF
quelle
@DLosc Der %m$Formatbezeichner "bezeichnet die Position des gewünschten Arguments in der Argumentliste, indiziert ab 1" ( printf(3)Manpage) . Es ist ziemlich praktisch, solange Ihre C-Bibliothek es unterstützt!
ErikF
Danke ... aber ich bin immer noch verwirrt, warum %d%d(und die Reihenfolge der Argumente zu ändern) nicht funktioniert. (Ich habe es versucht, weiß aber nicht, warum es keine Ausgabe erzeugt.)
DLosc
@ DLosc Wenn Sie die Formatzeichenfolge ändern, stellen Sie sicher, dass Sie den Versatz danach ändern (z. B. " %d%d"sollte +3*!f(i); andernfalls zeigt der Versatz +5 auf die NUL am Ende der Zeichenfolge.)
ErikF
Oh, okay - ich verstehe es endlich: das "# 2, dann # 1" ist notwendig, weil im Basisfall die verkürzte Formatzeichenfolge nur "# 1" wird und Sie das erste printf-Argument brauchen, um zu sein i+1, nicht i. Sehr interessant.
DLosc
3

Pyth , 9 8 6 Bytes

ms+`dh

Probieren Sie es online!

Erläuterung:

       - implicit output
m      - map function with argument d:
  +    -  concatenate
    d  -  argument d
   `   -  to string
     h -  into implicit d + 1
       - into Q (implicit input)
nicht definiert
quelle
1
Willkommen bei PPCG! :)
Shaggy
@ Shaggy Danke, ich mache das zum ersten Mal.
u_ndefined
2

Gelee , 4 Bytes

ḶżRV

Probieren Sie es online!

Wie es funktioniert

Ḷż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
quelle
2

05AB1E , 6 Bytes

>GNJ,N

Probieren Sie es online!

Erläuterung

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

LεD<ìï würde für die gleiche Anzahl von Bytes funktionieren, aber mit Listenausgabe

Emigna
quelle
2

Japt -m , 6 5 Bytes

ó2 ¬n

Probieren Sie es online!

Kenne wie immer die Flaggen .

Ausgepackt und wie es funktioniert

-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)
Bubbler
quelle
5 Bytes . Ich weiß nicht, warum es óhier nicht ohne das geht 2.
Shaggy
Ich habe 2 andere 5-Byte-Lösungen (beide mit der gleichen Methode), die kein Flag verwenden, wenn jemand anderes sie angreifen möchte.
Shaggy
Ich denke 5 + 2 = 7 bytes wegen flag?
u_ndefined
2

C # (Visual C # Interactive Compiler) , 103 71 64 56 Byte


Golf Versuchen Sie es online!

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 }" );
}

Vollständiger Code

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");
}

Ältere Versionen:

  • v1.2, 64 bytes

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

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

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

Releases

  • v1.3 - - 8 bytes- ConsoleDank raznagul wieder entfernt
  • v1.2 - - 7 bytes- Entfernt Systemdank raznagul
  • v1.1 --32 bytes
  • v1.0 - 103 bytes- Anfangslösung.

Anmerkungen

  • Keiner
auhmaan
quelle
1
Der C # Interactive Compiler verfügt über statische Importe für System.Console. Sie können also 15 Bytes einsparen, indem Sie es entfernen.
Raznagul
Richtig! Gewohnheit, sie benutzen zu müssen
auhmaan
Sie können auch entfernen Console.: TIO
raznagul
2

ABAP, 101 Bytes

Eigentlich keine Golfsprache, aber ich habe viel Spaß damit

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 ist der Eingangsterm, X ist der Zähler von 1, Y ist X-1 ab dem zweiten Durchgang, Z ist die verkettete Zeichenfolge.

Noir Antares
quelle
2

Powershell, 27 26 Bytes

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

-1 Byte: Danke AdmBorkBork

Testskript:

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

&$f 1
""
&$f 2
""
&$f 3
""
&$f 10
""
&$f 46
mazzy
quelle
1
Sie können 1.."$args"stattdessen ein Byte speichern .
AdmBorkBork
2

PHP, 33 32 Bytes

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

Probieren Sie es online

Alte Version

for(;$i<$argv[1];)echo" $i".++$i;     // 33 bytes
Krypto
quelle
2

Javascript, 43 44,46,49,53 Bytes

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

Vorherige Versionen :

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 Bytes gespart, dank der @ Shaggy-Lösung (die besser ist als meine) zu entfernen .keys()

IEatBagels
quelle
1
39 Bytes
Shaggy