CJam , 6 byte (chương trình đầy đủ) / 7 byte (khối mã)
q),^W=
Hãy thử trực tuyến!
Đây là một chương trình đầy đủ của CJam đọc chuỗi đầu vào từ đầu vào tiêu chuẩn và in chữ cái còn thiếu sang đầu ra tiêu chuẩn. CJam không thực sự có "phương thức", đó là điều mà thách thức yêu cầu, nhưng thứ gần nhất có lẽ sẽ là một khối mã thực thi, như thế này:
{),^W=}
Hãy thử trực tuyến!
Khối mã này, khi được đánh giá, lấy đầu vào dưới dạng một chuỗi (tức là một mảng các ký tự) trên ngăn xếp và trả về ký tự bị thiếu cũng trên ngăn xếp.
Giải thích: Trong chương trình đầy đủ, q
đọc chuỗi đầu vào và đặt nó lên ngăn xếp. )
sau đó bật ra ký tự cuối cùng của chuỗi đầu vào và toán tử phạm vi ,
biến nó thành một mảng chứa tất cả các ký tự có các điểm mã bên dưới nó (bao gồm tất cả các chữ cái trước nó trong bảng chữ cái). Vì vậy, ví dụ, nếu đầu vào là cdfgh
, thì sau ),
ngăn xếp sẽ chứa các chuỗi cdfg
(tức là đầu vào có chữ cái cuối cùng bị loại bỏ) và ...abcdefg
, trong đó...
viết tắt của một loạt các ký tự có mã ASCII bên dưới a
(tức là tất cả các ký tự bên dưới đầu vào cuối bị loại bỏ lá thư).
^
Sau đó, toán tử khác biệt tập đối xứng kết hợp các chuỗi này thành một chuỗi chứa chính xác các ký tự xuất hiện trong một trong các chuỗi, nhưng không phải trong cả hai chuỗi. Nó duy trì thứ tự xuất hiện các ký tự trong chuỗi, do đó, đối với đầu vào ví dụ cdfg
, kết quả sau ),^
sẽ là ...abe
, trong đó ...
một lần nữa là viết tắt của một loạt các ký tự có mã ASCII bên dưới a
. Cuối cùng, W=
chỉ trích xuất ký tự cuối cùng của chuỗi này, đó chính xác là ký tự bị thiếu e
mà chúng tôi muốn tìm (và loại bỏ phần còn lại). Khi chương trình kết thúc, trình thông dịch CJam sẽ in ra nội dung của ngăn xếp.
Phần thưởng: GolfScript , 6 byte (chương trình đầy đủ)
),^-1>
Hãy thử trực tuyến!
Nó chỉ ra rằng gần như cùng một mã cũng hoạt động trong GolfScript. Chúng tôi lưu một byte trong phiên bản chương trình đầy đủ do đầu vào ngầm của GolfScript, nhưng mất một byte bởi vì, không giống như của CJam W
, GolfScript không có biến một chữ cái đơn giản được khởi tạo thành -1.
Ngoài ra, CJam có các loại số nguyên và ký tự riêng biệt (và các chuỗi chỉ là các mảng chứa các ký tự), trong khi GolfScript chỉ có một loại số nguyên duy nhất (và có một loại chuỗi đặc biệt hoạt động hơi khác so với các mảng thông thường). Kết quả của tất cả những điều này là, nếu chúng ta muốn trình thông dịch GolfScript in ra chữ cái bị thiếu thực tế thay vì số mã ASCII của nó, chúng ta cần trả về một chuỗi ký tự đơn thay vì chỉ chính ký tự đó. May mắn thay, thực hiện thay đổi đó ở đây chỉ cần thay thế toán tử lập chỉ mục =
bằng toán tử cắt ngắn mảng / chuỗi trái>
.
Tất nhiên, nhờ vào I / O ẩn của GolfScript, mã ở trên cũng có thể được sử dụng như một đoạn mã đọc một chuỗi từ ngăn xếp và trả về một chuỗi ký tự đơn có chứa ký tự bị thiếu. Hoặc, đúng hơn, bất kỳ đoạn mã nào lấy một chuỗi trên ngăn xếp làm đối số và trả về đầu ra của nó dưới dạng một chuỗi có thể in trên ngăn xếp, cũng là một chương trình GolfScript đầy đủ.