Łączenie nz n + 1


44

Wprowadzenie

Sekwencja OEIS A127421 jest sekwencją liczb, których rozwinięcie dziesiętne jest konkatenacją 2 kolejnych rosnących liczb nieujemnych. Mówiąc krótko, każda ilość w sekwencji tworzy się łącząc n z n + 1 dla niektórych nieujemne, całkowita wartość n . Pierwsze kilka warunków to:

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

Wyzwanie

Biorąc pod uwagę jedną dodatnią liczbę całkowitą n , wydrukuj pierwsze n wpisów sekwencji OEIS A127421 w porządku rosnącym.

  • Dane wejściowe i wyjściowe mogą mieć dowolny akceptowalny format . Ciągi lub liczby są odpowiednie do wydruku.
  • Zer są nie dopuszczalne.
  • Dozwolony jest pełny program lub funkcja.
  • Dla celów tego wyzwania n będzie dodatnie i poniżej 100.
  • Standardowe luki są domyślnie niedozwolone.
  • To pytanie dotyczy kodu golfowego, więc wygrywa najmniej bajtów.
  • Oto kilka przykładowych danych wejściowych i wyjściowych:

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

Jeśli masz jakieś pytania, nie wahaj się zapytać. Powodzenia.

PS to moje pierwsze wyzwanie, więc mam nadzieję, że to wszystko ma sens.

EDYCJA: Usunięto ograniczenie wyjściowe, aby umożliwić liczby lub ciągi znaków.


1
Czy może być zindeksowany?
Jo King

3
Nikt jeszcze tego nie powiedział, ale witamy w PPCG! Ładne pierwsze pytanie, niezbyt trudne, ale też nie całkiem trywialne, i istnieje wiele różnych podejść
Jo King

3
Po 7 dniach zaakceptuję najkrótszą odpowiedź, która spełnia wszystkie te kryteria. Dlaczego wyzwanie musi się zakończyć?
Erik the Outgolfer

2
W dzisiejszych czasach zwykle nie przyjmujemy odpowiedzi, ponieważ zniechęca to do dalszego zamieszczania odpowiedzi. Podejrzewam, że bierzesz stare wyzwania jako model (co również jest odradzane) Zobacz rzeczy, których należy unikać, kiedy pisze się wyzwania
użytkownik202729

2
@Dennis Ok, usunę datę z wyzwania; może zaakceptuję, gdy nie będzie już nowych odpowiedzi.
Amfibologiczny

Odpowiedzi:


13

Galaretka , 3 bajty

ŻVƝ

Łącze monadyczne akceptujące liczbę całkowitą, która daje listę liczb całkowitych

Wypróbuj online!

W jaki sposób?

Ż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 bajty

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

Wypróbuj online!

Outgolfed by MickyT , więc idź głosować tę odpowiedź!


Wprowadzono edycję, która pozwala na napisy ... nie ma potrzeby pisania napisów!
JayCe

2
@JayCe konieczne jest usunięcie wiodącej pozycji 0z pierwszego wyjścia.
Giuseppe,

czy nie możesz usunąć wiodącego zera, kończąc na [-1]zamiast zamiast używać, strtoiczy też to się nie udaje w takim czy innym przypadku krawędzi?
JDL

@JDL strtoijest używany do konwersji z "01"na, 1ponieważ paste0powróci c("01","12","23","34",...)i nie możemy wrócić "01".
Giuseppe,

1
@CriminallyVulgar niestety to się nie powiedzie na wejście1
Giuseppe



7

Cubix , 19 bajtów

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

Wypróbuj online!

To otacza kostkę w następujący sposób

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

Watch It Run

Mam jeszcze trochę miejsca do zabawy, ale w tej chwili

  • W przekieruj na górną twarz skierowaną w dół
  • I1> ustaw stos za pomocą wejścia i 1, a następnie przekieruj do głównej pętli
  • OSo;u wypisz górną krawędź stosu, dodaj miejsce do stosu, wydrukuj, usuń i wymień
  • -!@;Ou)odejmij TOS od wejścia, jeśli 0 zatrzyma inny wynik, wyślij TOS, zwróć i zwiększ TOS. Z powrotem do głównej pętli.

7

Perl 6 , 19 18 bajtów

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

Wypróbuj online!

Anonimowy blok kodu, który zamyka zakres od 0 do n-1 z 1 do n za pomocą operatora konkatenacji, a następnie dodaje 0 do każdego elementu, aby zmusić go do liczby i usunąć wiodące zera.


5

R , 30 29 bajtów

Dodatkowy bajt dzięki @Giuseppe

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

Wypróbuj online!

Przeważnie matematyczne rozwiązanie, z wyjątkiem używania nchar()zamiast floor(log10()). Byłem naprawdę zaskoczony, że pojawiła się w wersji krótszej niż strunowa .


29 bajtów! dobra robota, nigdy bym o tym nie pomyślał!
Giuseppe,

@Giuseppe dziękuje za dodatkowy bajt.
MickyT,



4

Python 2 , 42 41 bajtów

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

Wypróbuj online!

Funkcja rekurencyjna, która zwraca mieszaną listę ciągów i liczb całkowitych


Czy zamierzałeś edytować oryginalny opis „Funkcja anonimowa, która zwraca listę”?
Esolanging Fruit

@EsolangingFruit Oopsie, naprawiono! Dzięki
Jo King

Może coś mi brakuje, ale wydaje się, że nie ma „12” jako drugiego elementu.
ElPedro

2
@ElPedro Można to naprawić, oszczędzając bajt zn and
Mr. Xcoder



4

Kwiat , 88 bajtów

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 to graficzny język programowania, nad którym pracuję. Może przyjmować wykresy tylko jako dane wejściowe, więc ten program oczekuje wykresu zawierającego pojedynczy węzeł z etykietą jako liczbę całkowitą. Zwraca wykres połączonych krawędzi, aby utworzyć najbliższą tablicę, jaką mogę uzyskać, a wynikowy wykres jest drukowany na wyjściu.

Unminified wersja kodu to:

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

Definiuje dwie reguły: jedną o nazwie expand, która (podczas gdy na bieżącym wykresie jest węzeł z etykietą o wartościach całkowitych) tworzy kolejny węzeł z połączonym przyrostem i obniża wartość. Tworzy również krawędź między tymi dwoma węzłami. Ta reguła ma również warunek, że x jest większe niż 0.

W !Wykonuje tej reguły tak długo, jak to może być stosowane na wykresie, więc w tym przypadku będzie to wykonać aż x 0. I wtedy cleanzasada usuwa tę 0 węzła i jego krawędzi.

Blossom nie został stworzony do gry w golfa, ale nie wydaje mi się, że źle się dzieje, nie sądzę, biorąc pod uwagę, co to jest. Obecnie nie ma tak naprawdę łatwego sposobu na przetestowanie kodu kwitnienia (a interpreter, nad którym obecnie pracuję, nie jest jeszcze całkiem skończony i ma trochę błędów), ale nie jest to dokładnie konkurencyjny wpis!



3

Szekspir , 703 bajty

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]

spróbuj tutaj

wersja bez golfa

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 bajtów

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

Wypróbuj online!

W ostatniej chwili wpadłem na pomysł użycia * .with zamiast .collect. Nie mam pojęcia, co it+++itanalizuje, ale czy to, it++ + itczy it + ++itoboje robią to samo. Próbowałem wymyślić sposób na pozbycie się <w .. <, zamieniając go na 1..it i zmniejszając, ale nie sądzę, aby był krótszy.


Witamy w PPCG; fajny pierwszy post! Jeśli chodzi o parsowanie a+++b, ten test sugeruje, że jest on analizowany od lewej do prawej, co oznacza (a++)+b.
Jonathan Frech,

3

C (gcc) , 44 43 bajty

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

Wypróbuj online!


@DLosc Specyfikator %m$formatu „oznacza pozycję na liście argumentów żądanego argumentu, indeksowaną od 1” ( printf(3)strona man) . Jest całkiem przydatny, o ile obsługuje go biblioteka C!
ErikF

Dzięki ... ale nadal jestem zdezorientowany, dlaczego %d%d(i zmiana kolejności argumentów) nie działa. (Próbowałem, ale nie wiem, dlaczego nie daje żadnego wyjścia).
DLosc

@DLosc Jeśli zmienisz ciąg formatu, pamiętaj o zmianie przesunięcia po nim (np. " %d%d"Powinien +3*!f(i); inaczej przesunięcie +5 wskazuje na NUL na końcu ciągu).
ErikF

Och, dobra - w końcu to rozumiem: „# 2, a następnie # 1” jest konieczne, ponieważ w przypadku podstawowym skrócone ciąg formatu staje się po prostu „# 1”, a więc potrzebujesz pierwszego argumentu printf i+1, a nie i. Bardzo interesujące.
DLosc


2

Galaretka , 4 bajty

ḶżRV

Wypróbuj online!

Jak to działa

Ḷż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 bajtów

>GNJ,N

Wypróbuj online!

Wyjaśnienie

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

LεD<ìï działałoby dla tej samej liczby bajtów, ale z danymi wyjściowymi listy




2

Japt -m , 6 5 bajtów

ó2 ¬n

Wypróbuj online!

Jak zawsze, poznaj flagi .

Rozpakowane i jak to działa

-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 bajtów . Nie wiem, dlaczego ónie działa tutaj bez 2.
Kudłaty

Mam 2 inne 5-bajtowe rozwiązania (oba przy użyciu tej samej metody), które nie używają flagi, jeśli ktoś inny chce je dźgnąć.
Kudłaty

Myślę, że 5 + 2 = 7 bajtów z powodu flagi?
u_indefined


2

C # (interaktywny kompilator Visual C #) , 103 71 64 56 bajtów


Gra w golfa Wypróbuj online!

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

Nie golfił

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

Pełny kod

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

Starsza wersja:

  • wersja 1.2, 64 bajty

    i=>{for(int x=0;x<i;)Write($"{(x>0?$",{x}":"")}{++x}");}
  • wersja 1.1, 71 bajtów

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

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

Prasowe

  • v1.3 - - 8 bytes- Usunięto Consoledzięki raznagul
  • v1.2 - - 7 bytes- Usunięto Systemdzięki raznagul
  • v1.1 --32 bytes
  • v1.0 - 103 bytes- Wstępne rozwiązanie.

Notatki

  • Żaden

1
Kompilator interaktywny C # ma import statyczny System.Console. Możesz więc zaoszczędzić 15 bajtów, usuwając go.
raznagul

Dobrze! Zwyczaj konieczności wykorzystywać je
auhmaan

Możesz także usunąć Console.: TIO
raznagul


2

ABAP, 101 bajtów

Nie do końca golfowy język, ale dobrze się z tym bawię

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 jest terminem wejściowym, X jest licznikiem od 1, Y oznacza X-1 od drugiego przejścia, Z jest łańcuchem połączonym.


2

PowerShell, 27 26 bajtów

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

-1 bajt: dzięki AdmBorkBork

Skrypt testowy:

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

&$f 1
""
&$f 2
""
&$f 3
""
&$f 10
""
&$f 46

1
Zamiast tego możesz zapisać bajt 1.."$args".
AdmBorkBork



2

JavaScript, 43 44,46,49,53 bajtów

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

Poprzednie wersje :

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

Zaoszczędzono 3 bajty dzięki rozwiązaniu @ Shaggy (które jest lepsze niż moje) do usunięcia .keys()


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.