Tiền tố nặc danh lambda. Trả về một chương trình cơ thể.
{
1=≢⍵:⍕⍵ ⍝ single element
(2=≢⍵)∧(⍵[2]=11×⍵[1]):⍕⍵[1] ⍝ 2, 22 etc.
1=≢∪⍵:'⊢',⍕⊃⍵ ⍝ all the same
(⊢≡⊃×⍳∘≢)⍵:'+',⍕⊃⍵ ⍝ linear
((⌊=⊢)!⍣¯1⊢⊃⍵)∧(1∧.=1↓⍵):'!',⍕!⍣¯1⊃⍵ ⍝ factorial followed by all 1s
(⍵[2]∧.=1↓⍵)∧(⍵[1]=10|2⊃⍵):(⍕⊃⍵),'⌈',(⊃⍕2⊃⍵) ⍝ b ab ab ab
e←{∊⍉2 2⍴'+×',⍕¨⍵}¨⍸(⊃⍵)=∘.×⍨⍳10
b←⍵∘≡¨e(({0::⍬ ⋄ ⍎⍵}¨,\)⍴∘⊂)¨⍨(≢⍵)
∨/b:⊃b/e
Q←{'''',⍨⍵/⍨1+''''=⍵}
(5∧.≤⍵)∧(≢⍕⍵)>6+(+/14=⍵)+≢⍵:'{⍺←⎕AV⍳⊃⋄1⌽⍺⊢⍵}''',Q ⎕AV[⍵] ⍝ string fallback
(≢⍕⍵)>9+(+/5=⍵)+≢⍵:'{⍺←¯4+⎕AV⍳⊃⋄1⌽⍺⊢⍵}''',Q ⎕AV[4+⍵] ⍝ offset string fallback
'{⍺←⊃⋄1⌽⍺⊢⍵}',⍕⍵ ⍝ fallback
}
Hãy thử trực tuyến!
Phương pháp
Điều này khám phá các phương thức khác nhau và trả về phương thức có thể sử dụng đầu tiên, cuối cùng trở lại phương pháp áp dụng phổ biến.
Yếu tố đơn
Nếu danh sách chỉ có một phần tử, nó được trả về nguyên trạng.
2, 22, v.v.
Một chữ số duy nhất có thể được lặp lại để tạo ra số lớn hơn 11 lần,
Tất cả đều giống nhau
Chúng tôi chỉ trả về số ( ⊢
) bên phải .
Tuyến tính
Chuỗi f (n) = k × n chỉ cần chèn một dấu cộng trước số hạng đầu tiên.
Yếu tố tiếp theo là tất cả 1s
Khi số đầu tiên n =! M và các số tiếp theo là 1, thì đó !m
là một giải pháp vì !m
n và m!m
là 1 và !1
là 1.
b ab ab ab
Vì tất cả các số có hai chữ số đều lớn hơn tất cả các số có một chữ số, nên một cực đại đang chạy, trong đó mặt trước của số thứ nhất được dán vào mặt sau của số thứ hai, là một giải pháp.
Mã ba dòng
Kiểm tra xem bất kỳ công thức của loại +a×b
là hợp lệ.
Chuỗi dự phòng
Chuỗi dài không có số dưới 5 (vì 4 là ngắt dòng) có thể được mã hóa thành các ký tự của SBCS.
Dự phòng chuỗi bù
Nếu có số dưới 5, chúng tôi tăng lên 9 để tránh những số đó.
Dự phòng
Nối chuỗi đơn giản của chuỗi "{⍺←⊃⋄1⌽⍺⊢⍵}"
và ⍕
đầu vào chuỗi ( ). Ví dụ [3,1,4]
trả về cơ thể chương trình {⍺←⊃⋄1⌽⍺⊢⍵}3 1 4
.
Phần trong dấu ngoặc nhọn là một hàm ambivalent, có nghĩa là nó có thể là hàm tiền tố hoặc hàm infix. Do đó, ví dụ ngoài cùng bên trái của nó sẽ chạy trong chế độ tiền tố và tất cả các phiên bản khác trong chế độ infix. Sự khác biệt giữa các chế độ là liệu ⍺
, biểu thị đối số bên trái, có giá trị hay không. Nếu không thì nó sẽ được gán chức năng ⊃
(đầu tiên).
Giải thích về phương pháp dự phòng
{
... }
lambda anonymous:
⍺←⊃
Nếu không có đối số bên trái ( ⍺
) gán hàm ⊃
(đầu tiên) cho⍺
⋄
sau đó:
Tại thời điểm này, đoạn mã sau có nghĩa là hai điều khác nhau tùy thuộc vào việc đó ⍺
là danh sách các số (cuộc gọi infix) hay hàm "đầu tiên" (cuộc gọi tiền tố).
Nếu ⍺
là một danh sách các số:
⍺⊢⍵
loại bỏ đối số bên trái có lợi cho đối số bên phải
1⌽
xoay một bước còn lại
Nếu ⍺
là chức năng "đầu tiên":
⊢⍵
đưa ra lập luận đúng
⍺
chọn yếu tố đầu tiên
1⌽
xoay nó một bước (không có op trên vô hướng)
Ví dụ chạy phương thức dự phòng
Thực thi 3 1 4
mã, {⍺←⊃⋄1⌽⍺⊢⍵}3 1 4
gán hàm "đầu tiên" ⍺
và do đó trả về phần tử đầu tiên; 3
.
Việc thực thi {⍺←⊃⋄1⌽⍺⊢⍵}3 1 4{⍺←⊃⋄1⌽⍺⊢⍵}3 1 4
cho phép lambda ngoài cùng bên phải "bắt" bên trái 3 1 4
làm đối số bên trái của nó, do đó, ⍺
có một giá trị bị loại bỏ theo hướng có lợi 3 1 4
sau đó được xoay một bước sang trái và mang lại 1 4 3
kết quả. Điều này sau đó được sử dụng làm đối số duy nhất cho lambda ngoài cùng bên trái, nơi ⍺
trở thành hàm "đầu tiên", khiến kết quả là phần tử đầu tiên; 1
.
Việc thực thi {⍺←⊃⋄1⌽⍺⊢⍵}3 1 4{⍺←⊃⋄1⌽⍺⊢⍵}3 1 4{⍺←⊃⋄1⌽⍺⊢⍵}3 1 4
cho phép lambda ngoài cùng bên phải "bắt" giữa 3 1 4
là đối số bên trái của nó, sau đó được loại bỏ theo hướng có lợi cho đối số bên phải 3 1 4
, khi xoay một bước bên trái là 1 4 3
. Điều này sau đó được sử dụng làm đối số bên phải của lambda giữa cùng với đối số ngoài cùng bên 3 1 4
trái. Đối số bên trái được loại bỏ cho bên phải, mà xoay vòng một bước năng suất trái 4 3 1
. Điều này sau đó trở thành đối số duy nhất của lambda ngoài cùng bên trái, do đó ⍺
trở thành "hàm đầu tiên", trả về phần tử đầu tiên; 4
.
Chấm điểm
Khi đến lúc kiểm tra bằng dữ liệu thực tế, hãy sử dụng khai thác kiểm tra này (được liên kết với dữ liệu giả định). Các trường hợp thử nghiệm đi vào trường Đầu vào và Đầu ra sẽ là tổng số byte của tất cả 500 chương trình cùng nhau. (Nó cũng sẽ gây ra lỗi, nhưng đó chỉ là do sau đó nó cố gắng đánh giá Đầu vào nguyên trạng.)