APL, 36 34 39 36 33 29 27
*+/x={(∇⍣(⊃x>¯1↑⍵))⍵,+/⍵↑⍨-⍴⍕x}⍎¨⍕x←⎕
Đầu ra 1
nếu Keith, 0
nếu không
GolfScript đình công một lần nữa !!
Biên tập
+/x={(∇⍣(x>⊢/⍵))⍵,+/⍵↑⍨-⍴⍕x}⍎¨⍕x←⎕
Sử dụng Quyền giảm ( ⊢/
) thay vì Lấy 1 ( ¯1↑
), trực tiếp lưu 1 char và gián tiếp lưu 1 từ Tiết lộ ( ⊃
)
Giải trình
⍎¨⍕x←⎕
lấy đầu vào được đánh giá (được coi là một số) và gán nó vào x
. Chuyển đổi nó thành một mảng ký tự (còn gọi là "chuỗi" trong các ngôn ngữ khác) và lặp qua từng ký tự (chữ số), chuyển đổi nó thành một số. Vì vậy, điều này dẫn đến một mảng số của các chữ số.
{(∇⍣(x>⊢/⍵))⍵,+/⍵↑⍨-⍴⍕x}
là hàm "loop" chính:
+/⍵↑⍨-⍴⍕x
lấy các số cuối ⍴⍕x
(số chữ số trong x
) từ mảng và tính tổng chúng.
⍵,
nối nó đến cuối mảng.
(x>⊢/⍵)
kiểm tra xem số cuối cùng trên mảng (chưa được +/⍵↑⍨-⍴⍕x
nối) chưa nhỏ hơn x
và trả về 1
hay0
∇⍣
thực hiện hàm này trên mảng mới nhiều lần. Vì vậy, nếu số cuối cùng nhỏ hơn x
, hàm này sẽ tái diễn. Nếu không, chỉ cần trả về mảng mới
Sau khi thực hiện hàm, mảng chứa các tổng đến điểm mà 2 trong số các số lớn hơn hoặc bằng x
(ví dụ 14
sẽ tạo 1 4 5 9 14 23
, 13
sẽ tạo 1 3 4 7 11 18 29
)
Cuối cùng kiểm tra xem mỗi số có bằng x
và xuất tổng của nhị phân kết quả không mảng.
Biên tập
1=+/x={(∇⍣(x>⊢/⍵))⍵,+/⍵↑⍨-⍴⍕x}⍎¨⍕x←⎕
Đã thêm 2 ký tự :-( để tạo đầu ra 0
nếu đầu vào là một chữ số
Một chỉnh sửa khác
+/x=¯1↓{(∇⍣(x>⊢/⍵))1↓⍵,+/⍵}⍎¨⍕x←⎕
Giải trình
Hàm bây giờ bỏ số đầu tiên ( 1↓
) khỏi mảng thay vì lấy số cuối ⍴⍕x
( ↑⍨-⍴⍕x
).
Tuy nhiên, cách tiếp cận này làm cho 1=
không đủ để xử lý các số có một chữ số. Vì vậy, bây giờ nó giảm số cuối cùng từ mảng trước khi kiểm tra đẳng thức x
, thêm 1 char
Bạn đã đoán ra: EDIT
+/x=1↓{1↓⍵,+/⍵}⍣{x≤+/⍵}⍎¨⍕x←⎕
So sánh x
với mục mới được thêm vào thay vì mục cuối cùng cũ, vì vậy hãy bỏ mục đầu tiên (thay vì cuối cùng) trước khi kiểm tra tính bằngx
là đủ, lưu dấu trừ. Lưu thêm 3 bằng cách sử dụng một dạng khác của toán tử Power ( ⍣
)
Và một câu trả lời 25 char gs xuất hiện (Orz)
Chỉnh sửa lần cuối
x∊1↓{1↓⍵,+/⍵}⍣{x≤+/⍵}⍎¨⍕x←⎕
Không thể tin rằng tôi đã bỏ lỡ điều đó.
Không thể đánh gôn được nữa.