Hãy tạo một đơn giản, surjective ánh xạ từ nguyên dương đến số nguyên Gaussian , đó là số phức nơi các phần thực và phần ảo là các số nguyên.
Ví dụ 4538
, đưa ra một số nguyên dương, biểu thị nó dưới dạng nhị phân không có dấu đầu 0
:
4538 base 10 = 1000110111010 base 2
Xóa mọi dấu vết 0
:
100011011101
Thay thế bất kỳ lần chạy nào của một hoặc nhiều lần 0
bằng một +
:
1+11+111+1
Thay thế tất cả 1
's với i
' s:
i+ii+iii+i
Đánh giá biểu thức phức tạp kết quả và xuất ra số nguyên Gaussian đơn giản hóa:
i+ii+iii+i = i+i*i+i*i*i+i = 2i+i^2+i^3 = 2i+(-1)+(-i) = -1+i
Đầu ra có thể được thể hiện theo cách toán học truyền thống, hoặc được đưa ra dưới dạng hai số nguyên riêng biệt cho các phần thực và phần phức tạp. Ví 4538
dụ, bất kỳ trong số này sẽ ổn:
-1+i
i-1
-1+1i
(-1, 1)
-1 1
-1\n1
Đối với nguyên liệu đầu vào như 29
, kết quả đầu ra định dạng mathy như 0
, 0i
hoặc 0+0i
là tất cả tiền phạt.
Sử dụng j
(hoặc một cái gì đó khác) thay vì i
tốt nếu điều đó là tự nhiên hơn cho ngôn ngữ của bạn.
Mã ngắn nhất tính bằng byte thắng.
4+2j
->100+10j
...