Viết Viết Một máy tính đơn giản mà không cần viết một dòng mã


25

Nó rất dễ:

Tạo một chương trình mà không cần viết một dòng mã. Mã chỉ có thể bao gồm các câu hỏi và câu trả lời Stack Overflow hiện có.

Chương trình sẽ tạo hai số ngẫu nhiên và xuất ra các số

  • thêm vào
  • trừ đi từ
  • nhân với và
  • chia

lẫn nhau.

Quy tắc

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. Bạn không thể sửa đổi mã bạn tìm thấy, với các ngoại lệ sau:

  1. 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 lời gọi phương thức, bằng cách thay đổi, giả sử máy quét.nextInt () thành máy quét.nextLine () và tuyên bố rằng bạn đang thay đổi tên phương thức. Thay đổi phải theo định nghĩa hoặc tham chiếu đến cùng một thực thể.). Giải pháp vẫn hoạt động nếu các biến, hàm hoặc phương thức sẽ được đổi tên lại.

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

  3. 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ụ: nhập câu lệnh cho Java và Python, sử dụng câ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 nhập cho bạn, bạn có thể di chuyển chúng lên đầu mã.

  4. 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.

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

  6. Bạn không thể lấy đoạn trích đoạn (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ộ nội dung) 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. Bạn phải sử dụng đoạn trích được đăng trước khi thử thách này được bắt đầu.

Cuộc thi phổ biến, vì vậy, nhiều người chiến thắng nhất!

Hạn chót

Tôi sẽ chấp nhận bài nộp có nhiều phiếu nhất vào cuối tháng 8, 6.


Xin chào michael, và chào mừng đến với trao đổi ngăn xếp PPCG! Một trong những quy tắc cho các thách thức mã trên trang web này là chúng phải có điều kiện chiến thắng khách quan, vì vậy bạn nên chọn điều kiện như vậy cho điều này. Đây là một thách thức tương tự có thể cung cấp cho bạn một số ý tưởng.
isaacg

Xin chào @isaacg, cảm ơn bạn. Tôi sẽ xem và xóa / chỉnh sửa cái này.
chris p thịt xông khói

@isaacg, hy vọng nó ổn bây giờ. Bạn có nhiều kinh nghiệm hơn tôi ở đây, thời hạn quá gần / xa?
chris p thịt xông khói

Đó là điều tốt hơn nhiều. Hạn chót là quá gần, tuy nhiên, tiêu chuẩn là khoảng 1-2 tuần.
isaacg

OK cảm ơn lần nữa.
chris p thịt xông khói

Câu trả lời:


17

J, 7 câu hỏi / câu trả lời, không có gì về J

echo a%b[echo a*b[echo a-b[echo a+b[b=:?2147483647 [a=:?2147483647

Đó là một cách khá rẻ tiền để làm điều đó, tôi sẽ không nói dối. Dưới đây là các câu trả lời SO tôi đã sử dụng:

Tôi đổi tên biến foothành abtrong mã.


Tôi tưởng tượng thực hiện phương pháp này sẽ khó hơn nhiều trong APL, nhưng vẫn có cơ hội tốt để tự tìm các ký tự trong một khối mã.
JohnE

1
@ John Đó là lợi thế của tiếng ồn ASCII!
Gây tử vong vào

1
Tôi thích câu trả lời này, nhưng câu hỏi nêu rõ "Bạn không thể lấy đoạn trích" - điều này đang làm, phải không?
khai mạc

3
@unclemeat "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ộ". Đối với tôi có vẻ như nếu có nhiều khối mã trong một bài đăng, bạn có thể chỉ lấy một khối, nhưng bạn không thể tham gia một khối mã.
Gây tử vong

Tất cả những thứ này đến từ các khối mã hoàn chỉnh - hãy xem các nguồn.
Sean Latham

7

Tài liệu tham khảo Python 2, 7 6

Tạo giải pháp này không dễ như vẻ ngoài của nó. Tìm kiếm Stack Overflow cho mã cụ thể là khó khăn, vì các biểu tượng không được bao gồm trong tìm kiếm.

Tôi đã tìm ra cách để làm điều này với các số ngẫu nhiên 2000 bit, sử dụng một câu trả lời khác thay cho Ref # 1, nhưng tôi không thể kiểm tra nó trên các môi trường trực tuyến tôi sử dụng vì nó liên quan đến getrandbits, gọi os.urandomcho tôi NotImplementedError, Vì vậy, tôi đã đi theo cách này thay thế. Điều này thực sự có thể được sử dụng ngay bây giờ, với TIO.

Dùng thử trực tuyến

#assumed to be loaded
import random

n1 = []
n1.append(random.randint(1, 100))

n2 = []
n2.append(random.randint(1, 100))

r1 = map(sum, zip(n1, n2))
r2 = map(lambda t: t[0] - t[1] ,zip(n1, n2))

ab = [n1[i]*n2[i] for i in range(len(n1))]

r1, last = r1[0], r1[-1]
r2, last = r2[0], r2[-1]
ab, last = ab[0], ab[-1]
n2, last = n2[0], n2[-1]

print r1
print r2
print ab
ab = float(ab) / n2
ab = float(ab) / n2
print ab

Tài liệu tham khảo

import random được cho là được tải, vì câu hỏi cho biết điều đó được cho phép.

  1. lst = []lst.append(random.randint(1, 100))- Tại đây

  2. map(sum, zip(r1, r2)), map(lambda t: t[0] - t[1] ,zip(r1, r2)), r1, Và r2- đây

  3. result = float(a) / b- Đây

  4. ab = [a[i]*b[i] for i in range(len(a))]- Đây

  5. first, last = some_list[0], some_list[-1]- Đây

  6. print x- Đây

Đổi tên

  1. lstđược đổi tên thành n1n2(Ref # 1: Tôi đã sử dụng toàn bộ mã hai lần)

  2. r1r2đổi tên thành n1n2(Ref # 2: Tôi đã sử dụng các biến riêng biệt sau đó để gán các bản đồ và phân chia trong bản in cuối cùng, vì câu trả lời bao gồm chúng.)

  3. resultađổi tên thành abbđổi tên thành n2(Số 3)

  4. abđổi tên thành n1n2(Tham khảo số 4)

  5. firstsome_listcả hai đổi tên thành r1, r2, ab, hoặc n2, tùy thuộc vào dòng. (Tham khảo số 5: Tôi đã sử dụng bốn lần này. Lưu ý rằng chỉ có nhiệm vụ đầu tiên được sử dụng, vì vậy tôi không đổi tên last)

  6. xđược đổi tên thành r1, r2hoặc ab, tùy thuộc vào dòng. (Tham khảo số 6)


1

Số thập phân , 2 tài liệu tham khảo

82D82D00D30001D30041D301212010D301200D30001D30042D301212010D301200D30001D30043D301212010D301200D30001D30044D30122

Các lệnh được sử dụng:

  • 0 SET (chỉ mục ngăn xếp mặc định)
  • 1 ĐẨY
    • 2 CHAR
  • 2 POP
  • 3 Tôi / O
    • 00 trùng lặp ngăn xếp
    • 01 từ ngăn xếp đến STDOUT
  • 4 MÔN TOÁN
    • 1 THÊM VÀO
    • 2 ĐĂNG KÝ
    • 3 NHÂN
    • 4 CHIA
  • 8 ĐƯỢC XÂY DỰNG TRONG
    • 2 đẩy số nguyên ngẫu nhiên lên ngăn xếp

Phiên bản giải thích:

82D       ; push random INT    - stack contains {r1}
82D       ; push random INT    - stack contains {r1, r2}

00D300    ; duplicate stack[0] - stack contains {r1, r2, r1}
01D300    ; duplicate stack[1] - stack contains {r1, r2, r1, r2}
41D       ; math +             - stack contains {r1, r2, r1+r2}
301       ; print from stack to output
2         ; pop                - stack contains {r1, r2}

12010D3012; print newline

00D300    ; duplicate stack[0] - stack contains {r1, r2, r1}
01D300    ; duplicate stack[1] - stack contains {r1, r2, r1, r2}
42D       ; math -             - stack contains {r1, r2, r1-r2}
301       ; print from stack to output
2         ; pop                - stack contains {r1, r2}

12010D3012; print newline

00D300    ; duplicate stack[0] - stack contains {r1, r2, r1}
01D300    ; duplicate stack[1] - stack contains {r1, r2, r1, r2}
43D       ; math *             - stack contains {r1, r2, r1*r2}
301       ; print from stack to output
2         ;                    - stack contains {r1, r2}

12010D3012; print newline

00D300    ; duplicate stack[0] - stack contains {r1, r2, r1}
01D300    ; duplicate stack[1] - stack contains {r1, r2, r1, r2}
44D       ; math /             - stack contains {r1, r2, r1/r2}
301       ; print from stack to output

Nguồn:

Hãy thử trực tuyến! Bạn sẽ cần phải tắt bộ đệm đầu ra nếu nó không tự động bị tắt.

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.