🐋🚂🍇🐖🅰️➡🚂🍇🍊⬅🐕1🍇🍎1🍉🍮s 0🔂k⏩0🐕🍇🍦t➖🐕k🍮r t🔂i⏩1 t🍇🍊😛🚮t i 0🍇🍮➕r i🍉🍉🍮➕s✖r🅰️k🍉🍎➗s🐕🍉🍉
Hãy thử trực tuyến!
-3 byte bằng cách sử dụng "ít hơn hoặc bằng 1" thay vì "nhỏ hơn 2" vì biểu tượng cảm xúc "nhỏ hơn" có mã hóa UTF-8 khá dài. Cũng thực hiện t
đóng băng để tắt tiếng cảnh báo mà không ảnh hưởng đến số byte.
Mở rộng lớp (số nguyên) bằng một phương thức có tên. Bạn có thể viết một chương trình đơn giản lấy một số từ đầu vào, gọi vào số đó và in kết quả như thế này:
🏁🍇
🍦str🔷🔡😯🔤Please enter a number🔤
🍊🍦num🚂str 10🍇
😀🔡🅰️num 10
🍉🍓🍇
😀🔤Learn what a number is, you moron!🔤
🍉
🍉
Phần này có thể được chơi rất nhiều bằng cách bỏ qua các thông báo và xử lý lỗi, nhưng nó không được bao gồm trong điểm số, vì vậy tôi thích hiển thị nhiều tính năng hơn của Biểu tượng cảm xúc thay vào đó, đồng thời cải thiện khả năng đọc trên đường đi.
Bị đánh cắp
🐋🚂🍇
🐖🅰️➡🚂🍇
🍊◀️🐕2🍇
🍎1
🍉
🍮sum 0
🔂k⏩0🐕🍇
🍦nmk➖🐕k
🍮sig nmk
🔂i⏩1 nmk🍇
🍊😛🚮nmk i 0🍇
🍮➕sig i
🍉
🍉
🍮➕sum✖sig🅰️k
🍉
🍎➗sum🐕
🍉
🍉
Giải trình
Lưu ý: rất nhiều lựa chọn biểu tượng cảm xúc không có nhiều ý nghĩa trong biểu tượng cảm xúc 0,5. Đó là 0.x, sau tất cả. 0,6 sẽ khắc phục điều này.
Biểu tượng cảm xúc là ngôn ngữ lập trình hướng đối tượng bao gồm các tổng quát, giao thức, tùy chọn và bao đóng, nhưng chương trình này không sử dụng các bao đóng và tất cả các tổng quát và giao thức có thể được coi là ẩn, trong khi tùy chọn duy nhất xuất hiện trong sơ khai I / O.
Chương trình chỉ hoạt động trên một vài loại: là loại số nguyên, là loại chuỗi và là loại phạm vi. Một số booleans (👌) cũng xuất hiện, nhưng chúng chỉ được sử dụng trong điều kiện. Booleans có thể lấy giá trị hoặc, tương ứng với đúng và sai, tương ứng.
Hiện tại không có toán tử nào trong Biểu tượng cảm xúc, do đó, phép cộng và các phép toán khác thường là toán tử được triển khai dưới dạng hàm, làm cho các biểu thức sử dụng ký hiệu tiền tố một cách hiệu quả . Các nhà khai thác cũng được lên kế hoạch trong 0,6.
Trước tiên hãy giải quyết chương trình thử nghiệm.
🏁
Đây là khối, có thể được so sánh với chính từ các ngôn ngữ khác.
🍇 ... 🍉
Nho và dưa hấu khai báo khối mã trong biểu tượng cảm xúc.
🍦str🔷🔡😯🔤Please enter a number🔤
Điều này tuyên bố một tên "đóng băng" được đặt tên str
và đặt giá trị của nó thành một chuỗi mới được tạo bằng bộ khởi tạo (hàm tạo), lấy một dấu nhắc làm chuỗi và sau đó nhập một dòng từ người dùng. Tại sao sử dụng đông lạnh thay vì một biến? Nó sẽ không thay đổi, vì vậy một biến sẽ phát ra cảnh báo.
🍊🍦num🚂str 10
Hãy phá vỡ nó. 🚂str 10
gọi phương thức on trên str
đóng băng với đối số 10. Theo quy ước, các phương thức được đặt tên với tên của một loại chuyển đổi đối tượng thành loại đó. 10 là cơ sở để sử dụng cho chuyển đổi số nguyên. Phương pháp này trả về một tùy chọn , 🍬🚂
. Tùy chọn có thể chứa một giá trị của loại cơ sở hoặc hư vô,. Khi chuỗi không chứa số, được trả về. Để sử dụng giá trị, người ta phải hủy tùy chọn bằng cách sử dụng, điều này sẽ gây ra lỗi thời gian chạy nếu giá trị là. Vì vậy, đó là một thực hành tốt để kiểm tra hư vô trước khi mở ra một tùy chọn. Trên thực tế, nó rất phổ biến đến nỗi Emojicode có một tốc ký cho điều đó. Thông thường, 🍊
là "nếu".🍊🍦 variable expression
có nghĩa là: đánh giá biểu thức. Nếu tùy chọn chứa hư vô, điều kiện ước tính là (sai). Mặt khác, một tên variable
được đóng băng được tạo ra với giá trị không được bao bọc của tùy chọn và điều kiện ước tính là 👍, (đúng). Do đó, trong sử dụng bình thường, 🍇 ... 🍉
khối theo điều kiện được nhập.
😀🔡🅰️num 10
Là phương thức mà mã chính thêm vào 🚂 bằng cách sử dụng tính toán số lượng phân vùng. Điều này gọi trên phần num
đông lạnh mà chúng ta đã khai báo trong điều kiện và chuyển đổi kết quả thành một chuỗi bằng cách sử dụng cơ sở 10 theo phương pháp. Sau đó, in kết quả.
🍓🍇 ... 🍉
Có nghĩa là "khác", vì vậy khối này được nhập khi người dùng không nhập đúng số.
😀🔤Learn what a number is, you moron!🔤
In chuỗi ký tự.
Bây giờ, hãy nhìn vào chương trình chính. Tôi sẽ giải thích phiên bản vô văn hóa; phiên bản chơi gôn đã loại bỏ khoảng trắng và các biến được đổi tên thành tên chữ cái duy nhất.
🐋🚂🍇 ... 🍉
Mở rộng lớp. Đây là một tính năng không thường thấy trong các ngôn ngữ lập trình. Thay vì tạo một lớp mới với là siêu lớp, sửa đổi trực tiếp.
🐖🅰️➡🚂🍇 ... 🍉
Tạo một phương thức mới có tên trả về một. Nó trả về số lượng phân vùng được tính bằng công thứca(n) = (1/n) * Sum_{k=0..n-1} sigma(n-k)*a(k)
🍊⬅🐕1🍇
🍎1
🍉
Tương tự this
hoặc self
từ các ngôn ngữ khác và đề cập đến đối tượng mà phương thức được gọi. Việc thực hiện này là đệ quy, vì vậy đây là điều kiện kết thúc: nếu số phương thức được gọi trên nhỏ hơn hoặc bằng 1, trả về 1.
🍮sum 0
Tạo một biến mới sum
và đặt nó thành 0. Giả định ngầm định loại.
🔂k⏩0🐕
Lặp đi lặp lại bất cứ điều gì thực hiện giao thức, trong khi là một phạm vi nghĩa đen xảy ra để thực hiện. Một phạm vi có giá trị bắt đầu, giá trị dừng và giá trị bước, được giả sử là 1 nếu start < stop
hoặc -1 nếu không. Người ta cũng có thể chỉ định giá trị bước bằng cách sử dụng để tạo phạm vi bằng chữ. Giá trị bắt đầu được bao gồm, trong khi giá trị dừng là độc quyền, do đó, giá trị này tương đương với for k in range(n)
hoặc Sum_{k=0..n-1}
trong công thức.
🍦nmk➖🐕k
Chúng ta cần tính sigma (n - k) hoặc tổng các ước của n - k
các từ khác và đối số là cần thiết một vài lần, vì vậy điều này lưu trữ n - k
trong biến nmk
để lưu một số byte.
🍮sig nmk
🔂i⏩1 nmk
Điều này đặt sig
biến cho đối số của sigma và lặp lại trên tất cả các số từ 1 đến nmk - 1
. Tôi có thể khởi tạo biến thành 0 và lặp lại trên 1..nmk nhưng thực hiện theo cách này ngắn hơn.
🍊😛🚮nmk i 0
Tính toán phần còn lại hoặc mô đun và kiểm tra sự bằng nhau, do đó điều kiện sẽ là 👍 nếu i
là một bộ chia của nmk
.
🍮➕sig i
Đây là một bài tập theo cuộc gọi, tương tự như họ += -= >>=
nhà điều hành trong một số ngôn ngữ kém, không có biểu tượng cảm xúc. Dòng này cũng có thể được viết là 🍮 sig ➕ sig i
. Do đó, sau khi vòng lặp bên trong kết thúc, sig
sẽ chứa tổng các ước của n - k
hoặcsigma(n - k)
🍮➕sum✖sig🅰️k
Một nhiệm vụ khác bằng cách gọi, vì vậy điều này thêm sigma(n - k) * A(k)
vào tổng số, giống như trong công thức.
🍎➗sum🐕
Cuối cùng, tổng được chia cho n và thương số được trả về. Lời giải thích này có lẽ đã khiến ba lần mất nhiều thời gian như tự viết mã ...