N'yi + 1 ile birleştirmek


44

Giriş

OEIS dizisi A127421 , ondalık genişlemesi ardışık 2 artan negatif olmayan sayının bir birleşimi olan sayı dizisidir. Basitçe, sırayla her sayı araya getirerek oluşturulur , n ile n + 1 değerine bir tamsayıdır olmayan bazı negatif için n . İlk birkaç terim:

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’e ait, 2526, 2627, 2728, 2829, 2930, 3031, 3132, 3233, 3334, 3435, 3536, 3637, 3738, 3839, 3940, 4041, 4142, 4243, 4344, 4445, 4546,….

Meydan okuma

Tek bir pozitif tamsayı n verildiğinde, OEIS dizisi A127421'in ilk n girişini artan sırada yazdırın.

  • Giriş ve çıkış kabul edilebilir herhangi bir biçimde olabilir . Karakter dizileri veya sayılar çıktı için gayet iyi.
  • Lider sıfır olan değil izin verdi.
  • Ya tam bir program ya da fonksiyona izin verilir.
  • Bu zorluğun amaçları için, n pozitif ve 100'ün altında olacaktır.
  • Standart boşluklar varsayılan olarak izin verilmez.
  • Bu soru kod golf, yani en düşük bayt sayısı kazanıyor.
  • İşte bazı örnek giriş ve çıkış:

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

Herhangi bir sorunuz varsa, sormakta tereddüt etmeyin. İyi şanslar.

Ps bu benim ilk meydan okuma, bu yüzden umarım bu tüm mantıklı.

EDIT: Sayılara veya karakter dizilerine izin vermek için çıktı kısıtlaması kaldırıldı.


1
0 endekslenebilir mi?
Jo King,

3
Henüz kimse söylemedi ama PPCG'ye hoş geldiniz! Güzel ilk soru, çok zor değil, aynı zamanda tamamen önemsiz de değil, ve çok sayıda farklı yaklaşım var
Jo King

3
7 gün sonra, tüm bu kriterleri karşılayan en kısa cevabı kabul edeceğim. Mücadelenin bitmesi için neden bir ihtiyaç var?
Outgolfer Erik,

2
Bugünlerde cevap kabul etmiyoruz, çünkü daha fazla cevap gönderilmesini engelliyor. Sanırım bir model olarak eski zorlukları kabul edersiniz (bu aynı zamanda cesareti kırılır) Yazarken zorluklardan kaçınılması gereken şeyleri
user202729

2
@Dennis Tamam, tarihi meydan okumadan kaldıracağım; belki yeni cevap gelmediğinde kabul edeceğim.
Amphibological

Yanıtlar:


13

Jöle , 3 bayt

ŻVƝ

Bir tamsayının listesini veren bir tamsayıyı kabul eden bir monadik bağlantı

Çevrimiçi deneyin!

Nasıl?

Ż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

Aşık Dennis!
Okx

10

R , 32 bayt

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

Çevrimiçi deneyin!

MickyT tarafından Outgolfed , bu yüzden cevap o kadar gitmek!


Dizelere izin verecek bir düzenleme yapıldı ... strtoi'ye gerek yok!
JayCe

2
@JayCe 0, ilk çıkışın başındaki şeridi soymak için gereklidir .
Giuseppe

Baştaki sıfırı [-1]kullanmak yerine bitirerek sonlandıramaz mıydınız, strtoiyoksa bazı durumlarda veya başka durumlarda başarısız olabilir mi?
JDL,

@JDL strtoidan dönüştürmek için kullanılıyor "01"için 1çünkü paste0dönecektir c("01","12","23","34",...)ve biz geri dönmelerine izin verilmez "01".
Giuseppe,

1
@CriminallyVulgar ne yazık ki bu giriş için başarısız olacak1
Giuseppe



7

Cubix , 19 bayt

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

Çevrimiçi deneyin!

Bu, küp üzerine şu şekilde sarılır

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

Çalıştırılmasını İzleyin

Henüz oynayacak küçük bir oda var, ama şu anda

  • W aşağı doğru ilerleyen üst yüze yönlendir
  • I1> yığını giriş ile 1 olarak ayarlayın ve ardından ana döngüye yönlendirin
  • OSo;u yığının en üst çıktısını alın, yığına boşluk ekleyin, çıktısını alın, çıkarın ve uturn
  • -!@;Ou)TOS girişinden çıkartın, eğer 0 durdurma pop sonucu olursa, TOS, uturn ve TOS artar. Ana döngünün içine geri dönün.

7

Perl 6 , 19 18 bayt

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

Çevrimiçi deneyin!

Birleştirme operatörünü kullanarak 0 - n-1 aralığını 1 - n ile fermuarlayan adsız kod bloğu, daha sonra bir sayıya zorlamak ve baştaki 0'ları kaldırmak için her öğeye 0 ekler.


5

R , 30 29 bayt

@Giuseppe sayesinde ekstra bir bayt

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

Çevrimiçi deneyin!

Kullanmak nchar()yerine çoğunlukla matematiksel bir çözüm floor(log10()). Dize versiyonundan daha kısa olmasına şaşırdım .


29 bayt! Bu güzel iş, bunu hiç düşünmezdim!
Giuseppe,

@Giuseppe Fazladan bayt için teşekkürler.
MickyT



4

Python 2 , 42 41 bayt

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

Çevrimiçi deneyin!

Karışık bir dizi ve tamsayı listesi döndüren özyinelemeli işlev


"Listeyi döndüren adsız işlev" orijinal açıklamasını düzenlemek mi istediniz?
Esolanging Fruit,

@EsolangingFruit Oopsie, düzeltildi! Teşekkürler
Jo King

Belki bir şeyleri özlüyorum ama bu ikinci unsur olarak '12' gibi görünmüyor.
ElPedro

2
@ElPedro Bir bayt kaydederek düzeltilebilirn and
Bay Xcoder

1
Bir düzeltmenin byte :-) tasarrufu
sağlaması


4

Çiçeği , 88 bayt

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

Çiçeği üzerinde çalışıyorum bir grafik programlama dilidir. Sadece girdi olarak grafik alabilir, bu yüzden bu program etiketi bir tamsayı ile tek bir düğümü içeren bir grafik bekler. Alabileceğim bir diziye en yakın olanı oluşturmak için bağlı kenarların bir grafiğini döndürür ve elde edilen grafik çıktıya yazdırılır.

Kodun sınırsız bir versiyonu şudur:

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

İki kuralı tanımlar: bunlardan biri expand(mevcut grafikte tam sayı değerinde etiketli bir düğüm varken) artımını birleştirilmiş bir düğüm oluşturur ve değeri düşürür. Ayrıca bu iki düğüm arasında bir kenar oluşturur. Bu kural ayrıca, x'in 0'dan büyük olması şartına da sahiptir.

!X, 0 olduğu ve o zamana kadar yürütür sürece grafik üzerinde uygulanabilir olarak bu kural, bu nedenle bu durumda yürütülür cleankuralı 0 düğümü ve onun kenarı kaldırır.

Çiçeği golf oynamak için yaratılmadı, ama çok da kötü olmadı, sanmıyorum. Şu anda insanların çiçek kodunu test etmeleri için gerçekten kolay bir yol yok (ve şu anda üzerinde çalıştığım tercüman tam olarak bitmedi ve küçük bir araba), ama bu tam olarak rakip bir giriş değil!



3

Shakespeare , 703 bayt

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]

burada dene

asılsız versiyon

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 bayt

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

Çevrimiçi deneyin!

Geçen dakika .collect yerine * .with kullanma fikriyle geldim. Ben hiçbir fikrim yok it+++itetmek ayrıştırır ama olsun it++ + itveya it + ++ither ikisi de aynı şeyi yapın. <İn .. <'den 1..it' e çevirerek ve azaltarak kurtulmanın bir yolunu düşünmeye çalıştım ama daha kısa süreceğini düşünmüyorum.


PPCG'ye Hoşgeldiniz; güzel ilk mesaj! Ayrıştırma ile ilgili olarak a+++b, bu test , soldan sağa, yani anlamdan ayrıştırılmasını önerir (a++)+b.
Jonathan Frech

3

C (GCC) , 44 43 bayt

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

Çevrimiçi deneyin!


@DLosc %m$biçim belirteci "1'den başlayarak endeksli istenen değişken argüman listesinde konumunu belirtir" ( printf(3)erkek, sayfa) . C kitaplığınız desteklediği sürece oldukça kullanışlı!
ErikF

Teşekkürler ... ama neden hala kafam karıştı %d%d(ve tartışmaların sırasını değiştirmek) işe yaramıyor. (Denedim, ama neden çıktı üretmediğini bilmiyorum.)
DLosc

@DLosc Biçim dizesini değiştirirseniz, ofseti bundan sonra değiştirdiğinizden emin olun (örneğin: " %d%d"olması gerekir +3*!f(i); aksi takdirde, +5 ofseti dizenin sonunda
NUL'ye işaret eder

Oh, tamam - Sonunda anladım: "# 2, sonra # 1" gereklidir, çünkü temel durumda kısaltılmış format dizgisi sadece "# 1" olur ve bu yüzden ilk printf argümanına ihtiyacınız vardır i+1, değil i. Çok ilginç.
DLosc

3

Pyth , 9 8 6 bayt

ms+`dh

Çevrimiçi deneyin!

Açıklama:

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

1
PPCG'ye Welcom! :)
Shaggy,

@Shaggy Teşekkürler, bu benim ilk seferim.
u_ndefined

2

Jöle , 4 bayt

ḶżRV

Çevrimiçi deneyin!

Nasıl çalışır

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

>GNJ,N

Çevrimiçi deneyin!

açıklama

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

LεD<ìï aynı bayt sayısı için çalışırdı ama liste çıktısıyla




2

Japt -m , 6 5 bayt

ó2 ¬n

Çevrimiçi deneyin!

Her zamanki gibi bayrakları biliyorsun .

Ambalajsız ve Nasıl Çalışır?

-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 bayt . Neden óburada olmadan çalışmadığını bilmiyorum 2.
Shaggy,

Başka biri tarafından bıçaklanmak istese, bayrak kullanmayan 2 diğer 5 baytlık çözümüm var (ikisi de aynı yöntemi kullanıyor).
Shaggy

Sanırım bayrak yüzünden 5 + 2 = 7 bayt?
u_ndefined,


2

C # (Visual C # Etkileşimli Derleyici) , 103 71 64 56 bayt


Golfed Çevrimiçi deneyin!

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

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

Eski versiyonlar:

  • v1.2, 64 bayt

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

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

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

Salıverme

  • v1.3 - - 8 bytes- raznagul'aConsole tekrar teşekkürler
  • v1.2 - - 7 bytes- raznagulSystem sayesinde kaldırıldı
  • v1.1 --32 bytes
  • v1.0 - 103 bytes- İlk çözüm.

notlar

  • Yok

1
C # Etkileşimli Derleyicinin statik içe aktarması var System.Console. Böylece kaldırarak 15 byte tasarruf edebilirsiniz.
raznagul

Sağ! Onları kullanmak zorunda
kalma

Ayrıca kaldırabilirsiniz Console.: TIO
raznagul


2

ABAP, 101 bayt

Bir golf dili değil, ama onunla çok eğleniyorum

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, giriş terimidir, X, 1'den sayıcıdır, Y, ikinci geçişten itibaren X-1'dir, Z, birleştirilmiş dizedir.


2

Powershell, 27 26 bayt

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

-1 bayt: teşekkürler AdmBorkBork

Test komut dosyası:

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

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

1
Bunun 1.."$args"yerine bir bayt kaydedebilirsiniz .
AdmBorkBork



2

Javascript, 43 44,46,49,53 bayt

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

Önceki sürümler :

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

@ Shaggy'nin (benimkinden daha iyi olan) çözümü sayesinde 3 bayt kurtarıldı .keys()


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.