dc , 46 byte
[[{}]]sx256?^dd3^8d^1-/8092541**r255/BF*+d0=xP
Hãy thử trực tuyến!
Đầu vào trên stdin, đầu ra trên thiết bị xuất chuẩn.
Điều này hoạt động bằng cách tính toán một công thức cho đầu ra mong muốn dưới dạng số cơ sở 256. Lệnh P trong dc sau đó được sử dụng để in số cơ sở 256 dưới dạng chuỗi.
Giải thích thêm:
Gọi n là đầu vào n. Chương trình dc tính tổng của
A = floor (256 ^ n / 255) * 125 (BF được hiểu bởi dc là 11 * 10 + 15 = 125)
và
B = sàn ((256 ^ n) ^ 3 / (8 ^ 8-1)) * 8092541 * (256 ^ n).
Cho một:
Quan sát rằng 1 + 256 + 256 ^ 2 + ... + 256 ^ (n-1) bằng (256 ^ n-1) / 255, theo công thức cho một tiến trình hình học và giá trị này bằng sàn (256 ^ n / 255 ). Vì vậy, đây là số bao gồm n 1 trong cơ sở 256.
Khi bạn nhân nó với 125 để có A, kết quả là số bao gồm n 125 trong cơ sở 256 (tất nhiên 125 là một chữ số trong cơ sở 256). Có lẽ tốt hơn để viết các chữ số trong cơ sở 256 dưới dạng số hex; 125 là hex 7D, vì vậy A là số cơ sở 256 gồm n 7D liên tiếp.
B tương tự:
Lần này quan sát rằng 1 + 16777216 + 16777216 ^ 2 + ... + 16777216 ^ (n-1) bằng (16777216 ^ n - 1) / 16777215 và giá trị này bằng sàn (16777216 ^ n / 16777215).
Bây giờ, 256 ^ 3 = 16777216 và 8 ^ 8-1 = 16777215, vì vậy đây là những gì chúng tôi tính toán dưới dạng sàn ((256 ^ n) ^ 3 / (8 ^ 8-1)).
Từ biểu diễn chuỗi hình học, số này trong cơ sở 256 là 100100100 ... 1001 với n chữ số là 1 và phần còn lại của các chữ số là 0.
Điều này được nhân với 8092541, là 7B7B7D theo hệ thập lục phân. Trong cơ sở 256, đây là một số có ba chữ số bao gồm các chữ số 7B, 7B và 7D (viết các chữ số đó thành hex để thuận tiện).
Theo sau, sản phẩm được viết trong cơ sở 256 là một số có 3 chữ số bao gồm 3 chữ số 7B 7B 7D được lặp lại n lần.
Số này được nhân với 256 ^ n, dẫn đến số cơ sở gồm 4 chữ số gồm 256 chữ số, bao gồm 3 chữ số 7B 7B 7D được lặp lại n lần, theo sau là n 0 '. Đó là B.
Thêm A + B bây giờ sẽ mang lại số cơ sở gồm 4 chữ số gồm 256 chữ số gồm 3 chữ số 7B 7B 7D được lặp lại n lần, tiếp theo là n 7D. Vì 7B và 7D là mã ASCII cho {
và }
, tương ứng, đây là chuỗi bao gồm n bản sao {{}
theo sau là n bản sao của}
, chính xác là những gì chúng ta muốn cho n> 0. Lệnh P trong dc in một số cơ sở 256 như một chuỗi, giống như chúng ta cần.
Thật không may, n = 0 phải được coi là trường hợp đặc biệt. Việc tính toán ở trên xảy ra để mang lại kết quả là 0 cho n = 0; trong trường hợp đó, tôi chỉ mã hóa việc in chuỗi {}
.