पृष्ठभूमि
PICASCII एक साफ उपकरण है जो छवियों को ASCII कला में परिवर्तित करता है।
यह निम्नलिखित दस ASCII वर्णों का उपयोग करके चमक की विभिन्न डिग्री प्राप्त करता है:
@#+';:,.`
हम कहेंगे कि इन charxels (वर्ण तत्वों) में 1 (एट-साइन) से लेकर 10 (स्पेस) तक की चमक है।
नीचे, आप एक छोटे कोड को बदलने के परिणाम देख सकते हैं, वेल्श ध्वज, एक ओवरहैंड भग्न, एक बड़ा ट्राउट और थोड़ा गोल्फ, सही फ़ॉन्ट के साथ प्रदर्शित:
आप इस फ़ाइल में चित्र देख सकते हैं और उन्हें Google ड्राइव से डाउनलोड कर सकते हैं ।
कार्य
जबकि PICASCII के अंतिम परिणाम नेत्रहीन मनभावन हैं, सभी पांच छवियों को मिलाकर 153,559 बाइट्स का वजन होता है। यदि हम उनकी गुणवत्ता के हिस्से का त्याग करने को तैयार हैं तो ये चित्र कितने संकुचित हो सकते हैं?
आपका कार्य एक ऐसा प्रोग्राम लिखना है जो ASCII कला छवि जैसे कि ऊपर वाले और इनपुट के रूप में एक न्यूनतम गुणवत्ता को स्वीकार करता है और छवि के एक हानिपूर्ण संपीड़न को प्रिंट करता है - एक पूर्ण कार्यक्रम या एक एकल स्ट्रिंग को लौटाने वाले फ़ंक्शन के रूप में - जो संतुष्ट करता है। गुणवत्ता की आवश्यकता।
इसका मतलब है कि आपको एक अलग डिकम्प्रेसर लिखने के लिए नहीं मिलता है; इसे प्रत्येक संपीड़ित चित्रों में अंतर्निहित होना चाहिए।
मूल छवि 1 और 10 के बीच चमक के साथ charxels से मिलकर बनेगी, एक ही लंबाई की रेखाओं में फीडफ़ीड द्वारा अलग। संकुचित छवि में समान आयाम होने चाहिए और समान वर्णों का उपयोग करना चाहिए।
N charxels से मिलकर एक असम्पीडित छवि के लिए, छवि के एक संपीड़ित संस्करण की गुणवत्ता को परिभाषित किया गया है
जहां ग मैं की चमक है मैं वें संकुचित छवि उत्पादन का charxel और यू मैं की चमक मैं वें असम्पीडित छवि के charxel।
स्कोरिंग
आपका कोड ऊपर की पाँच छवियों और 0.50, 0.60, 0.70, 0.80 और 0.90 की न्यूनतम गुणवत्ता सेटिंग्स के साथ चलाया जाएगा।
आपका स्कोर सभी संपीड़ित छवियों के आकार का ज्यामितीय माध्य है, अर्थात, सभी पच्चीस संकुचित छवियों की लंबाई के उत्पाद का पच्चीसवाँ मूल।
सबसे कम स्कोर जीतता है!
अतिरिक्त नियम
आपके कोड को मनमानी छवियों के लिए काम करना है, न कि केवल स्कोरिंग के लिए इस्तेमाल होने वाले।
यह उम्मीद की जाती है कि आप अपने कोड को परीक्षण के मामलों के लिए अनुकूलित करते हैं, लेकिन एक प्रोग्राम जो मनमाने ढंग से छवियों को संपीड़ित करने का प्रयास भी नहीं करता है, वह मुझसे नहीं मिलेगा।
आपका कंप्रेसर अंतर्निहित बाइट स्ट्रीम कंप्रेशर्स (जैसे, gzip) का उपयोग कर सकता है, लेकिन आपको उन्हें संपीड़ित छवियों के लिए स्वयं को लागू करना होगा।
बाइट-इन आमतौर पर बाइट स्ट्रीम डिकम्प्रेसर (जैसे, आधार रूपांतरण, रन-लंबाई डिकोडिंग) में उपयोग किया जाता है।
कंप्रेसर और संपीड़ित छवियां एक ही भाषा में नहीं होती हैं।
हालाँकि, आपको सभी संपीड़ित चित्रों के लिए एक ही भाषा चुननी चाहिए।
प्रत्येक संकुचित छवि के लिए, मानक कोड गोल्फ नियम लागू होते हैं।
सत्यापन
मैंने सभी गुणवत्ता आवश्यकताओं को आसानी से सत्यापित करने और सबमिशन के स्कोर की गणना करने के लिए सीजेएम स्क्रिप्ट बनाई है।
आप यहाँ या यहाँ से जावा दुभाषिया डाउनलोड कर सकते हैं ।
e# URLs of the uncompressed images.
e# "%s" will get replaced by 1, 2, 3, 4, 5.
"file:///home/dennis/codegolf/53199/original/image%s.txt"
e# URLs of the compressed images (source code).
e# "%s-%s" will get replaced by "1-50", "1-60", ... "5-90".
"file:///home/dennis/codegolf/53199/code/image%s-%s.php"
e# URLs of the compressed images (output).
"file:///home/dennis/codegolf/53199/output/image%s-%s.txt"
e# Code
:O;:C;:U;5,:)
{
5,5f+Af*
{
C[IQ]e%g,X*:X;
ISQS
[U[I]e%O[IQ]e%]
{g_W=N&{W<}&}%
_Nf/::,:=
{
{N-"@#+';:,.` "f#}%z
_::m2f#:+\,81d*/mq1m8#
_"%04.4f"e%S
@100*iQ<"(too low)"*
}{
;"Dimension mismatch."
}?
N]o
}fQ
}fI
N"SCORE: %04.4f"X1d25/#e%N
उदाहरण
बैश → PHP, स्कोर 30344.0474
cat
सभी इनपुट के लिए 100% गुणवत्ता प्राप्त करता है।
$ java -jar cjam-0.6.5.jar vrfy.cjam 1 50 1.0000 1 60 1.0000 1 70 1.0000 1 80 1.0000 1 90 1.0000 2 50 1.0000 2 60 1.0000 2 70 1.0000 2 80 1.0000 2 90 1.0000 3 50 1.0000 3 60 1.0000 3 70 1.0000 3 80 1.0000 3 90 1.0000 4 50 1.0000 4 60 1.0000 4 70 1.0000 4 80 1.0000 4 90 1.0000 5 50 1.0000 5 60 1.0000 5 70 1.0000 5 80 1.0000 5 90 1.0000 SCORE: 30344.0474