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.


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

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!


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



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.

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.


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.


29 Bytes! Gute Arbeit, daran hätte ich nie gedacht!
Giuseppe

@ Giuseppe danke für das extra Byte.
MickyT



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


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!



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]

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.


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!


@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


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.


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




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)

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

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.


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

1
Sie können 1.."$args"stattdessen ein Byte speichern .
AdmBorkBork



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()


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.