Băng keo có thể sửa bất cứ thứ gì [đóng]


13

Tổng quat

Thử thách này được lấy cảm hứng từ bài đăng StackOverflow Meta này . Trong đó, @hakre nói:

Tôi đã thấy một dự án thực sự được viết bởi Stackoverflow (một bản sao noob cùng với SO ở đây và SO ở đó), thông thường không bao giờ được thực hiện dẫn đến việc chấm dứt quyền theo CC. (sic)

Nhiệm vụ của bạn là tạo ra chương trình thú vị nhất mà bạn có thể - mà không bao giờ viết một dòng mã nào. Bạn chỉ có thể sử dụng mã đã được viết cho bạn, cả trong câu hỏi và câu trả lời từ StackOverflow. Tất cả những gì bạn có thể làm là dán băng keo lại với nhau một cách tốt nhất có thể. Và tất nhiên, điều rất quan trọng là chúng tôi cung cấp sự ghi nhận phù hợp để chúng tôi không bị chấm dứt quyền lợi của mình.


Quy tắc

  1. Bạn phải bao gồm các liên kết đến các câu hỏi / câu trả lời bạn đã sử dụng trong câu trả lời của mình.
  2. Bạn không thể sửa đổi mã bạn tìm thấy, với các ngoại lệ sau:

    a. Bạn có thể đổi tên các biến, hàm và phương thức. (Điều này không có nghĩa là bạn có thể thay đổi một phương pháp gọi , bằng cách thay đổi, nói scanner.nextInt()đến scanner.nextLine()và tuyên bố rằng bạn đang thay đổi một tên phương pháp. Sự thay đổi phải nằm trong định nghĩa hoặc tham chiếu đến cùng một thực thể.)

    b. Bạn có thể điều chỉnh thụt đầu dòng thích hợp.

    c. Bạn có thể giả định rằng các mô-đun thích hợp được tải để đoạn mã hoạt động. (ví dụ: các importcâu lệnh cho Java và Python, các usingcâu lệnh cho C # và C ++ và tương đương của chúng trong tất cả các ngôn ngữ) Nếu đoạn mã bao gồm imports cho bạn, bạn có thể di chuyển chúng lên đầu mã.

    d. Nếu ngôn ngữ yêu cầu mã phải ở một dạng thân phương thức nào đó để thực thi (ví dụ: public static void main(String[] args)đối với Java, static int Main(string[] args)đối với C #, v.v.), bạn có thể bọc mã của mình theo phương thức thích hợp. Nhưng nội dung của phương pháp chính đó vẫn không thay đổi.

  3. Bạn phải cung cấp một danh sách rõ ràng của bất kỳ biến / phương thức / hàm / lớp đổi tên được thực hiện.

  4. Bạn không thể lấy đoạn trích đoạn (có nghĩa là nếu bạn lấy một khối mã từ một bài đăng, bạn sẽ lấy toàn bộ)
  5. Cung cấp một mô tả ngắn gọn về những gì mã làm cho những người không thân mật với ngôn ngữ bạn đang sử dụng.
  6. Cuộc thi phổ biến, vì vậy, nhiều người chiến thắng nhất!

Ví dụ nhàm chán năm phút (Python 3)

Mô tả : Đọc một loạt các tệp nhật ký từ thư mục hiện tại và chọn ngẫu nhiên các dòng trong đó (thú vị, phải không? Điều này hoàn toàn sẽ giành chiến thắng trong một cuộc thi phổ biến)

Nguồn

import glob
import random

for file in glob.glob('log-*-*.txt'):
    # Etc.
    with open(file) as f:
        content = f.readlines()
        # shuffle the list in place 
        random.shuffle(content)

        # print it
        print(content)

Sửa đổi pháp lý

  • Đổi tên fnameđể filetừ liên kết 1
  • Đổi tên bđể contenttừ liên kết 2

Phân phối

  1. /programming//a/3277516/1435657
  2. /programming//a/16737991/1435657
  3. /programming//a/4918520/1435657

8
Tôi thực sự thích ý tưởng này, nhưng tôi nghĩ rằng câu hỏi này sẽ mang lại lợi ích vô cùng lớn từ việc giới hạn phạm vi cho một nhiệm vụ cụ thể. Điều đó sẽ a) truyền cảm hứng cho sự sáng tạo nhiều hơn bởi vì bạn không thể sao chép bất cứ điều gì và b) nó sẽ bỏ ngỏ khả năng sử dụng lại loại câu hỏi (thú vị) này sau này trong một bối cảnh khác. Nếu bạn chỉ để nó là "làm bất cứ điều gì bạn muốn", tất cả các câu hỏi tiếp theo như thế này sẽ là trùng lặp. Tôi sợ vì nó đứng, tôi phải bỏ phiếu gần như "quá rộng" vì nó có thể là những câu hỏi thú vị trong tương lai.
Martin Ender

2
Tôi nên thêm vào, không tôi không muốn điều này trở thành trò troll mã tiếp theo, nơi mọi người đăng một "Thêm hai số", "Chia chuỗi này", với thẻ "mã hóa băng keo". Tôi nghĩ rằng chúng ta có thể xử lý điều này sáng tạo hơn thế. Tôi chỉ muốn để lại một số chỗ cho những diễn giải khác về loại cạnh tranh nguồn hạn chế này.
Martin Ender

1
@ m.buettner Tôi cũng không chắc rằng CodeGolf.SE nhất thiết sẽ được hưởng lợi từ rất nhiều câu hỏi như thế này, vì những lý do tương tự bạn đề cập: tại sao lại "tách một chuỗi bằng mã SO", "lấy số ngẫu nhiên từ 1- 100 sử dụng mã SO ", v.v. Nhưng đó chỉ là ý kiến ​​của tôi. Tôi ở xa một CodeGolf.SE pro. :)
asteri

3
Bây giờ tôi sẽ xóa thẻ tùy chỉnh ngẫu nhiên vì nhu cầu về nó chưa được thiết lập (và rất có thể nó sẽ không cần thiết và không có giá trị).
asteri

1
Tôi đồng ý rằng chúng ta cần cẩn thận với việc tràn ngập PPCG với những câu hỏi như thế này, chỉ vì nó thú vị và mới lạ. Nhưng tôi nghĩ rằng một vài câu hỏi thực sự khác nhau có thể đến từ đây ... như một câu hỏi dựa trên toán học, dựa trên đồ họa, một câu hỏi sử dụng tính năng đánh gôn bằng mã và một thách thức đa âm có thể. Do đó, tôi muốn phạm vi bị giới hạn. Đối với những người chỉ sao chép thử thách mà không có gì đáng kể, tôi nghĩ rằng trách nhiệm của cộng đồng là phải nghiêm khắc hơn một chút trong việc "đóng cửa như một bản sao" khi nói đến các loại thử thách mới.
Martin Ender

Câu trả lời:


8

C - một máy tính hoạt động

Hãy bắt đầu điều này.
Thật sự rất khó để tìm thấy các phần của chương trình C không phải là toàn bộ chương trình. Tôi gặp rắc rối nhất với việc khai báo.

// http://stackoverflow.com/a/2911978 Block #1 (changed i to a)
static int a = 10;
// http://stackoverflow.com/a/2911978 Block #1 (changed i to b)
static int b = 10;
// http://stackoverflow.com/a/442647 Block #1 (changed c to op)
unsigned char op = (unsigned char)-1;
// http://stackoverflow.com/q/3711048 Inline block #1
int main()
// http://stackoverflow.com/a/14902422 Inline block #1
{
// http://stackoverflow.com/q/217074 Inline block #2 (changed i to a)
scanf("%d", &a)
// http://stackoverflow.com/a/23353870 Inline block #2
;
// http://stackoverflow.com/q/217074 Block #2 (changed c to op)
scanf("%c", &op)
// http://stackoverflow.com/a/23353870 Inline block #2
;
// http://stackoverflow.com/q/217074 Inline block #2 (changed i to b)
scanf("%d", &b)
// http://stackoverflow.com/a/23353870 Inline block #2
;
// http://stackoverflow.com/a/4173188 Block #2
int result = 0;
result = (op == '*') ? a * b : result;
result = (op == '/') ? a / b : result;
result = (op == '+') ? a + b : result;
result = (op == '-') ? a - b : result;
printf("%d",result);
// http://stackoverflow.com/a/3245525 Block #2
printf("\n");  /* prints newline */
// http://stackoverflow.com/q/4138649 Inline block #1
return 0;
// http://stackoverflow.com/a/14902422 Inline block #2
}

Thực hiện một hoạt động tích hợp đơn giản như 3+151hoặc 41/2trên stdin và đưa kết quả ra thiết bị xuất chuẩn.


1
Thú vị sử dụng lại cùng một khối mã và đổi tên biến hai lần. Tôi thậm chí không nghĩ về điều đó! +1
asteri
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.