7 , 23 ký tự, 9 byte
54340045141332401057403
Hãy thử trực tuyến!
Đây là một thử thách khá khó khăn trong một ngôn ngữ chỉ bao gồm các chữ số, nhưng tôi đã quản lý nó
Đây chỉ là 9 byte trong mã hóa của 7. (Nói đúng ra, đó là 8⅜ byte (23 × - vì hai bit cuối cùng 1 bit có thể bị bỏ qua), nhưng lần đầu tiên, yêu cầu của PPCG phải làm tròn đến toàn bộ số byte thực sự là một lợi thế bởi vì điều đó có nghĩa là thêm 1 bit trailing là cần thiết và do đó không bị cấm bởi câu hỏi.) Kết xuất hex có thể đảo ngược:
00000000: b1c0 2530 b6a0 22f8 1f ..%0.."..
Thách thức chính của việc viết chương trình này trong 7 là đánh gôn dưới 10 byte (như viết 7 mà không sử dụng 0
hoặc 1
khá khó.) Điều này sử dụng cấu trúc tương tự như chương trình "Hello world" tiêu chuẩn:
5434004514133240105 7 403
5434004514133240105 lệnh 0-5 nối thêm chữ vào không gian dữ liệu
7 bắt đầu một phần mới của không gian dữ liệu
403 một nghĩa đen khác được thêm vào không gian dữ liệu
{ẩn: eval phần cuối cùng dưới dạng lệnh}
4 hoán đổi phần 1 và phần 2 với phần trống giữa
6 tái tạo lại các lệnh sẽ tạo đầu ra phần 1
3 (+ một số hiệu ứng khác mà chúng tôi không quan tâm)
Nói cách khác, chúng tôi bắt đầu bằng cách tạo hai phần của không gian dữ liệu; chúng tôi có hai chữ, mỗi chữ đẩy một chuỗi lệnh ở đó. Phần thứ hai (chúng được đẩy theo kiểu ngăn xếp nên lần đầu tiên đẩy = pop cuối cùng) là một chuỗi lệnh khá tùy ý nhưng được đẩy bằng chuỗi lệnh 5434004514133240105
(do đó tạo ra chuỗi dữ liệu 5434664574733246765
; khi thảo luận 7 trong văn bản, tôi thường sử dụng phông chữ bình thường cho một lệnh đẩy một chữ và in đậm cho chữ kết quả tương ứng). Phần đầu tiên được đẩy bằng cách sử dụng chuỗi lệnh 403
, sản xuất 463
. Sau đó, phần đầu tiên được sao chép trở lại chương trình (một hành vi ngầm của 7).
Các 463
hiện nay bao gồm các lệnh (đậm) mà làm điều gì đó ngay lập tức, chứ không phải là (không đậm) lệnh mà chỉ đẩy literals. 4
sắp xếp lại các phần để có được "chuỗi ký tự" của chúng tôi vào phần đầu tiên. Sau đó, 0
thao tác mà 7 được biết đến nhiều nhất là: lấy một phần của không gian dữ liệu và xây dựng lại chuỗi lệnh có khả năng đã tạo ra nó. Trong trường hợp chuỗi lệnh ban đầu là tất cả 0
- 5
, điều này chính xác 100% (không có gì đáng ngạc nhiên, vì các lệnh đó hoàn toàn đẩy dữ liệu và do đó để lại bằng chứng rõ ràng về những gì chúng đã làm), và vì vậy chúng tôi lấy 5434004514133240105
lại trình tự ban đầu . Cuối cùng, 3
in nó.
Vì vậy, điều còn lại để xem xét ở đây là mã hóa của chuỗi. Điều này có ngôn ngữ dành riêng cho tên miền của nó:
5434004514133240105
5 change encoding: 6 bits per character
43 select character set: digits and common symbols
40 '9'
04 space
51 select character set: uppercase letters
4133240105 'B' 'Y' 'T' 'E' 'S'
(Không có "bộ ký tự chọn: chữ cái viết thường" trong bộ ký tự "chữ số và ký hiệu chung" - trước tiên bạn phải đi qua một bộ ký tự khác - vì vậy tôi cần sử dụng chữ hoa để chơi golf đủ ngắn để phù hợp với số 10 có hiệu lực giới hạn -tất cả.)