Menggabungkan n dengan n +1


44

pengantar

Urutan OEIS A127421 adalah urutan angka yang ekspansi desimalnya merupakan gabungan dari 2 angka non-negatif yang meningkat berturut-turut. Sederhananya, setiap angka dalam urutan dibentuk dengan menyatukan n dengan n +1 untuk beberapa nilai integer non-negatif dari n . Beberapa istilah pertama adalah:

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, 4040, 4041, 4142, 4243, 4344, 4445, 4546,…

Tantangan

Diberikan bilangan bulat positif n , cetak n entri pertama dari urutan OEIS A127421 dalam urutan yang meningkat.

  • Input dan output dapat dalam format apa pun yang dapat diterima . String atau angka baik untuk output.
  • Nol terkemuka tidak diizinkan.
  • Program atau fungsi lengkap diizinkan.
  • Untuk keperluan tantangan ini, n akan positif dan di bawah 100.
  • Celah standar tidak diizinkan secara default.
  • Pertanyaan ini adalah kode golf, jadi byte-count terendah akan menang.
  • Berikut ini beberapa contoh input dan output:

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

Jika Anda memiliki pertanyaan, jangan ragu untuk bertanya. Semoga berhasil.

PS ini adalah tantangan pertama saya, jadi semoga semua ini masuk akal.

EDIT: Pembatasan output yang dihapus untuk memungkinkan angka atau string.


1
Bisakah 0 diindeks?
Jo King

3
Belum ada yang mengatakannya, tapi selamat datang di PPCG! Pertanyaan pertama yang menyenangkan, tidak terlalu sulit, namun juga tidak sepenuhnya sepele, dan ada sejumlah pendekatan berbeda
Jo King

3
Setelah 7 hari, saya akan menerima jawaban terpendek yang memenuhi semua kriteria ini. Mengapa ada kebutuhan untuk tantangan itu berakhir?
Erik the Outgolfer

2
Saat ini kita cenderung tidak menerima jawaban, karena itu mencegah posting jawaban lebih lanjut. Saya kira Anda mengambil tantangan lama sebagai model (yang juga tidak disarankan) Lihat hal-hal yang harus dihindari ketika menulis tantangan
user202729

2
@ Dennis Ok, saya akan menghapus tanggal dari tantangan; mungkin saya akan menerima ketika tidak ada lagi jawaban baru yang datang.
Amfibologis

Jawaban:


13

Jelly , 3 byte

ŻVƝ

Tautan monadik yang menerima bilangan bulat yang menghasilkan daftar bilangan bulat

Cobalah online!

Bagaimana?

Ż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

Mengungguli Dennis!
Okx

10

R , 32 byte

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

Cobalah online!

Dikalahkan oleh MickyT , jadi pilihlah jawaban itu!


Sudah ada suntingan untuk memungkinkan string ... tidak perlu untuk strtoi!
JayCe

2
@JayCe, perlu menelanjangi pemimpin 0dari keluaran pertama.
Giuseppe

tidak bisa Anda menghapus nol memimpin dengan mengakhiri [-1]daripada menggunakan strtoiatau apakah itu gagal dalam beberapa kasus tepi atau lainnya?
JDL

@JDL strtoidigunakan untuk mengonversi dari "01"ke 1karena paste0akan kembali c("01","12","23","34",...)dan kami tidak diizinkan untuk kembali "01".
Giuseppe

1
@CalcallyVulgar sayangnya itu akan gagal untuk input dari1
Giuseppe



7

Cubix , 19 byte

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

Cobalah online!

Ini membungkus ke kubus sebagai berikut

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

Tonton Jalankan

Masih ada sedikit ruang untuk dimainkan, tetapi saat ini

  • W redirect ke bagian atas menghadap ke bawah
  • I1> mengatur tumpukan dengan input dan 1 kemudian mengarahkan ulang ke loop utama
  • OSo;u Keluarkan bagian atas tumpukan, tambahkan ruang untuk tumpukan, keluaran, hapus dan uturn
  • -!@;Ou)kurangi TOS dari input, jika 0 menghentikan hasil pop, TOS output, uturn dan kenaikan TOS. Kembali ke loop utama.

7

Perl 6 , 19 18 byte

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

Cobalah online!

Blok kode anonim yang memperbesar rentang 0 ke n-1 dengan 1 ke n menggunakan operator gabungan, lalu menambahkan 0 ke setiap elemen untuk memaksanya ke angka dan menghapus 0s terkemuka.


5

R , 30 29 byte

Byte ekstra terima kasih kepada @Giuseppe

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

Cobalah online!

Sebagian besar solusi matematika, kecuali untuk menggunakan nchar()daripada floor(log10()). Saya benar-benar terkejut bahwa itu datang lebih pendek daripada versi string .


29 byte! kerja bagus untuk ini, saya tidak akan pernah memikirkannya!
Giuseppe

@Giuseppe terima kasih atas byte ekstra.
MickyT



4

Python 2 , 42 41 byte

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

Cobalah online!

Fungsi rekursif yang mengembalikan daftar campuran string dan integer


Apakah Anda bermaksud mengedit deskripsi asli "Fungsi anonim yang mengembalikan daftar"?
Buah Esolanging

@EsolangingFruit Oopsi, diperbaiki! Terima kasih
Jo King

Mungkin saya kehilangan sesuatu tetapi ini sepertinya tidak memiliki '12' sebagai elemen kedua.
ElPedro

2
@ ElPedro Itu bisa diperbaiki dengan menyimpan byte dengann and
Mr. Xcoder

1
Jarang


4

Blossom , 88 byte

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 adalah bahasa pemrograman grafik yang sedang saya kerjakan. Ini hanya dapat mengambil grafik sebagai input, sehingga program ini mengharapkan grafik yang terdiri dari satu simpul dengan labelnya bilangan bulat. Ini mengembalikan grafik dari tepi yang terhubung untuk membentuk yang paling dekat dengan array yang bisa saya dapatkan, dan grafik yang dihasilkan dicetak ke output.

Versi kode yang tidak dijinakkan adalah ini:

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

Ini mendefinisikan dua aturan: satu disebut expand, yang (sementara ada node dengan label integer-dihargai dalam grafik saat ini) menciptakan node lain dengan kenaikannya digabungkan, dan menurunkan nilainya. Ini juga menciptakan keunggulan antara kedua node ini. Aturan ini juga memiliki ketentuan bahwa x lebih besar dari 0.

The !mengeksekusi aturan ini untuk selama itu dapat diterapkan pada grafik, sehingga dalam hal ini akan mengeksekusi sampai x adalah 0. Dan kemudian cleanaturan menghilangkan ini 0 node dan tepi.

Blossom tidak dibuat untuk bermain golf, tetapi tidak terlalu buruk, saya tidak berpikir, mengingat apa itu. Saat ini tidak ada cara yang mudah bagi orang untuk menguji kode blossom (dan penerjemah yang sedang saya kerjakan saat ini belum selesai dan sedikit buggy), tetapi ini bukan entri yang bersaing!



3

Shakespeare , 703 byte

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]

coba di sini

versi tanpa ungolfed

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 byte

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

Cobalah online!

Saya datang menit terakhir dengan ide untuk menggunakan * .dengan bukan .collect. Saya tidak tahu apa yang it+++itdiuraikan tetapi apakah itu it++ + itatau it + ++itmereka berdua melakukan hal yang sama. Saya mencoba memikirkan cara untuk menyingkirkan <in .. <dengan mengubahnya menjadi 1.. itu dan mengurangi tapi saya tidak berpikir itu akan menjadi lebih pendek.


Selamat datang di PPCG; posting pertama yang bagus! Mengenai parsing a+++b, tes ini menunjukkan itu diurai dari kiri ke kanan, artinya (a++)+b.
Jonathan Frech

3

C (gcc) , 44 43 byte

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

Cobalah online!


@DLosc Penentu %m$format "menunjukkan posisi dalam daftar argumen dari argumen yang diinginkan, diindeks mulai dari 1" ( printf(3)halaman manual) . Ini cukup berguna selama pustaka C Anda mendukungnya!
ErikF

Terima kasih ... tapi saya masih bingung mengapa %d%d(dan mengganti urutan argumen) tidak berfungsi. (Saya mencobanya, tetapi tidak tahu mengapa tidak menghasilkan output.)
DLosc

@DLosc Jika Anda mengubah format string, pastikan untuk mengganti offset setelah itu (misalnya " %d%d"seharusnya +3*!f(i); sebaliknya, +5 poin offset ke NUL di akhir string.)
ErikF

Oh, oke - saya akhirnya mendapatkannya: "# 2, lalu # 1" diperlukan karena dalam kasus dasar, string format yang disingkat menjadi hanya "# 1" dan jadi Anda perlu argumen printf pertama i+1, bukan i. Sangat menarik.
DLosc

3

Pyth , 9 8 6 byte

ms+`dh

Cobalah online!

Penjelasan:

       - implicit output
m      - map function with argument d:
  +    -  concatenate
    d  -  argument d
   `   -  to string
     h -  into implicit d + 1
       - into Q (implicit input)

1
Selamat datang di PPCG! :)
Shaggy

@Shaggy Terima kasih, ini pertama kalinya saya melakukan ini.
u_ndefined

2

Jelly , 4 byte

ḶżRV

Cobalah online!

Bagaimana itu bekerja

Ḷż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 byte

>GNJ,N

Cobalah online!

Penjelasan

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

LεD<ìï akan bekerja untuk jumlah byte yang sama tetapi dengan keluaran daftar




2

Japt -m , 6 5 byte

ó2 ¬n

Cobalah online!

Seperti biasa, ketahui benderanya .

Dibongkar & Cara kerjanya

-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 byte . Tidak tahu mengapa ótidak bisa bekerja di sini tanpa 2.
Shaggy

Saya punya 2 solusi 5 byte lainnya (keduanya menggunakan metode yang sama) yang tidak menggunakan flag, jika orang lain ingin menusuk mereka.
Shaggy

Saya pikir 5 + 2 = 7 byte karena flag?
u_ndefined


2

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


Golf Cobalah secara online!

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

Tidak disatukan

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

Kode lengkap

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

Versi yang lebih lama:

  • v1.2, 64 byte

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

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

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

Rilis

  • v1.3 - - 8 bytes- Dihapus Consoleterima kasih lagi ke raznagul
  • v1.2 - - 7 bytes- Dihapus Systemterima kasih kepada raznagul
  • v1.1 --32 bytes
  • v1.0 - 103 bytes- Solusi awal.

Catatan

  • Tidak ada

1
C # Interactive Compiler memiliki impor statis untuk System.Console. Jadi, Anda dapat menyimpan 15 byte dengan menghapusnya.
raznagul

Baik! Kebiasaan harus menggunakan mereka
auhmaan

Anda juga dapat menghapus Console.: TIO
raznagul


2

ABAP, 101 byte

Tidak benar-benar bahasa golf, tapi saya bersenang-senang dengannya

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 adalah istilah input, X adalah penghitung dari 1, Y adalah X-1 dari lintasan kedua dan seterusnya, Z adalah string gabungan.


2

Powershell, 27 26 byte

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

-1 byte: terima kasih AdmBorkBork

Skrip uji:

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

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

1
Anda dapat menyimpan byte yang dilakukan 1.."$args"sebagai gantinya.
AdmBorkBork



2

Javascript, 43 44,46,49,53 byte

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

Versi sebelumnya :

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

Disimpan 3 byte berkat solusi @ Shaggy (yang lebih baik dari milik saya) untuk dihapus .keys()


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.