Nhiệm vụ khác nhau, cùng một nhân vật


36

Trong thử thách này, bạn cần giải quyết 4 nhiệm vụ khác nhau bằng cách sử dụng cùng một bộ ký tự. Bạn có thể sắp xếp lại các ký tự, nhưng bạn không thể thêm hoặc xóa các ký tự.

Người chiến thắng sẽ là người gửi giải quyết tất cả các nhiệm vụ bằng cách sử dụng số lượng ký tự nhỏ nhất. Tất cả các nhiệm vụ phải được giải quyết trong cùng một ngôn ngữ.

Lưu ý rằng đó là số lượng ký tự nhỏ nhất, không phải số lượng ký tự duy nhất nhỏ nhất .

Nhiệm vụ 1:

Xuất các Nsố đầu tiên của mỗi số tổng hợp thứ ba . Các codeblock bên dưới hiển thị 19 số tổng hợp đầu tiên trong hàng đầu tiên và mỗi số tổng hợp thứ ba trên hàng bên dưới.

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ếu N=5sau đó đầu ra nên được 4, 9, 14, 18, 22. Bạn phải hỗ trợ 1<=N<=50.

Số tổng hợp là số dương không phải là số nguyên tố hoặc 1.

Kết quả cho N=50là:

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

Nhiệm vụ 2:

Xuất ra một N-by-Nbảng nhân. Bạn phải hỗ trợ1<=N<=20

Thí dụ:

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

Các định dạng đầu ra là tùy chọn, sau đây là đầu ra chấp nhận được [[1,2,3,4],[2,4,6,8],[3,6,9,12],[4,8,12,16]].

Nhiệm vụ 3:

Xác định xem một số có phải là số Fibonacci không . Bạn phải hỗ trợ tích cực Nđến giới hạn số nguyên mặc định của ngôn ngữ của bạn. Nếu có cả số nguyên 32 bit và số nguyên 64 bit thì bạn có thể chọn sử dụng số nguyên yêu cầu mã ngắn nhất. Ví dụ, sử dụng intthay vì long intnếu bạn có sự lựa chọn. Bạn không thể chọn số nguyên nhỏ hơn 32 bit trừ khi đó là mặc định (bạn không thể sử dụng số nguyên 8 bit nếu 32 bit là mặc định).

true/false, false/true, 1/0, 1/-1, a/bĐều là sản lượng có thể chấp nhận miễn là nó phù hợp.

Nhiệm vụ 4:

Lấy Nlàm đầu vào và đầu ra kết quả của 1^1+2^2+3^3+...N^N. Bạn phải hỗ trợ 1<=N<=10.

10 kết quả khác nhau là:

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

Đây là , vì vậy bài nộp ngắn nhất trong mỗi ngôn ngữ sẽ thắng!

Đoạn trích này sẽ giúp kiểm tra giải pháp của bạn. Nó đo bộ ký tự tối thiểu cần thiết để bao gồm cả bốn giải pháp và hiển thị các ký tự còn lại.


1
Nhị phân: hai ký tự
coredump

@coredump Vâng, hai nhân vật độc đáo ...
Stewie Griffin

Câu trả lời:


12

Python, 88 87 byte

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

Không đặt quá nhiều nỗ lực vào việc chia sẻ các nhân vật hoặc chính các gôn thủ, điều này gần như chắc chắn sẽ bị đánh bại.


1
Sẽ range(11*n)luôn chứa đủ vật liệu tổng hợp?
FlipTack

1
@FlipTack Có, 5*nlà đủ.
Martin Ender

12

Thạch , 19 18 17 ký tự

Nhiệm vụ 1

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

Hãy thử trực tuyến!

Nhiệm vụ 2

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

Hãy thử trực tuyến!

Nhiệm vụ 3

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

Hãy thử trực tuyến!

Nhiệm vụ 4

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

Hãy thử trực tuyến!

Làm thế nào nó hoạt động

Mỗi dòng trong chương trình Jelly xác định một liên kết (chức năng) riêng biệt . Cái cuối cùng là liên kết chính và được gọi tự động khi chương trình được thực thi. Trừ khi liên kết chính tham chiếu đến những người khác bằng cách nào đó, họ không có hiệu lực. Lưu ý rằng ngay cả các liên kết chưa được mở có thể không chứa lỗi trình phân tích cú pháp.

Nhiệm vụ 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.

Nhiệm vụ 2

Điều này tầm thường: ×là nguyên tử nhân, và þáp dụng (bảng) nhanh chóng× cho từng kết hợp các yếu tố ở bên trái và trong đối số bên phải. Nếu các đối số là số nguyên (mà chúng ở đây), thì nó cũng đưa chúng vào phạm vi đầu tiên.

Nhiệm vụ 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.

Nhiệm vụ 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.

Vui mừng khi thấy ÆḞđã được chứng minh là hữu ích!
Lynn

9

Toán học, 60 ký tự

Nhiệm vụ 1: Vật liệu tổng hợp

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

Nhiệm vụ 2: Bảng nhân

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

Nhiệm vụ 3: Fibonacci

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

Nhiệm vụ 4: Tổng quyền hạn

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

Mỗi lần gửi là một tập hợp các biểu thức bị bỏ qua, theo sau là một hàm không tên thực hiện tác vụ đã cho.

Tôi đã viết một kịch bản đơn giản của CJam , "tối ưu hóa" kết hợp các giải pháp thô bằng cách gửi trước một nhận xét. Sau đó tôi đã kết thúc việc lưu ba byte trên đó bằng cách loại bỏ thủ công từng bình luận (yêu cầu sắp xếp lại để có được cú pháp hợp lệ trong mỗi trường hợp). Kịch bản làm cho nó dễ dàng hơn nhiều để thử các biến thể đơn giản của các giải pháp để xem liệu chúng có làm giảm điểm tổng thể hay không. Hãy sử dụng kịch bản cho mình.


Tôi có một nhận xét, nhưng đó không phải là về mã của bạn: P. (Câu trả lời hay, btw). Tập lệnh CJam của bạn bỏ qua một lỗ hổng đơn giản: Nếu tôi nhập abbalàm tập lệnh, nó sẽ cung cấp cho tôi (**)ab(**)ba, thay vì abba.
HyperNeutrino

@AlexL. Có, nó cũng không xem xét thực tế rằng (**)bản thân nó có thể được sử dụng để che một số ký tự nếu chúng được sử dụng trong bất kỳ chương trình nào khác.
Martin Ender

9

MATL , 29 28 26 ký tự

Nhiệm vụ 1 (mỗi số tổng hợp thứ ba)

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

Hãy thử trực tuyến!

Nhiệm vụ 2 (bảng nhân)

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

Hãy thử trực tuyến!

Nhiệm vụ 3 (Máy dò Fibonacci)

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

Điều này hiển thị 1/0 cho Fibonacci / không Fibonacci tương ứng.

Hãy thử trực tuyến!

Nhiệm vụ 4 (tổng quyền hạn)

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

Hãy thử trực tuyến!

Kiểm tra

Chương trình này nhập bốn chuỗi và hiển thị chúng được sắp xếp, để kiểm tra trực quan rằng chúng có sử dụng cùng một ký tự không.

Giải thích

%là biểu tượng bình luận. Tất cả mọi thứ bên phải của nó được bỏ qua.

Nhiệm vụ 1 (mỗi số tổng hợp thứ ba)

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

Nhiệm vụ 2 (bảng nhân)

:     % 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

Nhiệm vụ 3 (Máy dò Fibonacci)

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

Nhiệm vụ 4 (tổng quyền hạn)

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

Khi tôi lần đầu tiên nhìn vào thử thách, tôi nghĩ rằng Hey MATL would be perfect for this!bạn đã đánh bại tôi. +1
DJMcMayhem

@DJMcMayhem Xin lỗi, tôi có xu hướng trả lời rất nhiều. Lần tới ping tôi và tôi sẽ kiềm chế nếu bạn đang làm việc với nó :-) Dù sao đi nữa, tại sao không đi tiếp? Có lẽ bạn có thể vượt qua điều này
Luis Mendo

3
@DJMcMayhem, xin vui lòng gửi câu trả lời, ngay cả khi bạn không quản lý để vượt qua Luis. Tôi ước có nhiều người sẽ đăng câu trả lời bằng các ngôn ngữ đã được sử dụng, ngay cả khi họ không quản lý để vượt qua câu đầu tiên.
Stewie Griffin

@stewiegriffin Haha, được rồi. Tôi chưa có câu trả lời hợp lệ, nhưng nếu tôi nhận được một câu trả lời (và nó đủ khác biệt) tôi sẽ đăng nó.
DJMcMayhem

7

Perl 6 , 61 byte

{(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

Cái thứ hai trở lại ((1,2,3,4),(2,4,6,8),(3,6,9,12),(4,8,12,16)) khi được đưa ra4

Perl 6 không thực sự có số nguyên tối đa, nhưng số thứ ba hoạt động ngay lập tức với đầu vào là 15156039800290547036315704478931467953361427680642 . Các yếu tố hạn chế duy nhất sẽ là bộ nhớ và thời gian.

Nếu không, tất cả chúng sẽ chạy "ngay lập tức" cho các đầu vào vượt xa những gì cần thiết.

Dùng thử trực tuyến


6

JavaScript (ES6), 101 100 95 93 91 byte

(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

Chỉnh sửa: Đã lưu 1 byte bằng cách không hỗ trợ 0dưới dạng số Fibonacci. Đã lưu 5 byte cộng thêm 2 byte (1 nhờ @Arnauld) bằng cách đổi tên các biến. Lưu 2 byte bằng cách chuyển giữa +1, +++=1.


Thay thế tất cả các lần xuất hiện của cbiến bằng Anên lưu một byte.
Arnauld

(Tôi đã đề nghị rằng bạn cũng có thể thay thế dbằng y, nhưng dkhông được xác định trong phiên bản hiện tại, vì vậy bạn có thể muốn sửa lỗi đó trước)
Arnauld

@Arnauld Cảm ơn bạn đã chỉ ra điều đó, nhưng tôi đã cố gắng khắc phục mọi thứ và lưu thêm một byte bằng cách đổi tên athành m.
Neil

4

MATL , 30 ký tự

Bộ ký tự tôi đi cùng là:

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

Tôi không thể vượt qua câu trả lời MATL khác, nhưng tôi rất vui khi đưa ra giải pháp này.

Nhiệm vụ 1:

Số tổng hợp thứ ba.

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

Hãy thử trực tuyến!

Nhiệm vụ 2:

Bảng cửu chương. Chắc chắn là nhiệm vụ dễ nhất, do cách MATL hoạt động

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

Hãy thử trực tuyến!

Nhiệm vụ 3:

Máy đo Fibonacci. In một số nguyên dương (1 hoặc 2) cho các đầu vào trung thực và 0 cho các đầu vào giả.

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

Hãy thử trực tuyến!

Nhiệm vụ 4:

Tổng quyền hạn

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

Hãy thử trực tuyến!

Tôi sẽ đăng một lời giải thích kỹ lưỡng hơn sau, nhưng bây giờ, bạn nên lưu ý rằng đó %là nhân vật bình luận, vì vậy các chương trình thực sự là:

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

4

PowerShell , 95 94 byte

( TimmyD savin 'thịt xông khói của tôi một lần nữa)

Nhiệm vụ 1:

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

Hãy thử trực tuyến!


Nhiệm vụ 2:

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

Hãy thử trực tuyến!


Nhiệm vụ 3:

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

Hãy thử trực tuyến!


Nhiệm vụ 4:

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

Hãy thử trực tuyến!


Oh, "$args"chuỗi đó thay vì $args[0]là rực rỡ. Tôi sẽ sử dụng nó từ đây về sau.
admBorkBork

@TimmyD Vâng, tôi đã sử dụng điều đó để tiết kiệm byte đơn trên bất cứ thứ gì có một tham số duy nhất.
nghĩa tự do

@TimmyD điểm tốt! Tôi phải viết lại tất cả để chắc chắn, tôi có thể xem lại và áp dụng nó. Khi tôi hoàn thành tất cả 4, tôi loại ra về mặt tối ưu hóa.
nghĩa tự do

Chà, tôi có nghĩa là đang thực hiện lại các liên kết TIO và như vậy nhưng FINE @TimmyD Tôi sẽ ngừng lười biếng và sử dụng đề xuất hào phóng của bạn mà không phải là nhiều như tôi đang làm! (đã chỉnh sửa) :-p
briantist

Bạn có thể loại bỏ ;khỏi Nhiệm vụ 4 bằng cách thao tác tính toán ("$args"..1|%{$s+="$_*"*$_+1|iex})-(-$s)để lưu một byte tổng thể khác.
admBorkBork

3

Haskell , 77 76 ký tự

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*();

Hãy thử trực tuyến!

-- bắt đầu một nhận xét dòng, vì vậy tất cả bốn chương trình có dạng <program>--<unused chars> .

Nhiệm vụ 1:

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

Chương trình dài nhất. [x|x<-[1..],2/=sum[1|0<-mod x<$>[1..x]]]mang lại một danh sách vô hạn các số tổng hợp cộng với một bắt đầu 1điều chỉnh chỉ số 0. Sử dụng:

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

Nhiệm vụ 2:

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

Sử dụng:

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

Nhiệm vụ 3:

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

Trả lại [0]cho sự thật và giả []. Sử dụng:

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

Nhiệm vụ 4:

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

Sử dụng:

Prelude> o 5
3413

3

05AB1E , 21 byte

Nhiệm vụ 1

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

Hãy thử trực tuyến!

Nhiệm vụ 2

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

Hãy thử trực tuyến!

Nhiệm vụ 3

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

Hãy thử trực tuyến!

Nhiệm vụ 4

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

Hãy thử trực tuyến!

Giải thích

Đối với tất cả các tác vụ, qkết thúc chương trình để mã theo sau không bao giờ được thực thi.

Nhiệm vụ 1

Đây là byte-hog lớn nhất. Một cải tiến nhỏ ở đây có thể đi một chặng đường dài.

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

Nhiệm vụ 2

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

Nhiệm vụ 3

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

Nhiệm vụ 4

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

1

Ruby, 83 82 80 78 ký tự

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

Lưu ý: Trình phát hiện số Fibonacci bằng phương pháp bình phương hoàn hảo được mô tả trên Wikipedia: https://en.wikipedia.org/wiki/Fibonacci_number#Recognizing_Fiborie_numbers


Nếu bạn có các ký tự để ghi, tại sao không sử dụng một nhận xét ở cuối thay vì một chuỗi? Nó giúp bạn tiết kiệm 2 ký tự trên mỗi dòng '';so với#
Alexis Andersen

Cảm ơn, nhưng với tôi cảm giác như gian lận.
GB
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.