Sếp của bạn vừa gửi email cho bạn một danh sách 12 nhiệm vụ lập trình mà anh ta cần thực hiện càng sớm càng tốt. Các nhiệm vụ đủ đơn giản nhưng ông chủ của bạn, là một ông trùm phần mềm trẻ tuổi bị mạng xã hội mê hoặc, khẳng định rằng các giải pháp của bạn có thể phù hợp trong một tweet trên Twitter .
Điều này có nghĩa là bạn chỉ có mã có giá trị 140 byte để giải quyết tất cả các tác vụ, trung bình là 11,67 byte cho mỗi tác vụ. (Có, Twitter đếm các ký tự nhưng ông chủ của bạn đặc biệt nói byte.)
Bạn nhận ra rằng không có cách nào để giải quyết tất cả 12 nhiệm vụ trong 140 byte nhưng bạn nghi ngờ rằng ông chủ của bạn sẽ không thực sự kiểm tra tất cả các giải pháp của bạn. Vì vậy, bạn tiến hành giải quyết càng nhiều nhiệm vụ càng tốt, bỏ qua một số trong số chúng. Suy nghĩ của bạn là nó không quan trọng mà tập hợp các nhiệm vụ bạn hoàn thành, nó chỉ có giá trị nếu tập hợp con là càng lớn càng tốt .
Bạn có thể hoàn thành bao nhiêu nhiệm vụ?
Thử thách
Viết tối đa 12 chương trình khác nhau, mỗi chương trình sẽ giải quyết chính xác một trong 12 nhiệm vụ được liệt kê dưới đây. Tổng tích lũy độ dài của các chương trình này không được vượt quá 140 byte
Ngoài ra, bạn có thể viết một chương trình duy nhất dài không quá 140 byte, lấy một số nguyên từ 1 đến 12 và (lý tưởng) tiến hành giải quyết nhiệm vụ tương ứng, lấy thêm đầu vào khi cần thiết. Không phải tất cả các nhiệm vụ cần phải làm việc, nhưng chỉ những nhiệm vụ được tính vào điểm số của bạn. Nhiệm vụ không hoạt động được phép lỗi hoặc làm bất cứ điều gì khác.
Trong cả hai trường hợp, "chương trình" trên thực tế có thể là một hàm lấy đầu vào làm đối số hoặc lời nhắc cho nó và in hoặc trả về đầu ra. Vì vậy, ví dụ, bạn có thể viết một hàm 140 byte trông giống như f(taskNumber, taskInput)
hoặc bạn có thể viết các đoạn mã riêng cho từng tác vụ, một số là các hàm và một số là các chương trình chính thức.
Những chi tiết khác:
Tất cả các mã phải được viết bằng cùng một ngôn ngữ.
Như thường lệ, đầu vào phải đến từ stdin, dòng lệnh, đối số hàm hoặc bất cứ điều gì thông thường đối với ngôn ngữ của bạn. Đầu ra được in ra thiết bị xuất chuẩn hoặc ngôn ngữ thay thế gần nhất của ngôn ngữ của bạn hoặc được trả về trong một loại thích hợp.
Một số lượng hợp lý của định dạng đầu vào là tốt; ví dụ trích dẫn xung quanh chuỗi hoặc
\n
thay vì dòng mới thực tế.Đầu ra phải chính xác là những gì được gọi cho không có định dạng hoặc khoảng trắng bên ngoài. Ngoại lệ là một dòng mới duy nhất tùy chọn.
Mã chỉ chạy trong môi trường REPL không cấu thành chương trình hoặc chức năng.
Bạn không thể viết nhiều chương trình giải quyết nhiều nhiệm vụ. Đó là một chương trình (lý tưởng) giải quyết tất cả các nhiệm vụ hoặc (lý tưởng) 12 chương trình mà mỗi chương trình giải quyết một nhiệm vụ.
Đăng một giải pháp nhiệm vụ mà bạn không viết hoặc chỉ sửa đổi một chút là không được phép mà không quy kết cho tác giả ban đầu, và lý tưởng nhất là cũng được phép. Nếu câu trả lời của bạn chủ yếu bao gồm các giải pháp ngắn nhất từ tất cả các câu trả lời khác thì đó phải là một wiki cộng đồng.
Chấm điểm
Trình gửi hoàn thành hầu hết các nhiệm vụ là người chiến thắng. Nếu hai bài nộp kết hợp, bài nào có ít byte nhất sẽ thắng. Nếu số byte được gắn, bài nộp trước đó sẽ thắng. Câu trả lời wiki cộng đồng không được phép giành chiến thắng.
Hãy chắc chắn để cho chúng tôi biết những nhiệm vụ bạn đã giải quyết, không chỉ là bao nhiêu!
Cược chấp cho người không chơi gôn:
Có khả năng thách thức này sẽ bị chi phối bởi các ngôn ngữ chơi gôn . Nhiều ngôn ngữ có thể gặp khó khăn khi giải quyết một hoặc hai tác vụ trong phạm vi 140 byte. Do đó, bạn có thể gửi câu trả lời không cạnh tranh trong đó giới hạn là 3 tweet, tức là 420 byte. Tất cả các quy tắc khác vẫn giữ nguyên.
Nhiệm vụ
Nhiệm vụ 1 - Ba số có thể tạo thành một tam giác?
Lấy ba số nguyên dương và đưa ra một giá trị trung thực / sai lệch cho biết liệu ba dòng có độ dài đó có thể tạo thành một hình tam giác hay không . Bạn không thể cho rằng các số đến theo thứ tự cụ thể.
Ví dụ thật (một trên mỗi dòng):
20 82 63
1 1 1
2 3 4
1 2 2
Ví dụ giả mạo:
6 4 10
171 5 4
1 1 2
1 2 3
Nhiệm vụ 2 - Gần nhất với một triệu
Cho một chuỗi có đúng 7 chữ số thập phân (0-9), sắp xếp lại chúng để có được một số càng gần càng tốt với một triệu. Đó là, abs(1000000 - rearrangedNumber)
nên được giảm thiểu.
In hoặc trả về số kết quả dưới dạng một số nguyên, không phải là một chuỗi (vì vậy không nên có các số 0 đứng đầu trừ khi đó là tiêu chuẩn cho ngôn ngữ của bạn).
ví dụ: một đầu vào 9034318
nên dẫn đến 984331
(và không 1033489
).
2893984
nên trở thành 2348899
.
0001000
nên trở thành 1000000
.
0000020
nên trở thành 200000
.
Nhiệm vụ 3 - Trình mô phỏng bàn phím đơn giản
Lấy một chuỗi các chữ cái thường (az), dấu cách và dấu ngoặc nhọn <>
. Đọc từ trái sang phải, chuỗi này biểu thị các phím được nhấn trên bàn phím tiêu chuẩn trong khi trình soạn thảo văn bản trống ban đầu được mở. Các chữ cái và không gian tương ứng với các phím thông thường của chúng nhưng <
tương ứng với phím mũi tên trái và >
phím mũi tên phải, cả hai đều di chuyển con trỏ khi nhấn.
<
di chuyển con trỏ sang trái một ký tự hoặc không làm gì nếu con trỏ ở đầu chuỗi.
>
di chuyển con trỏ đúng một ký tự hoặc không làm gì nếu con trỏ ở cuối chuỗi.
Xuất chuỗi có trong trình soạn thảo văn bản một khi tất cả các phím trong chuỗi đầu vào đã được nhấn. Xuất ra mã thoát để di chuyển con trỏ không được phép.
Sẽ luôn có ít nhất một ký tự phím mũi tên không liên kết trong đầu vào.
ví dụ đầu vào ui<<q>>ck <<<<<<the<<<<>>> >>>>>>>>brown x<o<f
sẽ mang lại the quick brown fox
.
op<<l>>t<<<lam>>>>>>imi<<<><>>>zer<<<<<<<<<<<<<<<<<<>>><>m
nên cho llammoptimizer
.
e< <c<b<a
nên cho abc e
.
<<<>><><<><toast>><<>><><<>><
nên cho toast
.
Nhiệm vụ 4 - Chữ cái PHIM
Trong nhiều phông chữ, 6 của chữ hoa chữ bảng chữ cái tiếng Anh bao gồm toàn bộ các đường ngang và dọc: E
, F
, H
, I
, L
, và T
. Chúng tôi sẽ gọi những chữ cái này.
Lấy một chuỗi các chữ cái in hoa (AZ) và đếm số lượng dòng trong các chữ cái FILTHE, xuất ra số nguyên kết quả.
E
, F
, H
, I
, L
, Và T
có 4, 3, 3, 3, 2, và 2 dòng tương ứng.
ví dụ: GEOBITS
có 4 + 3 + 2 = 9 dòng một phần của các chữ cái FILTHE (for .E..IT.
), vì vậy đầu ra phải là 9
.
ABCDEFGHIJKLMNOPQRSTUVWXYZ
nên đầu ra 17
.
ABCDGJKMNOPQRSUVWXYZ
nên đầu ra 0
.
FILTHYLINESINLETTERS
nên đầu ra 39
.
Nhiệm vụ 5 - Alex đệ quy A.
Người điều hành Alex A. của chúng tôi có một chữ cái đầu tiên khá bí ẩn, "A".
Bây giờ tôi không chắc chắn, nhưng tôi nghĩ A.
là viết tắt của .A xelA
. Và tôi cũng khá chắc chắn rằng .A
ở đó lén lút đại diện cho Alex A.
.
Do đó, để có được tên đầy đủ của Alex, chúng ta phải mở rộng ra A.
và .A
:
Alex A. -> Alex [A.] -> Alex [.A xelA] -> Alex .A xelA -> Alex [.A] xelA -> Alex [Alex A.] xelA -> Alex Alex A. xelA -> etc.
Có chương trình của bạn lấy một số nguyên không âm và mở rộng Alex A.
nhiều lần, xuất ra chuỗi kết quả.
Vì vậy,
0
trở thành Alex A.
,
1
trở thành Alex .A xelA
,
2
trở thành Alex Alex A. xelA
,
3
trở thành Alex Alex .A xelA xelA
,
4
trở thành Alex Alex Alex A. xelA xelA
,
5
trở thành Alex Alex Alex .A xelA xelA xelA
,
và như vậy.
(Tôi đã làm điều này bởi vì tôi cảm thấy tồi tệ vì vô tình để Alex rời khỏi thử thách cống nạp mod của tôi .: P)
Nhiệm vụ 6 - Xoay Numpad
Lấy một số nguyên từ 1 đến 9, bao gồm (bạn có thể lấy nó dưới dạng chuỗi). Xuất ra hình vuông 3 × 3 chữ số
789
456
123
xoay theo gia số 90 ° sao cho chữ số đầu vào xuất hiện ở bất cứ đâu trên hàng trên cùng. Khi 5
đầu vào là bất kỳ phép quay nào là đầu ra hợp lệ vì 5
không thể xoay lên trên cùng.
ví dụ: khi nào 3
là đầu vào, cả hai
963
852
741
và
321
654
987
là đầu ra hợp lệ.
Đối với đầu vào 4
, chỉ
147
258
369
là đầu ra hợp lệ.
Nhiệm vụ 7 - Chia số thành hàng chục
Lấy một chuỗi các chữ số thập phân không trống (0-9) và đưa ra một giá trị trung thực nếu nó có thể được chia thành các phần liền kề trong đó tất cả các chữ số trong mỗi phần tổng hợp chính xác đến 10. Nếu điều này là không thể, hãy đưa ra một giá trị giả.
ví dụ: 19306128
có thể được chia ra như thế 19|3061|28
, tất cả các phần tổng hợp thành 10 (1 + 9, 3 + 0 + 6 + 1, 2 + 8), do đó, nên xuất một giá trị trung thực.
Ví dụ thật (một trên mỗi dòng):
19306128
073
730
0028115111043021333109010
2222255
Ví dụ giả mạo:
6810410
9218
12341
5222225
000
Nhiệm vụ 8 - Đồng hồ vuông
Đi trong một chuỗi multiline có kích thước phù hợp.
Đầu ra 12
nếu đầu vào là
_ _
| | |
|_ _|
Đầu ra 3
nếu đầu vào là
_ _
| |_|
|_ _|
Đầu ra 6
nếu đầu vào là
_ _
| | |
|_|_|
Đầu ra 9
nếu đầu vào là
_ _
|_| |
|_ _|
Không có trường hợp đầu vào khác.
Nhiệm vụ 9 - Khung nghệ thuật
Đi trong một chuỗi 4 byte chứa một trong mỗi khung trái (
, [
, {
, và <
trong bất kỳ thứ tự.
Thêm dấu ngoặc phải tương ứng để chuỗi dài 8 byte và có đường đối xứng dọc. ví dụ [<({
trở thành [<({})>]
.
Sau đó đảo ngược mọi dấu ngoặc trong chuỗi này. ví dụ [<({})>]
trở thành ]>)}{(<[
.
Xuất chuỗi ngoặc 8 byte ban đầu với phiên bản đảo ngược ở trên và dưới trên các dòng riêng biệt.
Vì vậy, đầu ra cuối cùng cho đầu vào [<({
sẽ là
]>)}{(<[
[<({})>]
]>)}{(<[
Tương tự, đầu ra cho <({[
nên
>)}][{(<
<({[]})>
>)}][{(<
Đầu vào (<<[
không hợp lệ vì {
thiếu và có thêm <
.
Nhiệm vụ 10 - Perimiterize
Lấy một lưới văn bản hình chữ nhật (nhỏ nhất 1 × 1) được làm bằng .
'đại diện cho không gian trống và X
' đại diện cho gạch đặc. Các tế bào vượt ra ngoài giới hạn lưới được coi là trống rỗng. Bạn có thể giả sử mỗi trong số 4 hàng và cột cạnh lưới sẽ chứa ít nhất một X
.
ví dụ: đầu vào hợp lệ có thể là:
XXX.....X.....
X..X...X.X....
XXX.....X....X
Xuất ra một lưới văn bản hình chữ nhật khác trong đó mọi ô trống lân cận một X
trực giao hoặc đường chéo, bao gồm cả các ô bên ngoài lưới đầu vào , sẽ trở thành o
. Vì vậy, về cơ bản, một perimiter của o
'được vẽ xung quanh tất cả các phần của gạch rắn. Lưới mới không nên lớn hơn nó phải có.
Vì vậy, đầu ra của ví dụ trên sẽ là:
ooooo...ooo.....
oXXXoo.ooXoo....
oXooXo.oXoXo.ooo
oXXXoo.ooXoo.oXo
ooooo...ooo..ooo
Tương tự, đầu ra của đầu vào XXX..X.X
phải là
oooooooooo
oXXXooXoXo
oooooooooo
và xuất
oooooooooo.
oXXXooXoXo.
oooooooooo.
sẽ không hợp lệ vì cột ngoài cùng bên phải trống là không cần thiết.
Bạn có thể sử dụng bất kỳ 3 biệt ASCII in ký tự thay .
, X
và o
.
Nhiệm vụ 11 - Quảng trường Sator
Xuất hình vuông Sator :
SATOR
AREPO
TENET
OPERA
ROTAS
Bất kỳ chữ cái nào cũng có thể là chữ thường hoặc chữ hoa, vì vậy
SatOR
aRePO
tenet
OPERa
RoTaS
cũng là đầu ra hợp lệ.
Không có đầu vào.
Nhiệm vụ 12 - Tweet chính
Không có đầu vào nhưng xuất ra một chuỗi ASCII có thể in 140 byte có chứa ít nhất một trong số 95 ký tự ASCII có thể in được. (Vì vậy, 45 ký tự sẽ được nhân đôi.)
Tổng các mã ký tự của tất cả 140 byte trong chuỗi này phải là một thủ Sophie Germain , tức là một số nguyên tố p
như vậy mà 2p+1
cũng là số nguyên tố. Mã ký tự cho không gian là 32, 33 cho !
, 34 cho "
, và lên đến 126 cho ~
. Tổng có thể được tính bằng Python là sum(map(ord, myString))
.
Một ví dụ đầu ra là:
! "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~STUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~d
Tổng mã ký tự là số nguyên tố 12203 có số nguyên tố an toàn tương ứng là 24407.
import
s? Giả sử tôi viết 5 hàm trong đó 2 hàm cần cùng một mô-đun (ví dụ import Math
), số này có được tính hai lần không?