Nhiệm vụ đơn giản đã giải quyết ba lần


15

Bạn nên viết 3 chương trình và / hoặc chức năng bằng một ngôn ngữ.

Tất cả các chương trình này sẽ giải quyết cùng một nhiệm vụ nhưng tất cả chúng sẽ cung cấp các đầu ra khác nhau (nhưng hợp lệ). (Tức là đối với mỗi cặp chương trình, chúng phải là một số đầu vào tạo ra các bộ số đầu ra khác nhau (nhưng hợp lệ).)

Nhiệm vụ

  • Bạn được cấp một số nguyên n, lớn hơn 1
  • Bạn nên trả về hoặc xuất ra các số nguyên dương n khác biệtkhông ai trong số chúng nên chia hết chon .
  • Thứ tự của các số không quan trọng và hoán vị của các số không được tính là các đầu ra khác nhau.

Một bộ ba chương trình hợp lệ với một số input => outputcặp:

program A:
    2 => 5 9
    4 => 5 6 9 10
    5 => 2 4 8 7 1

program B:
    2 => 1 11
    4 => 6 9 1 2
    5 => 4 44 444 4444 44444

program C (differs only in one number from program B):
    2 => 1 13
    4 => 6 9 1 2
    5 => 4 44 444 4444 44444

Chấm điểm

  • Điểm của bạn là tổng độ dài của 3 chương trình hoặc chức năng.
  • Điểm thấp hơn là tốt hơn.
  • Nếu chương trình / chức năng của bạn chia sẻ mã, mã được chia sẻ sẽ được tính vào độ dài của mỗi chương trình sử dụng mã.

1
Có phải mỗi chương trình phải có thể được chạy từ tệp riêng của mình mà không có bất kỳ bao gồm nào, hoặc các chương trình có thể phụ thuộc vào một số mô-đun / thư viện được chia sẻ chỉ được tính một lần không?
quintopia

@quintopia Các chương trình / chức năng không nên chia sẻ mã. Nếu họ làm như vậy, mã được chia sẻ sẽ được tính vào độ dài của tất cả các chương trình sử dụng mã.
ngẫu nhiên

Câu trả lời:


4

Bình thường, 17 16 byte

5 byte:

^LhQQ

Đầu ra:

2: [1, 3]
3: [1, 4, 16]
4: [1, 5, 25, 125]

6 byte:

mh*QdQ

Đầu ra:

2: [1, 3]
3: [1, 4, 7]
4: [1, 5, 9, 13]

5 byte:

|RhQQ

Đầu ra:

2: [3, 1]
3: [4, 1, 2]
4: [5, 1, 2, 3]

Phiên bản thay thế, theo thứ tự tăng dần: -ShQQ


1
Ôi. Tôi thích sơ đồ thứ ba đó.
quintopia

@isaacg oh, xin lỗi
Maltysen

8

J, 16 byte

Hàm 1, 5 byte

p:^i.

Hàm 2, 6 byte

+p:^i.

Hàm 3, 5 byte

>:^i.

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

Chức năng 1

p:^i.     Right argument: y

   i.     Compute (0 ... y-1).
p:        Compute P, the prime at index y (zero-indexed).
  ^       Return all powers P^e, where e belongs to (0 ... y-1).

P là số nguyên tố và P> y , y không thể chia P e .

Chức năng 2

+p:^i.    Right argument: y

 p:^i.    As before.
+         Add y to all results.

Nếu y chia P e + y , nó cũng sẽ chia P e + y - y = P e .

Chức năng 3

>:^i.     Right argument: y

   i.     Compute (0 ... y-1).
>:        Compute y+1.
  ^       Return all powers (y+1)^e, where e belongs to (0 ... y-1).

Nếu y chia (y + 1) e một số thừa số nguyên tố Q của y sẽ phải chia (y + 1) e .

Nhưng sau đó, Q sẽ chia cả yy + 1 và do đó, y + 1 - y = 1 .



2

Vitsy , 54 byte

Chương trình:

V1V \ [DV * 1 + N '' O1 +]
V2V \ [DV * 1 + N '' O1 +]
V3V \ [DV * 1 + N '' O1 +]

Đầu ra:

2 => 3 7
4 => 5 9 13 17
5 => 6 11 16 21 26
2 => 5 7
4 => 9 13 17 21
5 => 11 16 21 26 31
2 => 7 9
4 => 13 17 21 25 
5 => 16 21 26 31 36

Cách thức hoạt động (sử dụng chương trình đầu tiên làm giải thích):

V1V \ [DV * 1 + N '' O1 +]
V Nắm bắt đầu vào ngầm định như một biến toàn cục cuối cùng.
 1 Đẩy một cái vào ngăn xếp để sử dụng sau.
  V \ [] Thực hiện mọi thứ trong thời gian nhập dấu ngoặc.
     D Sao y mục trên cùng của ngăn xếp.
      V Đẩy biến toàn cục vào ngăn xếp.
       * 1 + Nhân, sau đó thêm 1. Điều này làm cho nó không chia hết.
          N '' O Xuất số theo sau là khoảng trắng.
               1+ Thêm một vào số còn lại trong ngăn xếp.

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


2

Perl, 79

Một char được thêm vào mỗi chương trình vì điều này đòi hỏi -ncờ.

for$a(0..$_-1){say$_*$a+1}
for$a(1..$_){say$_*$a+1}
for$a(2..$_+1){say$_*$a+1}

Khá đơn giản.


2

Toán học, 12 + 12 + 12 = 36 byte

# Range@#-1&
# Range@#+1&
#^Range@#+1&

Các xét nghiệm:

# Range@#-1&[10]
(* -> {9, 19, 29, 39, 49, 59, 69, 79, 89, 99} *)
# Range@#+1&[10]
(* -> {11, 21, 31, 41, 51, 61, 71, 81, 91, 101} *)
#^Range@#+1&[10]
(* -> {11, 101, 1001, 10001, 100001, 1000001, 10000001, 100000001, 1000000001, 10000000001} *)

Bạn có thể thêm một số ví dụ đầu ra?
Paŭlo Ebermann

2

CJam, 8 + 8 + 8 = 24 byte

{,:)))+}
{_,f*:)}
{)_(,f#}

Đây là ba hàm không tên được dự kiến nsẽ nằm trên ngăn xếp và để lại một danh sách các số nguyên ở vị trí của nó. Tôi không chắc điều này là tối ưu, nhưng tôi sẽ phải tìm kiếm một giải pháp ngắn hơn sau này.

Bộ thử nghiệm.

Các kết quả:

{,:)))+}
2 => [1 3]
3 => [1 2 4]
4 => [1 2 3 5]
5 => [1 2 3 4 6]

{_,f*:)}
2 => [1 3]
3 => [1 4 7]
4 => [1 5 9 13]
5 => [1 6 11 16 21]

{)_(,f#}
2 => [1 3]
3 => [1 4 16]
4 => [1 5 25 125]
5 => [1 6 36 216 1296]

Cái đầu tiên cũng hoạt động như

{_),:)^}

hoặc là

{_(,+:)}

Kết quả của bạn hiển thị cả ba cho cùng một đầu ra khi n = 2
Sparr

@Sparr Điều đó được cho phép. Kiểm tra các ví dụ trong thử thách. Yêu cầu duy nhất là họ tính toán các chức năng khác nhau, không phải kết quả khác nhau trên mỗi đầu vào.
Martin Ender

Ahh, họ phải có kết quả khác nhau trên một số đầu vào. Đó là những gì tôi đọc sai.
Sparr

2

Python 2, 79 byte

lambda n:range(1,n*n,n)
lambda n:range(1,2*n*n,2*n)
lambda n:range(1,3*n*n,3*n)

Ba chức năng vô danh mà bắt đầu 1và đếm lên bởi mỗi người trong số n, 2*n, 3*ncho nthuật ngữ này.


1

Nghiêm túc, 20 byte

,;r*1+

,;R*1+

,;R1+*1+

Vâng, điều này không tối ưu ...


1

Mệnh , 16 byte

Mã hóa tùy chỉnh, được mô tả ở đây , chỉ sử dụng một byte cho mỗi ký tự.

✶″{*↑                   ## 3 => (0 1 2) => (0 3 6)  => (1 4 7)
✶″U{ⁿ↑                  ## 3 => (1 2 3) => (3 9 27) => (4 10 28)
✶U¡↑◄                   ## 3 => (1 2 3) =>             (1 2 4)

Đầu ra

2 => (1 3)
3 => (1 4 7)
4 => (1 5 9 13)
5 => (1 6 11 16 21)

2 => (3 5)
3 => (4 10 28)
4 => (5 17 65 257)
5 => (6 26 126 626 3126)

2 => (1 3)
3 => (1 2 4)
4 => (1 2 3 5)
5 => (1 2 3 4 6)

1

Haskell, 54 byte

f n=n+1:[1..n-1]
g n=5*n+1:[1..n-1]
h n=9*n+1:[1..n-1]

Ba chức năng này khá đơn giản nên rất khó


1

Octave, 11 + 13 + 13 = 37 byte

@(a)1:a:a^2
@(a)a-1:a:a^2
@(a)(1:a)*a+1

1

Python 2, 125 byte

N=input();print[i*N+1for i in range(N)]
N=input();print[i*N+1for i in range(1,N+1)]
N=input();print[i*N+1for i in range(2,N+2)]

Mỗi dòng ở đây là một chương trình hoàn chỉnh. Giải pháp rõ ràng nhất trong tâm trí của tôi.

EDIT @ Sherlock9 đã lưu hai byte.



0

Golf, 50 51 57 byte

Một phiên bản Golfscript của những gì từng là mã Python của quintopia . Mỗi chức năng ncất cánh.

{.,{1$*)}%\;}:f;    i*n+1 for i in range(n)
{.,{)1$*)}%\;}:g;   i*n+1 for i in range(1,n+1)
{.,{1$)\?}%\;}:h;   (n+1)**i for i in range(n)

0

TI-Basic (TI-84 Plus CE), tổng cộng 55 40 byte

PRGM:C 12 bytes
    seq(AnsX+1,X,1,Ans
PRGM:B 14 bytes
    seq(AnsX+1,X,2,Ans+1
PRGM:C 14 bytes
    seq(AnsX+1,X,3,Ans+2

Đơn giản, tương tự như nhiều câu trả lời khác ở đây, mỗi câu hiển thị một danh sách các số (X + A) N + 1 cho X trong phạm vi (N) và với A là chương trình nào (1, 2 hoặc 3).

Giải pháp cũ (55 byte):

PRGM:C 17 bytes
    Prompt N
    For(X,1,N
    Disp XN+1
    End
PRGM:B 19 bytes
    Prompt N
    For(X,2,N+1
    Disp XN+1
    End
PRGM:C 19 bytes
    Prompt N
    For(X,3,N+2
    Disp XN+1
    End

Đơn giản, tương tự như nhiều câu trả lời khác ở đây, mỗi câu hiển thị các số (X + A) N + 1 cho X trong phạm vi (N) và với A là chương trình nào (1, 2 hoặc 3).

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.