異なるタスク、同じキャラクター


36

この課題では、同じ文字セットを使用して4つの異なるタスクを解決する必要があります。文字を並べ替えることはできますが、文字を追加または削除することはできません。

勝者は、最小数の文字を使用してすべてのタスクを解決する提出物になります。すべてのタスクは同じ言語で解決する必要があります。

一意の文字の最小数ではなく、最小文字数であることに注意してください。

タスク1:

N3番目ごとの合成数の最初の数を出力します。以下のコードブロックは、最初の行に最初の19個の合成番号を示し、下の行に3番目ごとの合成番号を示します。

4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 22, 24, 25, 26, 27, 28, 30
4,       9,         14,         18,         22,         26,         30

その場合N=5、出力はになります4, 9, 14, 18, 22。をサポートする必要があり1<=N<=50ます。

合成数は、素数でも1でもない正数です。

結果N=50は次のとおりです。

4, 9, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 54, 57, 62, 65, 69, 74, 77, 81, 85, 88, 92, 95, 99, 104, 108, 112, 116, 119, 122, 125, 129, 133, 136, 141, 144, 147, 152, 155, 159, 162, 166, 170, 174, 177, 182, 185, 188, 192

タスク2:

N-by-N乗算表を出力します。サポートする必要があります1<=N<=20

例:

N = 4
1   2   3   4
2   4   6   8
3   6   9  12
4   8  12  16

出力形式はオプションです[[1,2,3,4],[2,4,6,8],[3,6,9,12],[4,8,12,16]]。以下は許容可能な出力です。

タスク3:

数値がフィボナッチ数かどうかを判別します。N言語のデフォルトの整数制限まで正の値をサポートする必要があります。32ビット整数と64ビット整数の両方がある場合、最短のコードを必要とするものを使用することを選択できます。たとえば、選択肢がある場合のint代わりに使用しlong intます。デフォルトでない限り、32ビットより小さい整数を選択することはできません(32ビットがデフォルトの場合、8ビット整数は使用できません)。

true/falsefalse/true1/01/-1a/b限り、それは一貫性のあるように、すべての許容出力されます。

タスク4:

テイクNの入力と出力の結果として1^1+2^2+3^3+...N^N。をサポートする必要があり1<=N<=10ます。

10の異なる結果は次のとおりです。

1, 5, 32, 288, 3413, 50069, 873612, 17650828, 405071317, 10405071317

これはなので、各言語での最短の提出が勝ちです!

このスタックスニペットは、ソリューションの確認に役立ちます。4つのソリューションすべてを含めるために必要な最小文字セットを測定し、残りの文字を表示します。


1
バイナリ:2文字
コアダンプ

はい@coredump、2つのユニークな文字...
Stewieグリフィン

回答:


12

Python、88 87バイト

lambda n:[a for a in range(11*n)if any(a%b<1for b in range(2,a))][:3*n:3]#1,,,=====bd++
lambda n:[[a*b for b in range(1,n+1)]for a in range(1,n+1)]#,,::ybaaa(*i%n< =====2)d33f
f=lambda n,a=1,b=1:a<n and f(n,b,a+b)or n==a#2eerrrfo::((**iii11[[aannn+     ]]y))%33gg
f=lambda n,a=1:a<=n and a**a+f(n,a+1)#::ooeeiii]]      y))bbbgg,,rrrra((11[[nnnnf==2%33

キャラクターやゴルフ自体を共有することにあまり努力しなかったので、これはほぼ確実に打ち負かされるでしょう。


1
ウィルrange(11*n)常に十分な複合材料が含まれていますか?
-FlipTack

1
@FlipTackはい、5*n十分です。
マーティンエンダー

12

ゼリー19 18 17キャラクター

タスク1

Ḟþe*S
×5µḊḟÆRm3ḣ³

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

タスク2

5µḊḟÆRm3ḣ³Ḟe*S
×þ

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

タスク3

5µḊḟmḣþ*S
×3RÆḞ³e

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

タスク4

×5ḊḟÆm3ḣ³þe
Rµ*ḞS

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

使い方

Jellyプログラムのすべての行は、個別のリンク(関数)を定義します。最後のリンクメインリンクであり、プログラムの実行時に自動的に呼び出されます。そのメインリンクが何らかの方法で他のリンクを参照しない限り、効果はありません。呼び出されていないリンクであっても、パーサーエラーが含まれていないことに注意してください。

タスク1

×5µḊḟÆRm3ḣ³  Main link. Argument: n

×5           Yield 5n.
  µ          Begin a new chain, with argument 5n.
   Ḋ         Dequeue; yield [2, ..., 5n].
     ÆR      Prime range; yield all primes in [1, ..., 5n].
    ḟ        Filter; remove the elements to the right from the ones to the left.
       m3    Pick every third element.
         ḣ³  Keep the first n results.

タスク2

これ×は些細なことです:乗算アトムであり、クイックþ(テーブル)は×左と右の引数の要素の各組み合わせに適用されます。引数が整数(ここにある)の場合、最初に範囲にキャストします。

タスク3

×3RÆḞ³e  Main link. Argument: n

×3       Yield 3n.
  R      Range; yield [1, ..., 3n].
   ÆḞ    Fibonacci; yield [F(1), ... F(3n)].
     ³e  Test if n exists in the result.

タスク4

Rµ*ḞS  Main link. Argument: n

R      Range; yield [1, ..., n].
 µ     Begin a new chain with argument [1, ..., n].
   Ḟ   Floor; yield [1, ..., n].
  *    Yield [1**1, ..., n**n].
    S  Take the sum.

嬉しいÆḞことに、すでに有用であることが証明されています!
リン

9

Mathematica、60文字

タスク1:コンポジット

#/AFF^abcinoruy{};Select[Range[2,9#],!PrimeQ@#&][[;;3#;;3]]&

タスク2:乗算表

!29;F@FPQRS[];a^b;c[c[e]];eeegiilmnnotu;Array[3##&,{#,#}]/3&

タスク3:フィボナッチ

##&;239;A/PS[]^e[];lmrtuy;{,};!FreeQ[Fibonacci@Range[3#],#]&

タスク4:力の合計

!###&;23/39;A@F;F[P[Q[]]];Raabccegiilnnorrty;Sum[e^e,{e,#}]&

各サブミッションは無視される式のセットであり、指定されたタスクを実装する名前のない関数がそれに続きます。

私が書いた簡単なCJamスクリプトにコメントを付加することで、「最適」コンバイン生のソリューションを。その後、各コメントを手動で削除することにより、その上に3バイトを保存することになりました(それぞれの場合に有効な構文を取得するために再配置が必要でした)このスクリプトにより、ソリューションの単純なバリエーションを試して、全体的なスコアが低下するかどうかを簡単に確認できました。自分でスクリプトを自由に使用してください。


コメントはありますが、コード自体に関するものではありません:P。(いい答え、ところで)。CJamスクリプトは単純な欠陥を見落としています。スクリプトとしてaband を入力するとba(**)abandの(**)ba代わりにabandが表示されbaます。
ハイパーニュートリノ

@AlexL。はい、(**)他のプログラムで使用された場合、一部のキャラクターをカバーするために使用できるという事実も考慮していません。
マーティンエンダー

9

MATL29 28 26文字

タスク1(3番目の複合番号ごと)

6*:tZp~)G:3*q)%G"$]vwm^sl+

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

タスク2(乗算表)

:l$*%6*tZp~)G:3q)G"]vwm^s+

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

タスク3(フィボナッチディテクター)

l6Zp~G:"3q$t+]vGwm%):*)^s*

このディスプレイ1/ 0フィボナッチ/非フィボナッチについてそれぞれ。

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

タスク4(パワーの合計)

:t^s%6*Zp~)G:3*q)G"$]vwml+

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

チェック

このプログラムは、4つの文字列を入力して並べ替えて表示し、同じ文字を使用していることを視覚的に確認します。

説明

%はコメント記号です。その右側のすべては無視されます。

タスク1(3番目の複合番号ごと)

6*    % Input N. Multiply by 6
:     % Range [1 2 ... 6*N]. This is enough because every even number is composite,
      % so this contains at least 3*N composite numbers
t     % Duplicate
Zp    % Isprime
~     % Negate
)     % Use as index to select composite numbers, including 1, from [1 2 ... 6*N]
G:    % Push [1 2 ... N]
3*q   % Multiply by 3 and subtract 1: gives [2 5 ... 3*N-1]
)     % Pick those composite numbers. Implicitly display

タスク2(乗算表)

:     % Input N. Range [1 2 ... N]
l     % Push 1
$     % Specify that next function will take 1 input
*     % Product of array. With 1 input it produces all pair-wise products
      % Implicitly display

タスク3(フィボナッチディテクター)

l     % Push 1
6     % Push 6
Zp    % Isprime. Gives false
~     % Negate. Gives true, or 1
G:    % Push [1 2 ... N], where N is the input
"     % For each
  3q  %   3, subtract 1
  $   %   Specify that next function will take 2 inputs
  t   %   Duplicate the top two elements of the stack
  +   %   Add
]     % End
v     % Vertically concatenate the entire stack. This produces a column vector
      % with a sufficient amount of Fibonacci numbers
G     % Push input N
w     % Swap
m     % Ismember. Gives true if input is in the vector of Fibonacci numbers
      % Implicitly display

タスク4(パワーの合計)

:     % Implicitly input N. Push [1 2 ... N]
t     % Duplicate
^     % Power, element-wise
s     % Sum of array. Implicitly display

私が最初に挑戦を見たとき、私はHey MATL would be perfect for this!あなたが私に打ち負かしたと思いました。+1
DJMcMayhem

@DJMcMayhem申し訳ありませんが、私はたくさん答える傾向があります。次回私にpingを送信し、作業中の場合は控えます:-)とにかく、先に進みませんか?たぶんあなたはこれをアウトゴルフすることができます
ルイスメンドー

3
@DJMcMayhem、あなたがアウトゴルフ・ルイスをどうにかしていないとしても、答えも投稿してください。たとえ最初のゴルフをアウトゴルフできなかったとしても、より多くの人々が既に使用されている言語で回答を投稿してほしい。
スティーヴィーグリフィン

@stewiegriffin母、わかりました。まだ有効な答えはありませんが、もしそれが得られたら(そしてそれが十分に異なっているなら)投稿します。
DJMcMayhem

7

Perl 6、61バイト

{(4..*).grep(!*.is-prime)[0,3...^*>=$_*3]}#$$&+1==>X[]__oot{}
{[X*](1..$_,!0..$_).rotor($_)}#&***+-..334===>>[]^eegiimpps{}
{(1,&[+]...*>=$_)[*-!0]==$_}#$()**....334>X^_eegiimoopprrst{}
{[+]((1..$_)>>.&{$_**$_})}#!**,-....0334===X[]^eegiimoopprrst

2番目のものは((1,2,3,4),(2,4,6,8),(3,6,9,12),(4,8,12,16))与えられたときに戻ります4

Perl 6には実際には最大の整数はありませんが、3番目の整数はの入力で即座に機能します15156039800290547036315704478931467953361427680642。唯一の制限要因は、メモリと時間です。

それ以外の場合は、必要なものをはるかに超えた入力に対してすべて「瞬時に」実行されます。

オンラインで試す


6

JavaScriptの(ES6)、101の 100 95 93 91バイト

(n,r=[],a=(y,m)=>n?y%m?a(y,++m):a(y+1,2,y==m||n--%3||r.push(y)):r)=>a(4,2,n*=3)//>....p*A&&
n=>[...Array(n)].map((r,y,m)=>m.map((s,n)=>y*++n,y+=1))//22334(,,,,===ayy)??%%::||||--uh*&&
r=(n,y=1,a=2)=>n==y||n>y&&r(n,a,y+a)//2334((((,,,,r=[]ayymmmm))))>??%%++::||--.....ppush**A
r=y=>y&&y**y+r(y-1)//22334(((((nnnn,,,,,,,,r=====[]aaaaymmmm)))))>>??%%++::||||-.....ppushA

編集:0フィボナッチ数としてサポートしないことで1バイトを保存しました。変数の名前を変更して、5バイトとさらに2バイト(@Arnauldのおかげで1バイト)を節約しました。切り替えて2つのバイトを保存し+1++そして+=1


c変数のすべての出現をで置き換えると、A1バイト節約されます。
アーナウド

(私はあなたにも置き換えることができることを示唆することについてだったdy、しかし、dあなたはおそらく、最初のを修正したいので、現在のバージョンで定義されていません)
アルノー

@Arnauldそのアウトを指してくれてありがとう、私は固定のものまで管理し、名前を変更することにより、さらにバイトの保存am
ニール

4

MATL、30文字

一緒に行った文字セットは次のとおりです。

!%))*+001233::<=GGQZ\]^`pstvyy~

私は他のMATLの答えを打ち負かすことはできませんでしたが、この解決策を思いつくのは楽しかったです。

タスク1:

3番目の合成数。

4t^:QtZp~)G3*:3\1=)%!`yy+<]vGs

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

タスク2:

九九。MATLの仕組みにより、間違いなく最も簡単なタスク

:t!*%4QZp~)G3:3\1=)`yy+<]vGs^t

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

タスク3:

フィボナッチテスター。真の入力の場合は正の整数(1または2)を出力し、偽の入力の場合は0を出力します。

1t`yy+tG<]vG=s%4:QZp~)3*:3\)!^

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

タスク4:

力の合計

:t^s%1`yy+tG<]vG=4QZp~)3*:3\)!

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

後でより詳細な説明を投稿しますが、今のところ、それ%がコメント文字であることに注意する必要があります。

4t^:QtZp~)G3*:3\1=)
:t!*
1t`yy+tG<]vG=s
:t^s

4

PowerShell95 94バイト

TimmyDは私のベーコンを再び救います)

タスク1:

(""..999|?{'1'*$_-match'^(?=(..+)\1+$)..'})[(0..("$args"-1)|%{$_*3})]#|$$$$===ss%``iiex!!nnnq;

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


タスク2:

($s=1.."$args")|%{"`$s|%{$_*`$_}"|iex}#0113999((((......??''''*$$$--match^===++))))\[]i!!nnnq;

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


タスク3:

!!(($i="$args")..($s=1)|?{($n=($s+=$n)-$n)-eq$i})#0113999......||?{''''**__match^+\}[""%%]``x;

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


タスク4:

"$args"..1|%{$s+="$_*"*$_+1|iex};$s#013999(((((......|??{''''$$$--match^===)))))\}[%]``i!!nnnq

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


ああ、"$args"代わりに文字列化$args[0]は素晴らしいです。これからこれを使用します。
AdmBorkBork

@TimmyDええ、私はそれを使用して、単一のパラメーターを持つすべての単一バイトの節約にしています。
-briantist

@TimmyD良い点!確かにすべてを書き直さなければなりませんが、再訪してそれを適用するかもしれません。4つすべてを完了すると、最適化の点でやや落ち着きました。
-briantist

TIOリンクなどをやり直すことを意味していましたが、FINE @TimmyDは怠beingなことをやめ、寛大な提案を使用します。(編集):-p
ブリアンティスト

;計算を操作して("$args"..1|%{$s+="$_*"*$_+1|iex})-(-$s)別の全体のバイトを保存することにより、タスク4を削除できます。
AdmBorkBork

3

Haskell77 76文字

m n=[[x|x<-[1..],2/=sum[1|0<-mod x<$>[1..x]]]!!y|y<-[1,4..3*n]]--2 n===y();^
s n=[(*y)<$>[1..n]|y<-[1..n]]--0112234mmm  ====[[[xxxx||<<--..]]],,/uod!!y;^
n x|x<2=1|1<3=sum(n<$>[x-1,x-2]);d y=[0|m<-[1..y],y==n m]--4[[[....]]]/o!!*^
o n=sum[x^x|x<-[1..n]]--01112234mm  n====[[[[x||<<<--....]]]],,/d$>!!yyy*();

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

--行コメントを開始するため、4つのプログラムはすべて形式<program>--<unused chars>です。

タスク1:

m n=[[x|x<-[1..],2/=sum[1|0<-mod x<$>[1..x]]]!!y|y<-[1,4..3*n]]

最長のプログラム。[x|x<-[1..],2/=sum[1|0<-mod x<$>[1..x]]]合成数の無限リストに加えて1、0インデックスを修正する開始を生成します。使用法:

Prelude> m 5
[4,9,14,18,22]

タスク2:

s n=[(*y)<$>[1..n]|y<-[1..n]]

使用法:

Prelude> s 5
[[1,2,3,4,5],[2,4,6,8,10],[3,6,9,12,15],[4,8,12,16,20],[5,10,15,20,25]]

タスク3:

n x|x<2=1|1<3=sum(n<$>[x-1,x-2]);d y=[0|m<-[1..y],y==n m]

[0]真実と偽物を返します[]。使用法:

Prelude> d 5
[0]
Prelude> d 6
[]

タスク4:

o n=sum[x^x|x<-[1..n]]

使用法:

Prelude> o 5
3413

3

05AB1E、21バイト

タスク1

3ÅFOL¦DâPÙï{3ôø¬¹£qåm

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

タスク2

LDâP¹ôq3m¦Ùï{3ø¬£ÅFåO

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

タスク3

3mÅF¹åqL¦DâPÙï{3ôø¬£O

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

タスク4

LDmOq3¦âPÙï{3ôø¬¹£ÅFå

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

説明

すべてのタスクについてq、プログラムは終了するため、後続のコードは実行されません。

タスク1

これは最大のバイトホグです。ここでの小さな改善は大いに役立つでしょう。

3ÅFO                 # sum the first 4 fibonacci numbers
    L¦               # range [2 ... above]
      Dâ             # cartesian product with itself
        P            # product
         Ù           # remove duplicates
          ï{         # sort
            3ô       # split in pieces of size 3
              ø      # transpose
               ¬     # get the first lits
                ¹£   # get the first input-nr elements of the list

タスク2

L       # range [1 ... input]
 D      # duplicate
  â     # cartesian product
   P    # product
    ¹ô  # split in pieces of input size

タスク3

3m      # input**3
  ÅF    # get a list of that many (+1) fibonacci numbers
    ¹å  # check if input is in that list

タスク4

L     # range [1 ... input]
 D    # duplicate
  m   # elementwise power of ranges
   O  # sum

1

ルビー、83 82 80 78文字

->m{'*+-=';[*0..m-1].map{|b|(4..516).select{|p|(2...p).any?{|n|p%n==0}}[3*b]}}
->n{'()%**+--......00123456==?[[]]clmnsty{||}';(b=1..n).map{|e|b.map{|p|e*p}}}
->m{'%+-......001236bclnnpt[[]]{{||||}}';(1..e=m*m).any?{|p|(p*p-5*e).abs==4}}
->n{'%*.......023456=?[]abbceelnsty{{||||}}';((m=0)..n).map{|p|m+=p**p}[-1]-1}

注:Wikipediaで説明されている完全な二乗法を使用したフィボナッチ数検出器:https : //en.wikipedia.org/wiki/Fibonacci_number#Recognizing_Fibonacci_numbers


書き込む文字がある場合、文字列の代わりにコメントを最後に使用してみませんか?それはあなたの行ごとの2文字の節約'';VS#
アレクシス・アンデルセン

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