Bạn là người dùng: Tạo các yêu cầu


15

Sếp của tôi * không hiểu tại sao các lập trình viên của cô ấy phản ứng tiêu cực với người dùng thay đổi yêu cầu chương trình. Giúp cô hiểu! Trên mỗi câu trả lời, tạo một yêu cầu mới. Sau đó, viết một chương trình / hàm giải quyết yêu cầu đó và tất cả các yêu cầu trước đó, trong khi bằng ngôn ngữ lập trình mới.

Ví dụ

Người dùng 1 đăng câu trả lời đầu tiên. Ông xác định rằng chương trình phải xuất ra "Xin chào, Thế giới." Anh ta tạo ra một chương trình bằng Java tạo ra "Hello, World."

Người dùng 2 đăng câu trả lời thứ hai. Cô xác định rằng chương trình phải chấp nhận đầu vào n và xuất số nguyên tố thứ n , tối đa bằng số ngôn ngữ. Cô tạo một chương trình trong C ++, chấp nhận đầu vào n và xuất ra số nguyên tố thứ n và xuất ra "Hello, World". Cô ấy không thể tạo ra một chương trình trong Java.

Người dùng 3 đăng câu trả lời thứ ba. Ông xác định rằng nguồn chương trình không thể chứa văn bản "Xin chào". Anh ta tạo một hàm trong Python chấp nhận đầu vào n và xuất ra số nguyên tố thứ n và "Xin chào, Thế giới." trong khi không sử dụng văn bản "Xin chào" trong nguồn của mình. Anh ta không thể tạo ra một chương trình bằng Java hoặc C ++.

Định dạng câu trả lời

#Answer # - <language name> [version, if pertinent]

Requirement: <rule>.

<code>

[explanations, encoding, TIO link, etc.]

Trả lời nội quy

  • Câu trả lời phải theo định dạng trên, hoặc tương tự.

  • Câu trả lời có thể là một chương trình hoặc một chức năng.

  • Câu trả lời phải đáp ứng tất cả các yêu cầu lên đến và bao gồm câu trả lời hiện tại.

  • Cùng một người dùng có thể không đăng hai câu trả lời liên tiếp.

  • Nếu hai câu trả lời được đăng với cùng một số, câu trả lời được đăng sau đó sẽ bị xóa.

  • Không chỉnh sửa yêu cầu của bạn trừ khi bạn nhầm lẫn và không có câu trả lời nào khác được đăng.

  • Nếu câu trả lời của bạn không tuân thủ quy tắc của bạn và tất cả các quy tắc khác, nó không hợp lệ. Cố gắng khắc phục điều này trước khi người khác đăng câu trả lời tiếp theo.

  • Các phiên bản khác nhau của cùng một ngôn ngữ chỉ được tính là các ngôn ngữ khác nhau nếu chương trình hoặc chức năng được tạo trong một trong hai phiên bản sẽ hoạt động khác nhau trong phiên bản khác.

  • Câu trả lời có thể không chấp nhận bất kỳ đầu vào nào không bắt buộc và có thể không xuất ra bất cứ thứ gì không cần thiết ngoại trừ khoảng trắng cần thiết. Tuy nhiên, trong khi hậu trường, chương trình phải đáp ứng tất cả các yêu cầu "ẩn" (từ người dùng), nó có thể làm bất cứ điều gì khác mà bạn muốn, đặc biệt là nếu bạn phải đáp ứng yêu cầu về thời gian thực hiện.

Quy tắc yêu cầu

  • Yêu cầu chỉ phải xác định một yêu cầu. Yêu cầu này có thể có điều kiện và nếu yêu cầu này yêu cầu đầu vào và / hoặc đầu ra, điều này có thể được bao gồm.

  • Yêu cầu có thể không xóa hoặc sửa đổi các yêu cầu trước đó hoặc xung đột với chúng, nhưng có thể mở rộng một yêu cầu (chỉ định cái nào).

  • Nếu yêu cầu hạn chế nguồn ( ), hoặc yêu cầu văn bản trong nguồn, nó chỉ có thể loại bỏ một chuỗi duy nhất (ví dụ 0, Hello), hoặc yêu cầu một nhân vật duy nhất.

  • Yêu cầu không thể yêu cầu nguồn phải dưới 100 byte, yêu cầu mã hóa cụ thể, hoặc, tự nó, loại trừ phần lớn các ngôn ngữ phổ biến.

  • Yêu cầu có thể không buộc nguồn phải tuân theo một mẫu nhất định (ví dụ: bắt đầu mỗi dòng bằng một ký tự nhất định hoặc (@Conor) băm đến một giá trị nhất định) ngoài giá trị được chỉ định trong nguồn bị hạn chế.

Đây là , vì vậy tất cả các câu trả lời được xây dựng dựa trên các câu trả lời trước đó. Tôi và có thể những người khác sẽ cố gắng giữ một danh sách tất cả các yêu cầu. Để xem câu trả lời theo thứ tự, bạn có thể sắp xếp theo cũ nhất. Để xem câu trả lời mới nhất, sắp xếp theo cũ nhất, sau đó điều hướng đến cuối danh sách.

Cách thắng (thay đổi để giữ phiếu):

Khi không có câu trả lời nào được đăng trong hai tuần, thử thách đã kết thúc và điểm sẽ được tính. Điểm số sẽ được tính bằng cách tính tổng số câu trả lời của mỗi người dùng, nhưng các bài đăng có trọng số dựa trên khoảng cách vào chuỗi (vì các bài đăng sau này có nhiều yêu cầu hơn, chúng khó hơn).

Mã giả:

for each answer in user.Answers {
   score += 1 + (answer.number / 100)
}

Thí dụ:

Sally có ba câu trả lời. Cô đăng câu trả lời 5, câu trả lời 7 và câu trả lời 20.

Điểm của cô ấy sẽ là 1.05 + 1.07 + 1.2 = 3.32. Nếu đó là một câu trả lời thẳng, điểm của cô ấy sẽ là 3, nhưng trọng số của phần thưởng độ sâu chuỗi sẽ trả lời khó hơn.

Để bắt đầu:

Đây là yêu cầu đầu tiên, được đưa ra bởi sếp của tôi *:

Yêu cầu 0: Chương trình phải xuất 0 trước mọi thứ khác.

* hư cấu

Danh sách các yêu cầu và ngôn ngữ

Lưu ý rằng điều này có thể đã lỗi thời - vui lòng xem câu trả lời được đăng cuối cùng ngay trước khi đăng câu trả lời của bạn để đảm bảo bạn đang đáp ứng mọi yêu cầu. Tôi rất xin lỗi nếu bạn tạo một chương trình tinh tế, chỉ dành cho ai đó để bắn tỉa nó - nếu bạn thực sự thực sự muốn đăng nó, hãy xác định không cạnh tranh.

Full (nhưng có lẽ không cập nhật) Yêu cầu: Không thể chứa 0, *hoặc ]trong mã nguồn, và không thể sử dụng tham gia-on-newline dựng sẵn. Đầu ra0 , sau đó lấy đầu vào số nguyên không âm nvà xuất ra một dòng mới theo sau là nsố Fibonacci thứ 0 (có thể được 1lập chỉ mục), theo sau là một dòng mới, theo sau là đầu vào n bình phương, theo sau là một dòng mới, tiếp theo là nnhân bởi một đầu vào mới m, tiếp theo là một dòng mới, tiếp theo 10^B, nơi Bđược số byte trong mã nguồn, tiếp theo là một dòng mới, tiếp theo là nthứ 0-indexed (cũng có thể 1-indexed) số nguyên tố, tiếp theo là một dòng mới, theo sau là ước số chung lớn nhất của n và m.

0: Chương trình phải xuất ra 0trước mọi thứ khác. Ngôn ngữ: Không áp dụng
1: Nguồn chương trình không thể chứa 0. Ngôn ngữ: 05AB1E
2: Chương trình lấy đầu vào số nguyên không âm nvà xuất ra một dòng mới theo sau là 0số Fibonacci thứ n được 1chỉ định (có thể được lập chỉ mục). Ngôn ngữ: dc
3: Chương trình xuất ra một dòng mới, theo sau là cùng một nbình phương đầu vào . Ngôn ngữ: J
4: Chương trình xuất ra một dòng mới, tiếp theo là nnhân với một đầu vào mới m. Ngôn ngữ: Ohm
5: Chương trình không thể chứa *(mã ASCII 0x2A). Ngôn ngữ: Python 3
6: Các chương trình đầu ra một dòng mới, tiếp theo 10^B, nơi Blà số byte trong mã nguồn. Ngôn ngữ: Mathicala
7: Chương trình xuất ra một dòng mới, theo sau là số nguyên tố nth 0-indexed (cũng có thể là 1-exexed). Ngôn ngữ: JavaScript (ES6)
8: Chương trình không sử dụng nội dung liên kết mới, nhưng có thể sử dụng bất kỳ nội dung tham gia nào khác. Ngôn ngữ: Jelly
9: Chương trình xuất ra một dòng mới theo sau là Số chia chung lớn nhất của n và m. Ngôn ngữ: Scala
10: Chương trình không thể chứa ]. Ngôn ngữ: Pyth

Điểm hiện tại (được sắp xếp theo bài đầu tiên)

Okx : 1.01
R. Kap : 2.09
Conor O'Brien : 1.03
Nick Clifford : 1.04
Eric Rose : 1.05
Greg Martin : 1.06
Erik the Outgolfer : 2.18
math_junkie : 1.09


3
Tại sao chấp nhận câu trả lời cuối cùng? Điều đó làm cho có vẻ như bạn giành chiến thắng để thêm một yêu cầu không ai có thể đáp ứng.
xnor

5
Ví dụ: "băm md5 của chương trình phải là ..."
Conor O'Brien

2
Ngay cả khi các quy tắc giữ vững để ngăn chặn yêu cầu kết thúc chuỗi, tôi vẫn nghĩ rằng có "điều kiện thắng" khuyến khích mọi người đưa ra các quy tắc gần như không thể thay vì những điều thú vị.
XNOR

2
@StephenS Vâng, mọi người dường như không chơi để giành chiến thắng, vì vậy có vẻ như mối quan tâm của tôi bị đặt không đúng chỗ.
xnor

2
Điều này nên được gọi là 'Phạm vi leo'
Phi tuyến

Câu trả lời:


2

Trả lời 10 - Pyth

Yêu cầu: Có hai đầu vào, n(> = 0) và m. Kết quả đầu ra 0 mà không sử dụng 0, *hoặc ]bất cứ nơi nào trong mã nguồn, và không dựng sẵn để gia nhập vào dòng mới. Sau đó, kết quả đầu ra một dòng mới tiếp theo là 1thứ n -indexed số Fibonacci (có thể được 0lập chỉ mục), tiếp theo là một dòng mới, tiếp theo là nbình phương, tiếp theo là một dòng mới, tiếp theo là nnhân m, tiếp theo là một dòng mới, tiếp theo là 10^Bnơi Blà số byte trong mã nguồn, theo sau là một dòng mới và số nguyên tố nth 1-indexed (cũng có thể là 0-exexed), và cuối cùng theo sau là một dòng mới và Số chia chung lớn nhất của n và m.

JU2KE=H2VQ=+Js>2J=+YK=hHW!P_H=hH;jb[ZeJ^Q2sY^T51HiK

Phiên dịch trực tuyến


Vâng, đây cũng là môn đánh gôn :-)
Erik the Outgolfer

Ngoài ra, trước khi bình luận, không, tôi không thể chỉ sử dụng jthay vì jb, kể từ đó tôi sẽ sử dụng một nội dung liên kết mới.
Erik the Outgolfer

6

Trả lời 1 - 05AB1E

Yêu cầu: In 0... mà không có 0mã nguồn

¾

4

Trả lời 3 - J

echo"+(1-1),(*:,~[:+/@:!&i.-)@".1!:1(3)

Yêu cầu: Các đầu ra 0mà không 0trong mã nguồn, sau đó mất một đầu vào số nguyên không âm nvà kết quả đầu ra một dòng mới tiếp theo là 0-indexed n'th số Fibonacci (có thể được 1lập chỉ mục), tiếp theo là một dòng mới, tiếp theo là đầu vào cùng nbình phương.

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


4

Trả lời 4 -

Yêu cầu: Các đầu ra 0không có 0trong mã nguồn, sau đó lấy đầu vào số nguyên không âm nvà xuất ra một dòng mới theo sau là nsố Fibonacci thứ 0 (có thể là 1 được lập chỉ mục), theo sau là một dòng mới, theo sau là cùng một đầu vào n bình phương, theo sau là một dòng mới, tiếp theo là nnhân với một đầu vào mới m.

¼,≡ƒ,²,*,

4

Trả lời 2 - đc

12298P?sa1 1-sb1sc[lblcdsb+scla1-dsa1 1-<y]dsyxlcp

Yêu cầu: Các đầu ra 0mà không 0trong mã nguồn, sau đó mất một đầu vào số nguyên không âm nvà kết quả đầu ra một dòng mới tiếp theo là 0-indexed n'th số Fibonacci (có thể được 1lập chỉ mục).

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


@ R.Kap Không có vấn đề gì :)
Stephen

2
Khi tôi đọc yêu cầu mới, vì một số lý do, tôi bắt đầu cười. +1.
Đồng chí SparklePony

4

Trả lời 5 - Python 3

Yêu cầu: Đầu ra 0 không có 0 trong mã nguồn, sau đó lấy đầu vào số nguyên không âm n và xuất ra một dòng mới theo sau là số Fibonacci thứ n được lập chỉ mục 0 (có thể là 1 được lập chỉ mục), theo sau là một dòng mới, theo sau là cùng một đầu vào n bình phương, theo sau là một dòng mới, theo sau là n nhân với một đầu vào m mới. Không sử dụng ký tự *, mã ASCII 0x2A.

    def f(n, m):
        print(1-1)
        a = 1-1
        b = 1
        for i in range(n):
            c = a+b
            a = b
            b = c
        print(b)
        print(n.__mul__(n))
        print(n.__mul__(m))

3

Trả lời 6 - Toán học

Yêu cầu: Xuất ra 0 mà không có 0 hoặc * trong mã nguồn, sau đó lấy đầu vào số nguyên không âm n và xuất ra một dòng mới theo sau là số Fibonacci thứ n được lập chỉ mục 0 (có thể là 1 được lập chỉ mục), theo sau là một dòng mới, tiếp theo là cùng một đầu vào n bình phương, theo sau là một dòng mới, theo sau là n nhân với một đầu vào m mới, theo sau là một dòng mới, theo sau là 10 ^ B trong đó B là số byte trong mã nguồn.

((e=Echo)[1-1];e@Fibonacci@#;e[#^2];e[1##];2^# 5^#&@59)&

1
Đúng, do đó tôi đã chỉnh sửa vội vàng sau khi tôi thấy EricRoe đánh tôi một phút :)
Greg Martin

2

Trả lời 7 - JavaScript (ES6)

(a,b)=>String.fromCharCode(48)+'\n'+(m=(a)=>a>1?m(a-1)+m(a-2):1)(a)+'\n'+Math.pow(a,2)+'\n'+Math.exp(Math.log(a)+Math.log(b))+'\n'+1E257+'\n'+(T=(u,i=2,l=1-1,m=2)=>l<=u?(p=(o,z=2,s=1-1)=>z<o?p(o,z+1,s+(o%z<1&&z!=o)):s)(i)<1?T(u,i+1,l+1,i):T(u,i+1,l,m):m)(a)

Yêu cầu: Một chức năng mà phải mất hai đầu vào, một số nguyên không âm nvà bất kỳ số mlợi nhuận một chuỗi chứa 0mà không cần dùng 0bất cứ nơi nào trong mã nguồn, sau đó một dòng mới tiếp theo là 0-indexed nthứ số Fibonacci (có thể được 1lập chỉ mục), tiếp bởi một dòng mới, theo sau là nbình phương, theo sau là một dòng mới, tiếp theo là nnhân với mmà không sử dụng *bất cứ nơi nào trong mã nguồn, theo sau là một dòng mới, theo sau là 10^BnơiB là số byte trong mã nguồn, và cuối cùng theo sau là một dòng mới và nth 0-exexed (cũng có thể là1 số nguyên tố -exexed).

Kiểm tra đoạn trích


Bạn có thể tiết kiệm một lượng đáng kể byte bằng cách thay đổi String.fromCharCode(48)thành 1-1. Không phải là nó thực sự quan trọng ;-) (Ngoài ra, có hai số 0 sau đó trong mã nguồn, mà bạn có thể sửa theo cùng một cách)
ETHproductions

1

Trả lời 8 - Thạch

Yêu cầu: Một chức năng mà phải mất hai đầu vào, một số nguyên không âm nvà bất kỳ số mlợi nhuận một chuỗi chứa 0mà không cần dùng 0bất cứ nơi nào trong mã nguồn, sau đó một dòng mới tiếp theo là 0-indexed nthứ số Fibonacci (có thể được 1lập chỉ mục), tiếp bởi một dòng mới, tiếp theo là nbình phương, tiếp theo là một dòng mới, tiếp theo là nnhân mmà không sử dụng *bất cứ nơi nào trong mã nguồn, tiếp theo là một dòng mới, tiếp theo là 10^Bnơi Blà số byte trong mã nguồn, và cuối cùng theo sau là một dòng mới và số nguyên tố -indexed). Không có nội dung nào để tham gia vào các dòng mới được cho phép, nhưng tham gia các nội dung được cho phép.n th 0-exexed (cũng có thể là1

ÆḞṭØDW⁺¤;⁸²¤;×;ȷ25;⁸ÆN¤j⁷

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


Vâng, đây là golf.
Erik the Outgolfer

1

Trả lời 9 - Scala

Yêu cầu : Có hai đầu vào, n(> = 0) và m. Đầu ra 0mà không sử dụng 0hoặc *bất cứ nơi nào trong mã nguồn và không có nội dung để tham gia vào dòng mới. Sau đó, kết quả đầu ra một dòng mới tiếp theo là 1thứ n -indexed số Fibonacci (có thể được 0lập chỉ mục), tiếp theo là một dòng mới, tiếp theo là nbình phương, tiếp theo là một dòng mới, tiếp theo là nnhân m, tiếp theo là một dòng mới, tiếp theo là 10^Bnơi Blà số byte trong mã nguồn, theo sau là một dòng mới và số nguyên tố nth 1-indexed (cũng có thể là 0-exexed), và cuối cùng theo sau là một dòng mới và Số chia chung lớn nhất của n và m.

(n:Int,m:Int)=>{
 val z=1-1;val o=println _;var i=1;var j=z
 o(z)
 o((1 to n).foldLeft(z,1)((a,b)=>(a._2,a._1+a._2))._1)
 o(math.pow(n,2))
 o(List.fill(n)(m).sum)
 o(math.pow(9+1,299))
 while(j!=n){i+=1;if((2 to i-1)forall(i%_!=z))j+=1};o(i)
 o((1 to math.min(n,m)).filter(c=>n%c==z&&m%c==z).last)
}

Dùng thử ở đây

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.