Sử dụng phép lặp để tính toán trình tự
Thông thường, giải quyết một thách thức trình tự OEIS sẽ yêu cầu sử dụng một trong các công thức được đưa ra trên trang của nó. Một số trong số này thích nghi tốt với J, và một số khác thì không nhiều. Các công thức đệ quy là đơn giản, tuy nhiên, việc lặp lại có thể không đơn giản. Một mẫu tôi đã bắt đầu sử dụng là
(s(]f)^:[~]) n
] Gets n
s The first value in the sequence
~ Commute the argument order, n is LHS and s is RHS
[ Gets n
^: Nest n times with an initial argument s
(]f) Compute f s
Returns (f^n) s
trong đó s
là giá trị đầu tiên trong chuỗi, f
là một động từ sẽ tính toán thuật ngữ tiếp theo cho thuật ngữ trước đó và n
là chỉ số dựa trên số không của thuật ngữ bạn muốn tính toán. Phương pháp này dựa trên thực tế là khi tính toán sức mạnh của một con đê, LHS bị ràng buộc với con đê để tạo thành một đơn nguyên mới, và đơn nguyên đó được lồng vào giá trị ban đầu. Các dyad được trao cho trạng từ sức mạnh là một cái móc trong đó (]f)
được đưa ra chỉ số n
trên LHS và giá trị của một thuật ngữ trong chuỗi s
. Móc sẽ được áp dụng f
trên s
một đơn nguyên, và sau đó bỏ qua n
để trả lại kết quả của f s
.
Thư viện chuẩn
Đôi khi, bạn có thể thấy rằng J sẽ có hỗ trợ cho một động từ trong thư viện chuẩn của nó . Ví dụ, hầu hết các hoạt động số nguyên bit được liên kết với các tên ngắn hơn so với sử dụng lệnh gọi nguyên thủy.
AND =: (17 b.) NB. it is actually '$:/ :(17 b.)'
Ngày và thời gian xây dựng cũng có sẵn.
Các dãy
Nếu bạn có một tập hợp các giá trị [a, b, c]
và bạn muốn tạo một phạm vi dựa trên sản phẩm của họ như thế nào [0, 1, 2, ..., a*b*c-1]
, cách tiếp cận thông thường sẽ là tìm sản phẩm của họ và sau đó tạo thành một phạm vi có thể [:i.*/
có giá 6 byte. Một cách ngắn hơn là ,@i.
cho 4 byte vì i.
có thể tạo thành các mảng nhiều chiều trong khi vẫn đang đếm và làm phẳng nó sẽ tạo ra một phạm vi tương đương.
In liên tục
Một cách ngầm để in một giá trị và tiếp tục sử dụng nó mà không có một vòng lặp rõ ràng là ([echo)
cho một trường hợp đơn trị. echo
là một động từ trong thư viện chuẩn in nội dung của nó sang stdout
cùng định dạng được sử dụng trong trình thông dịch. Hook sau đó chuyển cùng giá trị đầu vào ra bằng cách sử dụng [
động từ bên trái .
10 chữ số cơ bản
Cách tiêu chuẩn để có được 10 chữ số cơ bản của một số nguyên là 10#.inv]
chi phí 8 byte, quá nhiều! Một cách khác là chuyển đổi nó thành một chuỗi và phân tích nó ở cấp 0 "."0@":
để tiết kiệm một byte, nhưng cách tốt hơn nữa là ,.&.":
tiết kiệm một byte khác làm cho chi phí cuối cùng là 6 byte thay vì 8.
GolfScript gets its own way far too often
vào năm 2019.