nとn + 1の連結


44

前書き

OEISシーケンスA127421は、10進拡張が2つの連続する増加する非負数の連結である数のシーケンスです。簡単に言えば、配列中のすべての数は一緒に入れることによって形成されているNN + 1の値が整数、いくつかの非負のためにN。最初のいくつかの用語は次のとおりです。

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

チャレンジ

単一の正の整数nを指定すると、OEISシーケンスA127421の最初のnエントリを昇順で出力します。

  • 入力および出力は、任意の受け入れ可能な形式することができます。文字列または数値は出力に適しています。
  • 先行ゼロは許可されません。
  • 完全なプログラムまたは機能のいずれかが許可されます。
  • この課題のために、nは正で100未満です。
  • デフォルトでは、標準の抜け穴は許可されていません。
  • この質問はコードゴルフなので、バイト数が最も少なくなります。
  • 入力と出力の例を次に示します。

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

ご質問がありましたら、お気軽にお尋ねください。幸運を。

PSこれは私の最初の挑戦なので、うまくいけばこれはすべて理にかなっています。

編集:数値または文字列を許可する出力制限を削除しました。


1
0のインデックスを作成できますか?
ジョーキング

3
まだ誰も言っていませんが、PPCGへようこそ!ニースの最初の質問は、それほど難しくはありませんが、完全に自明ではありません。多くの異なるアプローチがあります
ジョーキング

3
7日後、これらすべての基準を満たす最短の回答を受け入れます。なぜ挑戦を終わらせる必要があるのですか?
エリックアウトゴルファー

2
今日、私たちは回答を受け入れない傾向があります。なぜなら、それは回答のさらなる投稿を思いとどまらせるからです。私は(も推奨されて)モデルを参照してくださいとして古い挑戦を取ると仮定し、物事ツー回避-書き込み-挑戦を
user202729

2
@Dennis OK、チャレンジから日付を削除します。多分、新しい答えが来なくなったら受け入れます。
Amphibological

回答:


13

ゼリー、3 バイト

ŻVƝ

整数のリストを生成する整数を受け入れる単項リンク

オンラインでお試しください!

どうやって?

Ż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

アウトゴルフデニス!
Okx

10

R、32バイト

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

オンラインでお試しください!

MickyTに負けていないので、その答えに賛成票を投じてください


文字列を許可するための編集が行われました... strtoiは不要です!
JayCe

2
@JayCeでは0、最初の出力から先頭を削除する必要があります。
ジュゼッペ

[-1]使用するのではなくで終わることによって先頭のゼロを削除できませんでしたか、strtoiそれはいくつかのエッジケースなどで失敗しますか?
JDL

strtoiからに変換"01"する1ために@JDL が使用されているため、paste0戻るc("01","12","23","34",...)ことができ、戻ることが許可されていません"01"
ジュゼッペ

1
@CriminallyVulgar残念ながら、入力に失敗します1
ジュゼッペ



7

Cubix、19バイト

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

オンラインでお試しください!

これは、次のようにキューブにラップします

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

実行する

まだ遊ぶ余裕がありましたが、現時点では

  • W 下に向かう上面にリダイレクト
  • I1> 入力と1でスタックを設定し、メインループにリダイレクトします
  • OSo;u スタックの一番上を出力し、スタックにスペースを追加し、出力し、削除して、uturn
  • -!@;Ou)TOSを入力から減算します。0の場合は結果を停止し、その他の場合は結果を出力し、TOSを出力し、TOSをUTURNしてインクリメントします。メインループに戻ります。


5

R30 29バイト

@Giuseppeのおかげで余分なバイト

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

オンラインでお試しください!

使用した以外は、ほとんどの数学的な解決策、nchar()というよりもfloor(log10())文字列バージョンよりも短くなったことに本当に驚きました。


29バイト!これについての素晴らしい仕事、私はそれを決して考えなかったでしょう!
ジュゼッペ

@Giuseppeは余分なバイトをありがとう。
MickyT



4

パイソン242の 41バイト

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

オンラインでお試しください!

文字列と整数の混合リストを返す再帰関数


元の説明「リストを返す匿名関数」を編集するつもりでしたか?
エソランジングフルーツ

@EsolangingFruit Oopsie、修正済み!ありがとう
ジョーキング

たぶん私は何かを逃しているかもしれませんが、これは2番目の要素として「12」を持っていないようです。
エルペドロ

2
@ElPedroでバイトを保存することで修正できますn and
Mr. Xcoder

1
修正によってバイトが節約されることはあまりありません:-)
ElPedro


4

、88バイト

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は、私が取り組んでいるグラフプログラミング言語です。入力としてグラフのみを受け取ることができるため、このプログラムは、ラベルが整数である単一のノードで構成されるグラフを想定しています。接続されたエッジのグラフを返し、取得できる配列に最も近いものを形成し、結果のグラフが出力に出力されます。

コードの縮小されていないバージョンは次のとおりです。

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

2つのルールを定義します。1つはexpand、(現在のグラフに整数値のラベルを持つノードがあります)と呼ばれるもので、増分を連結して別のノードを作成し、値を下げます。また、これらの2つのノード間にエッジを作成します。このルールには、xが0より大きいという条件もあります。

!Xが0となるまでので、この場合には、それが実行される、それはグラフに適用することができる限りは、このルールを実行しますcleanルールは、この0のノードとエッジを除去します。

ブロッサムはゴルフ用に作られたものではありませんが、それほど悪くはありません。私はそうは思いません。現在、人々がブロッサムコードをテストする簡単な方法はありません(現在作業中のインタープリターはまだ完成しておらず、少しバグがあります)が、これは競合するエントリではありません!



3

シェークスピア、703バイト

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]

ここで試してください

無償版

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バイト

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

オンラインでお試しください!

.collectの代わりに* .withを使用するというアイデアを思いつきました。何がit+++it解析されるのか分かりませんが、それが同じit++ + itit + ++it、両方が同じことをするのか。<を.. <に変換してデクリメントすることで<を削除する方法を考えようとしましたが、短くなるとは思いません。


PPCGへようこそ。素敵な最初の投稿!の解析に関してa+++bこのテストは、左から右に解析されることを示してい(a++)+bます。
ジョナサンフレッチ

3

C(gcc)44 43バイト

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

オンラインでお試しください!


@DLosc %m$書式指定子は、「1から始まるインデックスが付けられた目的の引数の引数リスト内の位置を示します」printf(3)マニュアルページ)。Cライブラリがサポートしている限り、非常に便利です。
-ErikF

ありがとう...しかし、なぜ%d%d(そして引数の順序を変える)がうまくいかないのか私はまだ混乱しています。(試してみましたが、なぜ出力が生成されないのかわかりません。)
DLosc

@DLosc書式文字列を変更する場合は、必ずその後のオフセットを変更して" %d%d"ください(たとえば+3*!f(i)、; が必要です。そうでない場合、+ 5オフセットは文字列の最後のNULを指します)。
ErikF

ああ、大丈夫です-私は最終的にそれを取得します:「#2、#1」が必要なのは、基本的な場合、短縮されたフォーマット文字列が単に「#1」になるため、最初のprintf引数がi+1でなく必要であるためですi。とても興味深い。
DLosc







2

Japt -m6 5バイト

ó2 ¬n

オンラインでお試しください!

いつものように、flagsを知っています。

開梱と仕組み

-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バイト。なぜóここで動作しないのかわからない2
シャギー

他の誰かがそれらを刺したい場合は、フラグを使用しない他の2つの5バイトソリューション(両方とも同じ方法を使用)があります。
シャギー

フラグのために5 + 2 = 7バイトだと思いますか?
u_ndefined


2

C#(Visual C#Interactive Compiler)103 71 64 56バイト


ゴルフ オンラインで試しください!

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

非ゴルフ

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

完全なコード

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

古いバージョン:

  • v1.2、64バイト

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

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

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

リリース

  • V1.3 - - 8 bytes-削除Consoleのおかげで再びへ raznagulの
  • V1.2 - - 7 bytes-削除Systemのおかげで raznagul
  • v1.1 --32 bytes
  • v1.0の - 103 bytes-初期ソリューション。

ノート

  • 無し

1
C#Interactive Compilerには、の静的インポートがありSystem.Consoleます。したがって、15バイトを削除することで節約できます。
raznagul

右!それらを使用しなければならない習慣
-auhmaan

あなたはまた、削除することができますConsole.TIO
raznagul


2

ABAP、101バイト

本当にゴルフの言語ではありませんが、私はそれをたくさん楽しんでいます

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は入力項、Xは1のカウンター、Yは2番目のパス以降のX-1、Zは連結されたストリングです。


2

Powershell、27 26バイト

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

-1バイト:AdmBorkBorkに感謝

テストスクリプト:

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

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

1
1.."$args"代わりにバイトを保存できます。
AdmBorkBork



2

Javascript、43 44、46、49、53バイト

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

以前のバージョン :

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のソリューション(私のものよりも優れています)のおかげで3バイト節約しました .keys()


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.