पिगपेन सिफर एन्क्रिप्शन
आपका मिशन सरल है: एक प्रोग्राम लिखने के लिए जो इनपुट के रूप में टेक्स्ट प्राप्त करता है और पिगपेन सिपर में एएससीआईआई प्रतिनिधित्व का आउटपुट देता है ।
इनपुट
ASCII- केवल (कोई यूनिकोड) वर्ण नहीं। आपको कम से कम 16384 अक्षर और 256 लाइनों को संभालने में सक्षम होना चाहिए।
उत्पादन
- सभी पात्रों जो नई लाइनें हैं या नहीं में बदलें
ABCDEFGHIJKLMNOPQRSTUVWXYZ
याabcdefghijklmnopqrstuvwxyz
रिक्त स्थान के साथ। - केस-असंवेदनशील, प्रत्येक अक्षर को उसके एन्क्रिप्टेड फॉर्म (अगले भाग देखें) के साथ बदलें, प्रत्येक के बाद तीन पंक्तियों में से प्रत्येक पर एक अनुगामी स्थान डालें। प्रत्येक एन्कोडेड वर्ण ASCII कला का 3 * 3 ब्लॉक है। रिक्त स्थान के 3 * 3 ब्लॉक के साथ रिक्त स्थान बदलें।
- सभी वर्ण एक ही तीन पंक्तियों पर होने चाहिए (इन तीन पंक्तियों को एक पिगपेन-रेखा कहें), जब तक कि एक नई रेखा न हो, जो एक नई पिग्ने-लाइन शुरू करती है। पिगपेन-लाइनों के बीच एक सामान्य लाइन को खाली छोड़ दें।
सिफर
| | | |
.| |.| |.
--+ for J +-+ for K +-- for L
--+ +-+ +--
.| |.| |.
--+ for M +-+ for N +-- for O
--+ +-+ +--
.| |.| |.
| for P | | for Q | for R
(ABCDEFGHI are the same as JKLMNOPQR, but with the . replaced by a space)
\./
V for W (note the row of 3 spaces on the top)
^
/.\ for Z (note the 3 spaces on the bottom)
\
.>
/ for X (note the leading spaces)
/
<.
\ for Y (note extra trailing spaces)
(STUV are like WXYZ, but with the . replaced by a space)
उदाहरण
इनपुट "hEllo, wORLd" का उत्पादन करना चाहिए:
+-+ +-+ | | +-- +-- +-- | --+
| | | | |. |. |. \./ |. |. |. |
| | +-+ +-- +-- +-- V +-- | +-- --+
अनुगामी नई लाइन के साथ ऊपर का बेस 64 एन्कोडिंग नीचे है। Md5sum है 6f8ff1fed0cca4dd0492f9728ea02e7b
।
Ky0rICstKyB8ICAgfCAgICstLSAgICAgICAgICstLSArLS0gfCAgIC0tKwp8IHwgfCB8IHwuICB8
LiAgfC4gICAgICBcLi8gfC4gIHwuICB8LiAgICB8CnwgfCArLSsgKy0tICstLSArLS0gICAgICBW
ICArLS0gfCAgICstLSAtLSsK
अनुगामी नई रेखा के बिना, md5sum है 581005bef7ee76e24c019d076d5b375f
और बेस 64 है:
Ky0rICstKyB8ICAgfCAgICstLSAgICAgICAgICstLSArLS0gfCAgIC0tKwp8IHwgfCB8IHwuICB8
LiAgfC4gICAgICBcLi8gfC4gIHwuICB8LiAgICB8CnwgfCArLSsgKy0tICstLSArLS0gggICBW ICArLS0gfCAgICstLstLSAtLSs =
नियम
- मानक खामियों को मना किया जाता है।
- यह कोड गोल्फ है। सबसे छोटा कोड जीतता है।
- ऐसी भाषाएं जो एक समय में इनपुट की कई पंक्तियों को स्वीकार नहीं कर सकती हैं (उदाहरण के लिए जावास्क्रिप्ट के साथ
prompt()
),*
लाइन विभाजक के रूप में उपयोग (या कुछ अन्य चरित्र)।
Erranda
- उदाहरण कुछ स्थानों को याद कर रहा था (ए अंतरिक्ष में पिछले चरित्र के अनुगामी रिक्त स्थान शामिल होने चाहिए, यदि कोई हो, स्वयं, और अपने अनुगामी रिक्त स्थान हैं)। अब यह सुधर गया है।
prompt
इसका उपयोग इनपुट के लिए किया जाता है, लेकिन यह केवल एक ही लाइन को स्वीकार करता है। क्या मैं इनपुट में एक नई लाइन को चिह्नित करने के लिए एक विशेष चार (जैसे '*') का उपयोग कर सकता हूं?