Chương trình này lấy một cặp [câu trả lời của học sinh, câu trả lời đúng] làm đầu vào và sử dụng khoảng trắng để chỉ ra câu trả lời bị thiếu.
Chương trình này sử dụng một số định dạng đầu vào nội bộ kỳ quái để theo dõi những gì đang diễn ra, vì vậy chúng tôi sẽ thực hiện bước này một lúc.
Z
Điều này chuyển đổi đầu vào, vì vậy chúng tôi sẽ kết thúc với một danh sách 25 yếu tố, mỗi yếu tố cho mỗi câu hỏi; mỗi yếu tố có dạng [câu trả lời của học sinh, câu trả lời đúng]. Chúng tôi sẽ chỉ ra một yếu tố của hình thức này với một chữ in hoa; Acho câu hỏi 1, Bcho câu hỏi 2, v.v. Vì vậy, các câu trả lời hiện đang được lưu trữ dưới dạng
ABCDEFGHIJKLMNOPQRSTUVWXY
m0
Đây là một hoạt động "lớn hơn palindrom"; chúng tôi nối ngược lại giá trị hiện tại với chính giá trị đó, mang lại điều này:
ABCDEFGHIJKLMNOPQRSTUVWXYYXWVUTSRQPONMLKJIHGFEDCBA
ṁ135
Các ṁ(nấm mốc) điều hành thực hiện một số điều, nhưng trong bối cảnh này, nó có hiệu quả lấy 135 yếu tố đầu tiên của danh sách vô hạn được sản xuất bằng cách thêm giá trị hiện tại cho chính nó nhiều lần. Điều đó mang lại cho chúng tôi những điều sau đây (mà tôi đã chia thành các nhóm gồm 50 yếu tố để thuận tiện; đây chỉ là danh sách 135 cặp nội bộ):
ABCDEFGHIJKLMNOPQRSTUVWXYYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYYXWVUTSRQP
µ;
µđặt giá trị hiện tại làm mặc định mới cho các toán hạng bị thiếu. Sau đó, chúng tôi ngay lập tức thấy một nội dung bị thiếu một toán hạng; ;nối thêm, nhưng chúng tôi chưa chỉ định những gì cần nối thêm. Do đó, giá trị hiện tại được gắn vào giá trị cuối cùng µ(cũng là giá trị hiện tại), mang lại cho chúng tôi giá trị hiện tại 270 phần tử sau:
ABCDEFGHIJKLMNOPQRSTUVWXYYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYYXWVUTSRQPABCDEFGHIJKLMNO
PQRSTUVWXYYXWVUTSRQPONMLKJIHGFEDCBAABCDEFGHIJKLMNO
PQRSTUVWXYYXWVUTSRQPONMLKJIHGFEDCBAABCDEFGHIJKLMNO
PQRSTUVWXYYXWVUTSRQP
t€⁶
Hãy nhớ rằng tất cả các chữ in hoa ở trên đại diện cho các cặp [câu trả lời của học sinh, câu trả lời đúng]. Các t€⁶hoạt động hoạt động trên mỗi ( €cặp), và xóa ( tkhông gian) ( ⁶) từ hai bên của cặp (tức là bất kỳ không gian mà xuất hiện trong cặp). Vì vậy, chúng tôi vẫn có cùng một danh sách gồm 270 câu hỏi với nhiều câu lặp lại, nhưng chúng có dạng [câu trả lời đúng] (học sinh không trả lời) hoặc [câu trả lời của học sinh, câu trả lời đúng] (học sinh đã trả lời).
E€’
Các E€’hoạt động cũng hoạt động trên mỗi ( €phần tử), và, do việc sử dụng E, thay thế phần tử với 1 nếu tất cả các yếu tố đều bình đẳng (tức là học sinh không trả lời hoặc có những câu hỏi phải), hoặc 0 nếu không phải tất cả các các yếu tố là bằng nhau (tức là học sinh trả lời nhưng có câu hỏi sai). Việc sử dụng ’ở đây thay đổi cách đánh số, có nghĩa là bây giờ chúng ta sử dụng -1 hoặc 0 tương ứng. Tôi sẽ sử dụng các chữ cái viết thường cho loại phần tử mới này, sử dụng -1 cho câu trả lời sẽ bị phạt nếu đó là câu hỏi đủ điều kiện bị phạt hoặc 0 cho câu trả lời bị thiếu hoặc đúng:
abcdefghijklmnopqrstuvwxyyxwvutsrqponmlkjihgfedcba
abcdefghijklmnopqrstuvwxyyxwvutsrqponmlkjihgfedcba
abcdefghijklmnopqrstuvwxyyxwvutsrqpabcdefghijklmno
pqrstuvwxyyxwvutsrqponmlkjihgfedcbaabcdefghijklmno
pqrstuvwxyyxwvutsrqponmlkjihgfedcbaabcdefghijklmno
pqrstuvwxyyxwvutsrqp
;E€
Chúng tôi đã thấy cả hai E€và ;trước đó; chúng tôi đang thêm một cái gì đó vào giá trị hiện tại và chúng tôi đang sử dụng định dạng 1 nếu tất cả các yếu tố bằng nhau hoặc 0 nếu một số khác nhau (không có ’thời gian này!). Có một toán hạng bị thiếu ở đây, vì vậy chúng tôi sử dụng giá trị như cuối cùng µ(tức là đầu ra của bước 3). Quay lại bước 3, chúng tôi đã không xóa khoảng trắng khỏi các thành phần, vì vậy chúng tôi sẽ có 1 cho câu trả lời đúng hoặc 0 cho câu trả lời sai hoặc thiếu (vì khoảng trắng sẽ không khớp với câu trả lời đúng). Từ giờ trở đi, tôi sẽ sử dụng chữ in hoa cho định dạng 1 = chính xác, 0 = không chính xác / thiếu và tiếp tục sử dụng chữ cái viết thường cho 0 = chính xác / thiếu, -1 = không chính xác. Giá trị kết quả có 405 phần tử và trông như thế này:
abcdefghijklmnopqrstuvwxyyxwvutsrqponmlkjihgfedcba
abcdefghijklmnopqrstuvwxyyxwvutsrqponmlkjihgfedcba
abcdefghijklmnopqrstuvwxyyxwvutsrqpabcdefghijklmno
pqrstuvwxyyxwvutsrqponmlkjihgfedcbaabcdefghijklmno
pqrstuvwxyyxwvutsrqponmlkjihgfedcbaabcdefghijklmno
pqrstuvwxyyxwvutsrqpABCDEFGHIJKLMNOPQRSTUVWXYYXWVU
TSRQPONMLKJIHGFEDCBAABCDEFGHIJKLMNOPQRSTUVWXYYXWVU
TSRQPONMLKJIHGFEDCBAABCDEFGHIJKLMNOPQRSTUVWXYYXWVU
TSRQP
ṫ⁹
Đây là sự trùng hợp đáng kinh ngạc mà tôi đã đề cập trước đó. Trước khi nói về đoạn mã này, tôi muốn xem xét nơi chúng ta đã đến.
Mỗi chữ in hoa đại diện cho +1 cho một câu trả lời đúng; 15 câu hỏi đầu tiên ( Athông qua O) xuất hiện 5 lần mỗi chuỗi trong chuỗi và 10 câu hỏi cuối cùng ( Pthông qua Y) xuất hiện 6 lần mỗi câu hỏi . Đó không phải là thực sự kỳ diệu; Tôi đã thiết kế nó theo cách đó khi tôi chọn số 135 trước đó trong chương trình (đó là 5 × 15 + 6 × 10) và điều may mắn duy nhất ở đây là 5 là số lẻ (vì vậy đó là số 10 cuối cùng câu hỏi cuối cùng xuất hiện thêm lần, thay vì 10 câu đầu tiên. 15 chữ cái ngay trước chữ này chứa pthông qua t(-1 câu hỏi phạt) một lần và uqua y(-2 câu hỏi phạt) hai lần. Đó cũng không phải là một sự trùng hợp ngẫu nhiên; bởi vì chúng tôi đã sử dụngm0trước đó, các bản sao bổ sung của các câu hỏi được xếp theo thứ tự PQRSTUVWXYYXWVUTSRQPvà các câu hỏi sau sẽ xuất hiện một cách tự nhiên ở gần giữa chuỗi đó (vì vậy, việc lấy 15 câu hỏi "phụ" cuối cùng sẽ tạo ra ít lần lặp lại cho những câu hỏi gần các cạnh; tất nhiên, không có gì ngạc nhiên khi các câu hỏi "thêm" xuất hiện cuối cùng).
Bởi vì mỗi chữ cái viết thường trừ 1 từ điểm cho câu trả lời không chính xác, không thiếu và mỗi chữ cái viết hoa thêm 1 vào điểm cho câu trả lời đúng, do đó chúng tôi chỉ cần lấy 135 + 15 = 150 yếu tố cuối cùng để có được mỗi loại phần tử số lần chính xác. Lệnh của Jelly để có được một chuỗi con ở cuối danh sách là ṫ; tuy nhiên, nó không chỉ định số lượng phần tử bạn muốn, mà là chỉ mục của phần tử đầu tiên bạn muốn. Chúng ta có 405 phần tử tại thời điểm này và muốn 150, vì vậy chúng ta cần bắt đầu ở chỉ số (405 - 150 + 1) hoặc 256. Trong một sự trùng hợp đáng kinh ngạc, 256 tình cờ là số bát phân riêng biệt tồn tại, và do đó có một đại diện ngắn trong Jelly (⁹). Có rất ít tôi có thể làm để thực hiện điều này; Bước 4 đã thêm 135 yếu tố khác vào đầu danh sách để đạt được số tròn, nhưng thực tế đó là 135 yếu tố tôi phải thêm (một giá trị có sẵn tại thời điểm đó trong chương trình) thực sự tiện lợi, về cơ bản, bất kỳ số nào khác hoàn toàn không có ích trong tình huống này.
Đây là cách giá trị nội bộ hiện tại:
uvwxyyxwvutsrqpABCDEFGHIJKLMNOPQRSTUVWXYYXWVUTSRQP
ONMLKJIHGFEDCBAABCDEFGHIJKLMNOPQRSTUVWXYYXWVUTSRQP
ONMLKJIHGFEDCBAABCDEFGHIJKLMNOPQRSTUVWXYYXWVUTSRQP
S
Cuối cùng, bây giờ chúng tôi đã có một danh sách các sửa đổi cho điểm từ các câu hỏi, tất cả những gì chúng ta cần làm là tổng hợp chúng bằng cách sử dụng Svà chúng ta đã hoàn thành.