サムチェーンシーケンス


16

シーケンス:

  1. から始め1ます。
  2. 最初に、現在の1インデックスの値をシーケンス内の前の番号に追加します。
  3. 次に、この現在の値に適用する場合、次の数学演算を順番に適用します。
    • で割り切れ2ますか?=>追加
    • で割り切れ3ますか?=>減算
    • で割り切れ4ますか?=>(加算AND)乗算
    • どちらも割り切れない23でも4?->現在の合計結果を続行

出力:

このシーケンスの最初の100個の数値を出力します。

1, 1, 21, 25, 30, 216, 223, 223, 2169, 2179, 2190, 2202, 2215, 2215, 2245, 2261, 2295, 2295, 2333, 2353, 2395, 2417, 56649, 56649, 56699, 56725, 1533033, 1533061, 1533090, 45993600, 45993631, 45993631, 1517792001, 1517792035, 1517792070, 1517792106, 1517792143, 1517792143, 1517792221, 1517792261, 1517792343, 1517792343, 1517792429, 1517792473, 1517792563, 1517792609, 71336257041, 71336257041, 71336257139, 71336257189, 3638149121841, 3638149121893, 3638149121946, 196460052588000, 196460052588055, 196460052588055, 11198222997525633, 11198222997525691, 11198222997525750, 11198222997525810, 11198222997525871, 11198222997525871, 11198222997525997, 11198222997526061, 11198222997526191, 11198222997526191, 11198222997526325, 11198222997526393, 11198222997526531, 11198222997526601, 795073832824398753, 795073832824398753, 795073832824398899, 795073832824398973, 59630537461829934225, 59630537461829934301, 59630537461829934378, 4651181922022734887568, 4651181922022734887647, 4651181922022734887647, 376745735683841525912529, 376745735683841525912611, 376745735683841525912694, 376745735683841525912778, 376745735683841525912863, 376745735683841525912863, 376745735683841525913037, 376745735683841525913125, 376745735683841525913303, 376745735683841525913303, 376745735683841525913485, 376745735683841525913577, 376745735683841525913763, 376745735683841525913857, 35790844889964944961834465, 35790844889964944961834465, 35790844889964944961834659, 35790844889964944961834757, 3543293644106529551221660545, 3543293644106529551221660645

シーケンスの最初の10個の数字と説明を次に示します。

// Starting number of the sequence:
1

// 1 (previous number in the sequence)
// + 2 (current index in 1-indexed sequence)
// = 3 -> 3 - 2 (3 is divisible by 3, so we subtract the current index 2)
// = 1
1

// 1 (previous number in the sequence)
// + 3 (current index in 1-indexed sequence)
// = 4 -> 4 + 3 (4 is divisible by 2, so we first add the current index 3)
// = 7 -> 7 * 3 (and 4 is also divisible by 4, so we then also multiply the current index 3)
// = 21
21

// 21 (previous number in the sequence)
// + 4 (current index in 1-indexed sequence)
// = 25 (25 is not divisible by 2, 3 nor 4)
25

// 25 (previous number in the sequence)
// + 5 (current index in 1-indexed sequence)
// = 30 -> 30 + 5 (30 is divisible by 2, so we first add the current index 5)
// = 35 -> 35 - 5 (and 30 is also divisible by 3, so we then also subtract the current index 5)
// = 30
30

// 30 (previous number in the sequence)
// + 6 (current index in 1-indexed sequence)
// = 36 -> 36 + 6 (36 is divisible by 2, so we first add the current index 6)
// = 42 -> 42 - 6 (and 36 is also divisible by 3, so we then also subtract the current index 6)
// = 36 -> 36 * 6 (and 36 is also divisible by 4, so we then also multiply the current index 6)
// = 216
216

// 216 (previous number in the sequence)
// + 7 (current index in 1-indexed sequence)
// = 223 (223 is not divisible by 2, 3 nor 4)
223

// 223 (previous number in the sequence)
// + 8 (current index in 1-indexed sequence)
// = 231 -> 231 - 8 (231 is divisible by 3, so we subtract the current index 8)
// = 223
223

// 223 (previous number in the sequence)
// + 9 (current index in 1-indexed sequence)
// = 232 -> 232 + 9 (232 is divisible by 2, so we first add the current index 9)
// = 241 -> 241 * 9 (and 232 is also divisible by 4, so we then also multiply the current index 9)
// = 2169
2169

// 2169 (previous number in the sequence)
// + 10 (current index in 1-indexed sequence)
// 2179 (2179 is not divisible by 2, 3 nor 4)
2179

チャレンジルール:

  • ご使用の言語が2 31 -1を超えるものをサポートしていない場合は、その最大値までシーケンスを続行できます(したがって、最初の46の数字は、-および-を含むまで1,517,792,609)。
  • 出力形式は柔軟です。配列またはリスト、スペースで区切られた文字列、カンマなどを返すことができます。呼び出し。

一般的なルール:

  • これはであるため、バイト単位の最短回答が優先されます。
    コードゴルフ言語では、非コードゴルフ言語で回答を投稿しないようにしてください。「任意の」プログラミング言語の可能な限り短い答えを考えてみてください。
  • 回答には標準の規則が適用されるため、STDIN / STDOUT、適切なパラメーターを持つ関数/メソッド、完全なプログラムを使用できます。あなたの電話。
  • デフォルトの抜け穴は禁止されています。
  • 可能であれば、コードのテストへのリンクを追加してください。
  • また、必要に応じて説明を追加してください。

n番目の値、最初のn個の値、または最大整数サイズまで出力しますか?
ガブリエルベナミー16年

@GabrielBenamyシーケンスの最初の100。
ケビンCruijssen 16年

1
そのブロックには99個の数字しかないと確信しています。
カデ

2
私の答えは、最後の13個の数字についてのあなたの出力とは一致しません。
ガブリエルベナミー16年

1
@Shebang Fixed ..ずさんなスタートでごめんなさい..それは5日間サンドボックスにありましたが、私も他の人も気づいていないと思います。:S今は正しいはずです。
ケビンCruijssen 16年

回答:


1

05AB1E24 23バイト

-1バイト、Kevin Crujissenに感謝

¼¾тF=¼¾+©…+-*v®NÌÖi¾y.V

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

説明:

¼¾                        # set the counter to 1, then push 1
  тF                      # repeat the following 100 times
    =                     # print the current number in the sequence
     ¼¾                   # increment the counter
       +                  # add it to the current number
        ©                 # save the result in the register
         …+-*v            # for each of '+', '-', and '*'...
              ®   i       # if the register...
                 Ö        # is divisible by...
               NÌ         # the loop index + 2...
                   ¾y.V   # then apply the current operation

1
カウンタ変数でもっと短いものを見つけようとしたのでUX削除できますが、私はできません。0代わりに24バイトで始まるため、24バイトになります1。しばらく前にそれを増やしましたが、それから..の101代わりに時間をループする必要があります100
ケビンクルーッセン

@KevinCruijssenええ、それUXは目障りです。私はしばらくそれを取り除こうとしましたが、24と25のバリエーションがたくさんありました:1тF=NÌ©+DÑ3L>Ãv®…-*+yè.V1тL>v=y+©3F®NÌÖiy…+-*Nè.V...カウンター変数の使用を検討しませんでした、これは面白いです。
グリムミー

1
@KevinCruijssenあなたの24は23に影響を与えました:のтF代わりに使用してくださいƵ0µ。編集しました、ありがとう!(PS:本当にシングルバイトがあるはず¼¾です...)
Grimmy

あ、いいね。何とか何かを見つけられると思いました(笑)。;)そして、はい、単一のバターは¼¾素晴らしいでしょう、しかし、正直に言うと、私はほとんどそのようにそれを使用しません。私が今最も好むシングルバイトのビルトインは、©®ポップしない2番目の変数です。""前に別の課題で述べたように、おそらく空の文字列から始めます。
ケビンクルーイッセン

8

R、85 82 79 76 72 70バイト

for(i in 2:56)T[i]=((z=i+T[i-1])+i*(!z%%2)-i*(!z%%3))*`if`(z%%4,1,i);T

なし:

s=1 ## formerly s=1:56, formerly s=1:100
for(i in 2:56){
    z=i+s[i-1]
    s[i]=(z+i*(z%%2<1)-i*(z%%3<1))*(1+(i-1)*(z%%4<1))
}
s

@rturnbullに、係数をチェックする(!z%%3)代わりに使用できること(z%%3<1)、およびz最初に使用されたときに定義が発生することを指摘してくれてありがとう。

ベクトル拡張を悪用して3〜4文字を削った。答えはもともと始まりましたs=1:56...が、必要はありませんs。必要に応じて長さが拡張されます。

最後の条件を"if"関数の呼び出しで置き換えることにより、さらに3バイトを節約しました(そうです、Rでは適切な関数です!)

保存された4より置き換えることにより、バイトsT等しい組み込みであり、TRUEこれも同じです1。@rturnbullと同時に実現しました(正直!)

私たちは^ 52 2を越えると、これは、いくつかの数値の問題に苦しむんが、私はRのみを使用することができます---それについてできることは何もありませんdoubleよりも大きな数字のために種類が2^31-1、彼らは正確に2 ^ 52までの整数を格納します。したがって、最初の56語(最後の項は「正しい」)のみを出力できます。これにより、長さ100の場合に1バイトを節約できます。

56長バージョンの出力は次のとおりです。

    > for(i in 2:56){z=i+T[i-1];T[i]=(z+i*(!z%%2)-i*(!z%%3))*`if`(z%%4,1,i)};T
 [1]               1               1              21              25              30             216
 [7]             223             223            2169            2179            2190            2202
[13]            2215            2215            2245            2261            2295            2295
[19]            2333            2353            2395            2417           56649           56649
[25]           56699           56725         1533033         1533061         1533090        45993600
[31]        45993631        45993631      1517792001      1517792035      1517792070      1517792106
[37]      1517792143      1517792143      1517792221      1517792261      1517792343      1517792343
[43]      1517792429      1517792473      1517792563      1517792609     71336257041     71336257041
[49]     71336257139     71336257189   3638149121841   3638149121893   3638149121946 196460052588000
[55] 196460052588055 196460052588055

1
チャレンジの説明を考えると、最大56までのループは公平なゲームだと思います。
ビリーウォブ

@Billywobは確かに正しいです。説明では、「言語が2 ^ 31-1より大きいものをサポートしていない場合は、その最大値までシーケンスを続行できます(したがって、最初の46桁、-まで-を含む1,517,792,609)。」もちろん、32ビット以外の数値にも適用されます。Rがそれ以上大きなものを処理できない場合、最初の56個の数値は完全に問題ありません。はい、56を超えることはないことがわかっている場合は、100to 56を変更してバイトを保存できます。
ケビンCruijssen 16年

1
に変更z%%2<1(など)することで!z%%2、暗黙的な型変換を悪用して3バイトを節約できます。
rturnbull

@rturnbullに感謝します。何らかの理由で、私!は負けていないと思っていましたが%%、明らかにそうです!
JDL

2
Tをの代わりに乱用して使用することもsでき、を削除してs=1;、さらに4バイト節約できます。zの定義をs[i](まあ、T[i]今)の定義に折りたたむT[i]=((z=i+T[i-1])+ ...ことができます。これは、中括弧を失い、さらにバイトを節約できることを意味します。編集:ああ、私はT私のコメントを書いている間にあなたがトリックをしたことがわかります!偉大な心は同様に考えると彼らは言う。
rturnbull

5

Python 3、82 78 76 74 72バイト

i=s=1
exec('print(s);i+=1;s+=i;s=(s+i-i*(s%2+(s%3<1)))*i**(s%4<1);'*100)

出力:

1
1
21
25
30
216
223
223
2169
2179
2190
2202
2215
2215
2245
2261
2295
2295
2333
2353
2395
2417
56649
56649
56699
56725
1533033
1533061
1533090
45993600
45993631
45993631
1517792001
1517792035
1517792070
1517792106
1517792143
1517792143
1517792221
1517792261
1517792343
1517792343
1517792429
1517792473
1517792563
1517792609
71336257041
71336257041
71336257139
71336257189
3638149121841
3638149121893
3638149121946
196460052588000
196460052588055
196460052588055
11198222997525633
11198222997525691
11198222997525750
11198222997525810
11198222997525871
11198222997525871
11198222997525997
11198222997526061
11198222997526191
11198222997526191
11198222997526325
11198222997526393
11198222997526531
11198222997526601
795073832824398753
795073832824398753
795073832824398899
795073832824398973
59630537461829934225
59630537461829934301
59630537461829934378
4651181922022734887568
4651181922022734887647
4651181922022734887647
376745735683841525912529
376745735683841525912611
376745735683841525912694
376745735683841525912778
376745735683841525912863
376745735683841525912863
376745735683841525913037
376745735683841525913125
376745735683841525913303
376745735683841525913303
376745735683841525913485
376745735683841525913577
376745735683841525913763
376745735683841525913857
35790844889964944961834465
35790844889964944961834465
35790844889964944961834659
35790844889964944961834757
3543293644106529551221660545
3543293644106529551221660645

提案を歓迎します!



4

05AB1E34 31 30バイト

XTnFD,NÌ©+D3L>%_`X®‚sèrŠs-®*+*

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

説明

X                               # initialize stack with 1
 TnF                            # for N in [0 ... 99]
    D,                          # print a copy of top of stack
      NÌ©                       # increase index N by 2 and store in register
         +                      # add this to current value
          D                     # make a copy of the current value
           3L>                  # push the list [2,3,4]
              %                 # take current value mod elements in list
               _                # invert this
                `               # push the elements from the list to stack
                 X®‚sè          # index into list [1,N+2] with the result of mod 4
                      rŠs-      # subtract result of mod 3 from result of mod 2
                          ®*    # multiply by N+2
                            +   # add this to current value
                             *  # multiply current value with the result from index operation

3

Python 2、76バイト

かなり標準的な実装です。whileループではなくexecステートメントを使用すると、2バイトほど節約できます。再帰的な方法のほうが短いかもしれません。xnorがすぐに現れると思います;)

n=1
f=1
exec'print f;n+=1;d=f+n;f=(d+n*(d%2<1)-n*(d%3<1))*[1,n][d%4<1];'*100

TheNumberOneが計算した更新を使用すると、69バイトになります(ただし、コピーします)

n=f=1;exec'print f;n+=1;d=f+n;f=(d+n-n*(d%2+(d%3<1))*n**(d%4<1);'*100

出力:

1
1
21
25
30
216
223
223
2169
2179
2190
2202
2215
2215
2245
2261
2295
2295
2333
2353
2395
2417
56649
56649
56699
56725
1533033
1533061
1533090
45993600
45993631
45993631
1517792001
1517792035
1517792070
1517792106
1517792143
1517792143
1517792221
1517792261
1517792343
1517792343
1517792429
1517792473
1517792563
1517792609
71336257041
71336257041
71336257139
71336257189
3638149121841
3638149121893
3638149121946
196460052588000
196460052588055
196460052588055
11198222997525633
11198222997525691
11198222997525750
11198222997525810
11198222997525871
11198222997525871
11198222997525997
11198222997526061
11198222997526191
11198222997526191
11198222997526325
11198222997526393
11198222997526531
11198222997526601
795073832824398753
795073832824398753
795073832824398899
795073832824398973
59630537461829934225
59630537461829934301
59630537461829934378
4651181922022734887568
4651181922022734887647
4651181922022734887647
376745735683841525912529
376745735683841525912611
376745735683841525912694
376745735683841525912778
376745735683841525912863
376745735683841525912863
376745735683841525913037
376745735683841525913125
376745735683841525913303
376745735683841525913303
376745735683841525913485
376745735683841525913577
376745735683841525913763
376745735683841525913857
35790844889964944961834465
35790844889964944961834465
35790844889964944961834659
35790844889964944961834757
3543293644106529551221660545
3543293644106529551221660645

3

JavaScript、75 63バイト

for(n=p=0;n++<57;alert(p=p%4?q:q*n))q=(p+=n)%2?p:p+n,q-=p%3?0:n

別のバージョン:

for(n=p=0;n++<57;)alert(p=((p+=n)+(!(p%2)-!(p%3))*n)*(p%4?1:n))

どちらも、出力がJavaScriptの安全な数値サイズ(2 53-1)を超えるため、インデックス57(0インデックス)で停止します。ES6を使用しても、ループは再帰関数よりもはるかに短いことがわかります。

f=(n=0,p=0)=>n++>56?[]:(q=(p+=n)%2?p:p+n,q-=p%3?0:n,[q*=p%4?1:n,...f(n,q)])

これは、最初の57要素の配列を返します。


Number.MAX_SAFE_INTEGERを超えると、部門が不正確になるため、50〜60を超えないようにする必要があります。またmap、完全を期すためにバージョンを試しましたが、75バイトで記録されました。
ニール

@ニールああ、ありがとう。正確には、57エントリ後にNumber.MAX_SAFE_INTEGERを超えています。
ETHproductions

3

脳フラック 476 466 462 456 446のバイト

Wheat Wizardのおかげで6バイト節約

(((((((())<>()(())()){}){}){}())){}{}){({}[()]<(((({})<>({}())<>))<({}(()())(<()>)){({}[()]<(({}()[({})])){{}(<({}({}))>)}{}>)}({}{}<{}(())>){((<{}{}>))}{}{(<{}({}<>({})<>)>)}{}>)(({})<({}(()()())(<()>)){({}[()]<(({}()[({})])){{}(<({}({}))>)}{}>)}({}{}<{}(())>){((<{}{}>))}{}{(<{}({}<>[({})]<>)>)}{}>)({}(()()()())(<()>)){({}[()]<(({}()[({})])){{}(<({}({}))>)}{}>)}({}{}<{}(())>){((<{}{}>))}{}{(<{}(<>({}))({<({}[()])><>({})<>}{}<><{}>)>)}{}>)}{}

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

これは本当に遅いです。TIOは100個の数値全体を処理できません(制限は22または23のようです)。したがって、この例では最初の20個のみが生成されますが、コードは100個でも機能します。

簡単な説明:

      (())<>                           # push a 1 (the index) and switch stacks 
            (())                       # then push a 1 (the starting number)
((((((          ()()){}){}){}())){}{}) # and a 99 (a counter so that we only print the 
                                       # first 100 numbers)

# repeat until the counter is 0
{
  # pop the counter and push it minus 1 after:
  ({}[()]<
    # hold onto the current number plus the index (leave a copy on the stack to be printed)
    # and increment the index
    (((({})<>({}())<>))<
      # push logical not of (current mod 2)
      ({}(()())(<()>)){({}[()]<(({}()[({})])){{}(<({}({}))>)}{}>)}({}{}<{}(())>){((<{}{}>))}{}
      # if !(current mod 2) is 1, add the index
      {(<{}({}<>({})<>)>)}{}
    # push the current number back on
    >)
    # hold onto the current number
    (({})<
     # push logical not of (current mod 3)
     ({}(()()())(<()>)){({}[()]<(({}()[({})])){{}(<({}({}))>)}{}>)}({}{}<{}(())>){((<{}{}>))}{}
     # if !(current mod 3) is 1, then subtract the index
     {(<{}({}<>[({})]<>)>)}{}
    # push the current number back on
    >)
    # push logical not of (current mod 4)
    ({}(()()()())(<()>)){({}[()]<(({}()[({})])){{}(<({}({}))>)}{}>)}({}{}<{}(())>){((<{}{}>))}{}
    # if !(current mod 4) is 1, multiply by the index
    {(<{}(<>({}))({<({}[()])><>({})<>}{}<><{}>)>)}{}
  # put the counter back on
  >)
# loop until done
}
# pop the counter
{}

({}<>[({})]<>)(<()>)に置き換えることができます(<({}<>[({})]<>)>)
ウィートウィザード

@WheatWizardが更新されました。ありがとう!
ライリー

1

Java 7、316バイト

import java.math.*;String c(){String r="";BigInteger t=BigInteger.ONE,x,p;for(int i=2;i<102;){r+=t+" ";p=(t=t.add(x=new BigInteger(i+++"")));t=x(p,2)?t.add(x):t;t=x(p,3)?t.subtract(x):t;t=x(p,4)?t.multiply(x):t;}return r;}boolean x(BigInteger p,int i){return p.mod(new BigInteger(i+"")).compareTo(BigInteger.ONE)<0;}

未ゴルフ&テストコード:

ここで試してみてください。

import java.math.*;
class M{
  static String c(){
    String r = "";
    BigInteger t = BigInteger.ONE,
               x,
               p;
    for(int i = 2; i < 102;){
      r += t+" ";
      p = (t = t.add(x = new BigInteger(i++ + "")));
      t = x(p, 2)
           ? t.add(x)
           : t;
      t = x(p, 3)
           ? t.subtract(x)
           : t;
      t = x(p, 4)
           ? t.multiply(x)
           : t;
    }
    return r;
  }

  public static void main(String[] a){
    System.out.println(c());
  }

  static boolean x(BigInteger p, int i){
    return p.mod(new BigInteger(i+"")).compareTo(BigInteger.ONE) < 0;
  }
}

出力:

1 1 21 25 30 216 223 223 2169 2179 2190 2202 2215 2215 2245 2261 2295 2295 2333 2353 2395 2417 56649 56649 56699 56725 1533033 1533061 1533090 45993600 45993631 45993631 1517792001 1517792035 1517792070 1517792106 1517792143 1517792143 1517792221 1517792261 1517792343 1517792343 1517792429 1517792473 1517792563 1517792609 71336257041 3424140340272 3424140340321 3424140340371 3424140340473 3424140340525 3424140340631 3424140340631 3424140340741 3424140340797 3424140340911 3424140340969 202024280124133 202024280124193 202024280124315 202024280124377 12727529647843689 814561897462000192 52946523335030016705 52946523335030016771 52946523335030016905 52946523335030016973 52946523335030017111 52946523335030017111 52946523335030017253 52946523335030017253 52946523335030017399 52946523335030017473 3970989250127251321725 301795183009671100456876 301795183009671100456953 301795183009671100457031 301795183009671100457110 301795183009671100457270 301795183009671100457351 301795183009671100457433 25049000189802701337980717 25049000189802701337980801 25049000189802701337980971 25049000189802701337981057 2179263016512835016404367097 191775145453129481443584312280 17067987945328523848479003800841 1536118915079567146363110342083790 1536118915079567146363110342083790 1536118915079567146363110342083974 1536118915079567146363110342083974 144395178017479311758132372155911228 13717541911660534617022575354811575685 13717541911660534617022575354811575781 13717541911660534617022575354811575975 13717541911660534617022575354811576073 1358036649254392927085234960126346050829 

1

C#、120バイト

健全な人がJavaでゴルフをしないように、健全な人もC#でゴルフをするべきではありません!しかし、それを台無しに、私は何ができるかを見たかった。1Mキャストf私は書かなくても、この答えのための十分な精度を持つ小数しますdecimal。また、インプレースインクリメントにより、Pythonの回答のバイト数が節約されます。最終的には50バイト長くなります。

void k(){int n=1;var f=1M;while(n<101){Console.WriteLine(f);var d=++n+f;f=(d+n*((d%2<1?1:0)-(d%3<1?1:0)))*(d%4<1?n:1);}}

より読みやすい(および実行可能な)バージョンは次のとおりです。

using System;
class P
{
    static void Main(string[]a) 
    {
        int n = 1;
        var f = 1M;
        while (n < 101) 
        {
            Console.WriteLine(f);
            var d = ++n + f;
            f = (d + n * ((d % 2 < 1 ? 1 : 0) - (d % 3 < 1 ? 1 : 0))) * (d % 4 < 1 ? n : 1);
        }
        Console.Read();
    }
}

あなたは、変更することにより、ゴルフ1つのバイトをすることができますwhileするfor:そして、このようにint型を挿入するfor(int n=1;n<101;)
ケビンCruijssen

次のようにゴルフをすることもできますvoid k(){for(decimal f=1,d,n=1;n<101;)Console.WriteLine(f=((d=++n+f)+n*((d%2<1?1:0)-(d%3<1?1:0)))*(d%4<1?n:1));}112バイト
ケビンクルーイッセン

1

バッチ、110バイト

@set n=0
@for /l %%i in (1,1,46)do @set/an=((n+=%%i)+(!(n%%2)-!(n%%3))*%%i)*(~-%%i*!(n%%4)+1)&call echo %%n%%

@ETHproductionsの式を使用しますが、Batchにはが含まれていないため、少し調整しました?:。バッチは32ビットの符号付き整数を使用するため、ループは46で停止します。


1

Perl、75バイト

use bigint;$a+=$_,say$a=($a+($a%2?0:$_)-($a%3?0:$_))*($a%4?1:$_)for(1..100)

コードは、各値を新しい行に出力し、100個すべての値を計算します。


-Mbigint、周囲に括弧1..100、および!($a%2)*$_代わりに($a%2?0:$_)(のための同じではa%3..)数バイトを保存するべきではありません。)
ダダ

これらの提案と他のいくつかのマッサージを使用して、60バイトまで取得します。
Xcali

1

Haskell、70 64バイト

a%b=0^mod a b
n#i|s<-n+i=(s+s%2*i-s%3*i)*i^s%4
scanl1(#)[1..100]

scanl1(#)[1..100]最初の100個の要素を含むリストを返します。2 ^ 31の範囲(-> [1..46])に留まることができれば、1バイト少なくなります。

scanl1に似てfoldl1いますが、中間結果をリストに収集します。分割可能性テストは、分割可能かどうか%を返すヘルパー関数を介して行われます。0^0 = 10^x = 0


1

J、46バイト

(,{:((]^0=4|+)*(]*0=2|+)++-]*0=3|+)1+#)^:99]1x

チャレンジで説明されている方法を適用します。

使用法

追加のコマンド(,.~#\)は、各値にインデックスを追加するために使用されます。

   (,.~#\) (,{:((]^0=4|+)*(]*0=2|+)++-]*0=3|+)1+#)^:99]1x
  1                            1
  2                            1
  3                           21
  4                           25
  5                           30
  6                          216
  7                          223
  8                          223
  9                         2169
 10                         2179
 11                         2190
 12                         2202
 13                         2215
 14                         2215
 15                         2245
 16                         2261
 17                         2295
 18                         2295
 19                         2333
 20                         2353
 21                         2395
 22                         2417
 23                        56649
 24                        56649
 25                        56699
 26                        56725
 27                      1533033
 28                      1533061
 29                      1533090
 30                     45993600
 31                     45993631
 32                     45993631
 33                   1517792001
 34                   1517792035
 35                   1517792070
 36                   1517792106
 37                   1517792143
 38                   1517792143
 39                   1517792221
 40                   1517792261
 41                   1517792343
 42                   1517792343
 43                   1517792429
 44                   1517792473
 45                   1517792563
 46                   1517792609
 47                  71336257041
 48                  71336257041
 49                  71336257139
 50                  71336257189
 51                3638149121841
 52                3638149121893
 53                3638149121946
 54              196460052588000
 55              196460052588055
 56              196460052588055
 57            11198222997525633
 58            11198222997525691
 59            11198222997525750
 60            11198222997525810
 61            11198222997525871
 62            11198222997525871
 63            11198222997525997
 64            11198222997526061
 65            11198222997526191
 66            11198222997526191
 67            11198222997526325
 68            11198222997526393
 69            11198222997526531
 70            11198222997526601
 71           795073832824398753
 72           795073832824398753
 73           795073832824398899
 74           795073832824398973
 75         59630537461829934225
 76         59630537461829934301
 77         59630537461829934378
 78       4651181922022734887568
 79       4651181922022734887647
 80       4651181922022734887647
 81     376745735683841525912529
 82     376745735683841525912611
 83     376745735683841525912694
 84     376745735683841525912778
 85     376745735683841525912863
 86     376745735683841525912863
 87     376745735683841525913037
 88     376745735683841525913125
 89     376745735683841525913303
 90     376745735683841525913303
 91     376745735683841525913485
 92     376745735683841525913577
 93     376745735683841525913763
 94     376745735683841525913857
 95   35790844889964944961834465
 96   35790844889964944961834465
 97   35790844889964944961834659
 98   35790844889964944961834757
 99 3543293644106529551221660545
100 3543293644106529551221660645

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