पार्सिंग टेक्स्ट ने मिलिटेक्स फॉण्ट लिखा


56

मिलिटेक्स फ़ॉन्ट का पाठ पढ़ना

यहां एक फ़ॉन्ट है जो प्रत्येक वर्ण को एक एकल, 1x5 पिक्सेल ब्लॉक में फिट करता है। यह ऐसा करता है (आप एक एलसीडी स्क्रीन का उपयोग कर रहे हैं) प्रत्येक पिक्सेल के आरजीबी चैनलों का उपयोग करके एक पिक्सेल को तीन उप-कॉलमों में विस्तारित करने के लिए, प्रत्येक चैनल के लिए एक। आपका कार्य इस फ़ॉन्ट में एन्कोडेड पाठ की एक स्ट्रिंग में ले जाना है और इसे 'डीकोड' करना है।

मिलिटैक्स वर्णमाला

CHARACTER: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ENCODING:  WYWBMRRMMMWYWYWWWMWBMRMYGYGYCWMMMMMW
           MGBWMRRMMMMMRMRRRMGBMRWMMMMMRGMMMMMB
           MGWWWWWBWWWYRMWWMWGBYRWMMYMYGGMMWGGG
           MGRBBBMBMBMMRMRRMMGBMRMMMRWMBGMCWMGR
           WWWWBWWBWWMYWYWRWMWWMWMMGRCMYGWBMMGW

मैंने प्रत्येक रंग को एक वर्ण चिह्न (R = लाल, G = हरा, B = नीला, C = सियान, Y = पीला, M = मजेंटा, W = सफेद) के रूप में संक्षिप्त किया है।

इनपुट प्रारूप

इसके लिए इनपुट प्रारूप बहुत खुला है। आपके पास एक कॉलम हो सकता है जिसमें प्रत्येक स्तंभ, प्रत्येक पंक्ति के साथ एक सरणी char[][], या ऐसा कुछ भी हो सकता है। आप अपनी पसंद के अपरकेस / लोअरकेस के साथ "लाल", "ग्रीन", "ब्लू", "ब्लू" शब्दों का उपयोग करना चुन सकते हैं (लेकिन यह प्रत्येक शब्द के अनुरूप होना चाहिए! आप "RED" का उपयोग नहीं कर सकते हैं और "ग्रीन" भी कर सकते हैं) या "ब्लू")।

यदि आपकी भाषा इसका समर्थन करने के लिए होती है, तो आप इनपुट रंग भी हो सकते हैं (हालांकि यह काम कर सकता है, मुझे पता नहीं है)।

आप मान सकते हैं कि इनपुट में केवल वर्णमाला में एन्कोड किए गए वर्ण होंगे (विशेष रूप से, आपके आउटपुट में कोई स्थान या विराम चिह्न नहीं होगा)।

आउटपुट स्वरूप

आप या तो एक स्ट्रिंग या किसी प्रकार के वर्ण सरणी का आउटपुट कर सकते हैं। आप चुन सकते हैं कि क्या पत्र अपरकेस या लोअरकेस हैं, लेकिन उनके पास एक ही मामला होना चाहिए।

उदाहरण

MWRRGMGYRY
MRRRMMMMRM
WWRRMWMYRM -> HELLOWORLD
MRRRMWMMRM
MWWWGMGMWY

नियम

यह , इसलिए सबसे कम उत्तर जीतता है!

टेस्ट सेट

WMWGMWWMYYGMYWGMBMMYWYGMWYWMWRWWMYGW
GMRMMGRMMMMMMRMMBMWMRMMMRMGMRRMBMMMR
GWWMMGRYYYMWMWMGBMWYWMMMWYGWWRWGGMMM -> THEQUICKBROWNFOXJUMPEDOVERTHELAZYDOG
GMRWMGRMMMMWMRMMBMMRRMMCRMGMRRMRGMMM
GMWCWWWMYMGMMRGMWWMRWYGBWMGMWWMWGYGW

15
मुझे ऐसा लगता है कि आप या तो सभी पत्रों को हार्डकोड करते हैं या यहां एक मैथेमेटिका बिल्टिन का उपयोग करते हैं।
किसी ने

7
पहली चुनौती, BTW!
अरनुलद

6
यहाँ निश्चित फ़ॉन्ट (कई अन्य वर्ण गलत हैं) है।
अरनुलद

7
मुझे नहीं पता कि आप अंग्रेजी वर्णमाला के सभी अक्षरों को शामिल करने के लिए अपना परीक्षण सेट चाहते थे या नहीं, लेकिन अगर बेटा जिसे पैंग्राम कहा जाता है और "THEQUICKBROWNFOXJUMPEDOVERTHELAZYDOG" एक "एस" के रूप में नहीं है, यदि आप इसे चाहते थे। यह होना चाहिए "THEQUICKBROWNFOXJUMPESOVERTHELAZYDOG"
MindSwipe

5
@JonofAllTrades JUMPS एक संभावना है। और आप ए के लिए उनमें से एक को बदलकर दो पात्रों को खो सकते हैं
एंड्रयू लीच

जवाबों:


16

जावास्क्रिप्ट (ईएस 6),  103 100 93 92  90 बाइट्स

सहेजे गए 9 बाइट @ShieruAsakoto को धन्यवाद

कॉलम की एक सरणी के रूप में इनपुट लेता है। वर्णों की एक सरणी देता है।

a=>a.map(s=>"H-L-D--VGQ87MR6TZ-KJ9WC05BUXF1YI2EON3S-A-P4"[parseInt(s,35)%1161%219%152%43])

इसे ऑनलाइन आज़माएं!


1
@ शायरुअसाकोतो धन्यवाद! गुणन एक अच्छा विचार नहीं था। मैंने 3 मॉड के साथ 1 और बाइट को बचाया।
अरनुलद

1
वे वहाँ पर कुछ बड़े modulos हैं ... शायद आप उन्हें और अधिक सुधार कर सकते हैं ताकि -गायब हो जाए! : D
३ol पर आउटगोल्फर

पूरी ताकत के बाद मैंने 4 मॉड्स के साथ 90 प्राप्त किया a=>a.map(s=>"H-L-D--VGQ87MR6TZ-KJ9WC05BUXF1YI2EON3S-A-P4"[parseInt(s,35)%1161%219%152%43])
शायरु असाकोटो

@ShieruAsakoto दुर्भाग्य से, चुनौती में वर्णित फ़ॉन्ट गलत है। ओपी से संभावित अद्यतन की प्रतीक्षा की जा रही है।
अरनुलद

@ अर्नुलद तय एक मेरी प्रगति के लिए अब एक 93 है:a=>a.map(s=>"UIR-L68N--W-X7B-FH-D-EZ--902-S4M5GJCQT3PKV-A1-YO"[parseInt(s,35)%464%107%99%52])
Shieru Asakoto

9

जेली , 50 बाइट्स

Oḅ⁹%211“ẎP\7ßɱðvs*Ḋ⁹UfRMJiẒVƑ).Z½Ƈ"}~ḌyH⁵Ŀ⁶Ṿ‘iⱮịØB

इसे ऑनलाइन आज़माएं!

स्तंभ की सूची के रूप में इनपुट को स्वीकार करने और अनुवाद के जेली स्ट्रिंग को आउटपुट करने के लिए एक मोनैडिक लिंक। पालन ​​करने के लिए पूर्ण स्पष्टीकरण, लेकिन इस तथ्य पर निर्भर करता है कि कोड अंक में परिवर्तित होने पर, बेस -255 से दशमलव में और फिर मॉड 211 में परिवर्तित होने पर 5 अक्षरों में से प्रत्येक संभव सेट अद्वितीय है।

वैकल्पिक अर्नुल्ड के निश्चित फ़ॉन्ट (49 बाइट्स और उसी सिद्धांत का उपयोग करके) का उपयोग करना।

व्याख्या

O                   | Convert to code points
 ḅ⁹                 | Convert from base 256 to decimal
   %211             | Mod 211
       “Ẏ...Ṿ‘iⱮ    | Find indices in [209,80,92,55,21,162,24,118,115,42,193,137,85,102,82,77,74,105,189,86,146,41,46,90,10,144,34,125,126,173,121,72,133,199,134,186]
                ịØB | Index into 01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ

7

डीज़िमा / एपीएल, 80 79 73 72 71 बाइट्स

' P  FL6BDEZQA SY574H TVOK J 08  M  U IC92XW 3G1RN'⊇⍨52|8965|2411⊥¨⎕ucs

इसे ऑनलाइन आज़माएं!


1
आपके एपीएल में क्या विशेष विशेषताएं हैं?
योना

2
@ जोनाह यहाँ केवल इस्तेमाल की जाने वाली चीज (समान {⍵[⍺]}) है, इसके अलावा, इन दो फाइलों में इसके बारे में जानकारी है
dzaima

6

05AB1E , 45 44 बाइट्स

40ö98%•Wþ@»Ý¢a:µ@,–çòßuÒ¹₃©6µć‚FVÝ∊J?•2ôžLR‡

इसे ऑनलाइन आज़माएं!

स्तंभों के सरणी के रूप में इनपुट लेता है, और वर्णों की एक सरणी आउटपुट करता है।

स्पष्टीकरण:

40ö                       # convert each column from base 40
   98%                    # modulo 98
      •...•2ô             # compressed array: [20, 32, 82, 30, 27, 28, 76, 89, 46, 96, 36, 4, 18, 12, 80, 75, 50, 86, 42, 2, 52, 92, 48, 0, 84, 1, 88, 90, 10, 26, 70, 41, 94, 64, 14, 60]
             žLR          # built-in array 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
                ‡         # transliterate

6

आर , 143 128 बाइट्स

function(v)c(0:9,LETTERS)[match(colSums((sapply(v,U<-utf8ToInt)*194:198)%%45:41),U("#</Eb=,n9J.M4Z+%*V N[Hd\\B?1Oj>KgRYT2")+34)]

इसे ऑनलाइन आज़माएं!

इनपुट के रूप में स्ट्रिंग्स (कॉलम के अनुरूप) का वेक्टर लेना

MWRRG
MRRRM
WWRRM -> c('MMWMM','WRWRW','RRRRW','RRRRW','GMMMG') -> HELLO
MRRRM
MWWWG

स्पष्टीकरण:

प्रत्येक एन्कोडेड स्ट्रिंग (उदाहरण के लिए 'CRGBY' = 'S') के लिए निम्नलिखित ऑपरेशन करना:

        TO ASCII      MULTIPLICATION             MODULO              SUM &              TO
        CODEPOINT                                                    OFFSET             ASCII
---------------------------------------------------------------------------------------------

'C'        67        67 * 194 = 12998       12998 %% 45 = 38  \
'R'        82        82 * 195 = 15990       15990 %% 44 = 18  |
'G'  --->  71  --->  71 * 196 = 13916  ---> 13916 %% 43 = 27  |---> (140 - 34) = 106 ---> 'j'
'B'        66        66 * 197 = 13002       13002 %% 42 = 24  |
'Y'        89        89 * 198 = 17622       17622 %% 41 = 33  /

हम निम्नलिखित स्ट्रिंग प्राप्त करते हैं '#</Eb=,n9J.M4Z+%*V N[Hd\B?1Oj>KgRYT2'जहां प्रत्येक वर्ण से मेल खाती है '0123456789ABCDEFGHIJKLMNOPQR'

तो, कोड इनपुट स्ट्रिंग्स पर वर्णित संचालन करता है, फिर '#</Eb=,n9J.M4Z+%*V N[Hd\B?1Oj>KgRYT2'स्ट्रिंग में पदों को प्राप्त करने के अंदर उनके पत्राचार को खोजता है '0123456789ABCDEFGHIJKLMNOPQR'


यह चतुर दिखता है, लेकिन यह स्पष्ट नहीं है कि कोड का उपयोग कैसे करें: मुझे फ़ंक्शन को क्या करना चाहिए? चरित्र वैक्टर और सादे वेक्टर दोनों की एक सूची "गैर-अनुरूप तर्क" के साथ विफल हो जाती है। तो एक चरित्र मैट्रिक्स करता है।
कोनराड रुडोल्फ

@KonradRudolph: ने इनपुट का एक न्यूनतम विवरण जोड़ा (और अधिक स्पष्ट होने के लिए TIO को बदल दिया)। जैसे ही मैं कोड की एक व्याख्या जोड़ सकता हूं, जो मुझे यकीन है कि यूनिकोड के बजाय ASCII रेंज में मूल्यों को लौटाने वाले तार के लिए एक अन्य "हैशिंग" फ़ंक्शन ढूंढकर सुधार किया जा सकता है ...
digEmAll

@digEmAll हाँ, मैं अंकों को अलग-अलग वर्णों की एक अधिक उचित सीमा तक नीचे ले जाने के साथ खेल रहा हूं, लेकिन अभी तक कुछ भी नहीं
Giuseppe

@digEmAll आह कि काम करता है (मेरे पास पंक्ति-प्रमुख की बजाय कॉल-मेजर के रूप में डेटा था) लेकिन आपका उदाहरण "HEKKN" में है, न कि "हेलो"। मुझे बहुत भ्रम है कि यह TIO पर काम करता प्रतीत होता है। विभिन्न (गैर-यूटीएफ -8) एन्कोडिंग, मुझे लगता है।
कोनराड रुडोल्फ

1
@KonradRudolph: ने एक संक्षिप्त स्पष्टीकरण (और एक छोटा कोड पाया);)
digEmAll

3

चारकोल , 66 बाइट्स

WS§”*&_⟲⎇4>υ≧Y⪪ml^π≕t.A;p↶⧴q⊗Hε‖r¡¡ºÞd⸿σC⁺⮌”﹪﹪﹪⍘ιWMYCBGR³⁶⁰¦¹¹³¦⁷¹

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। किसी रिक्त पंक्ति के साथ समाप्त किए गए स्तंभों की सूची के रूप में इनपुट लेता है। स्पष्टीकरण:

WS

एक रिक्त होने तक इनपुट स्ट्रिंग्स।

§”*&_⟲⎇4>υ≧Y⪪ml^π≕t.A;p↶⧴q⊗Hε‖r¡¡ºÞd⸿σC⁺⮌”

चक्रीय रूप से स्ट्रिंग में अनुक्रमणिका OV EX8HSCF5IA L TG 17 M P9RB 4 K ZY2 0JW 63Q ND U(अनुगामी स्थान के साथ) 56 वर्ण लंबा है।

﹪﹪﹪⍘ιWMYCBGR³⁶⁰¦¹¹³¦⁷¹

वर्णमाला का उपयोग कर बेस -7 रूपांतरण करें WMYCBGR और फिर क्रमिक रूप से 360, 113, 71 और 56 को चक्रीय अनुक्रमण के माध्यम से कम करें।

मेरा आधार 7 दृष्टिकोण वास्तव में @ अरनौल्ड के नियत फ़ॉन्ट के साथ खराब है; कुछ खोज के बाद भी मैं 73 बाइट पर था। @ ग्रिम के दृष्टिकोण का उपयोग करते हुए इसे 67 बाइट्स तक काट दिया गया। हालाँकि मैंने अंततः एक 66 बाइट समाधान का पता लगाया:

WS§”*&″ÀM↔↓<J;×⊟ςF,Gηe↖ητγ´WIY³﹪▶⟧9?δc⁶AxDê↷hPiψ”﹪﹪﹪⍘ι⁴⁷¦²³⁷¦⁷³¦⁶⁷

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। स्पष्टीकरण:

WS

एक रिक्त होने तक इनपुट स्ट्रिंग्स।

§”*&″ÀM↔↓<J;×⊟ςF,Gηe↖ητγ´WIY³﹪▶⟧9?δc⁶AxDê↷hPiψ”

स्ट्रिंग में चक्रवाती सूचकांक ID HAM178 VS4F 3R EP6CQ Z UB O 0 X 9 G 5TNJKL2Y Wजो 63 वर्ण लंबा है।

﹪﹪﹪⍘ι⁴⁷¦²³⁷¦⁷³¦⁶⁷

आधार -47 रूपांतरण का उपयोग वर्णमाला का उपयोग करके करें 0-9A-Za-kऔर फिर क्रमिक रूप से 237, 73, 67 और 63 को चक्रीय अनुक्रमण के माध्यम से कम करें।


2

CJam (63 बाइट्स)

{{Gb"õáÖÅ{a("{i%}/"@/Ö´çýß}yùÜÅ©GôÉç¢"256b43b'0f+=}%}

या xxd प्रारूप में

0000000: 7b7b 4762 22f5 e1d6 c59f 7b61 2822 7b69  {{Gb".....{a("{i
0000010: 257d 2f22 0b8a 8340 982f d6b4 e793 fddf  %}/"...@./......
0000020: 7d79 f9dc c519 17a9 0e47 0ef4 c9e7 a222  }y.......G....."
0000030: 3235 3662 3433 6227 3066 2b3d 7d25 7d    256b43b'0f+=}%}

यह एक अनाम ब्लॉक (फ़ंक्शन) है जो स्तंभों की सूची के रूप में इनपुट की अपेक्षा करता है। ऑनलाइन डेमो

अन्य उत्तर के रूप में, यह एक लुकअप टेबल प्राप्त करने के लिए% की श्रृंखला के बाद आधार रूपांतरण करता है। इस मामले में मैं बेस 16 और% चेन का उपयोग करता हूं [245 225 214 197 159 123 97 40]


2

जेली , 48 बाइट्स

OḌ%⁽qƥ%⁹%53“ð×⁼ẎėWWæ¤jḌṛ>÷ƭÑṙsṛḌz0Ġọµḷ’b51¤iⱮịØB

अपरकेस वर्णों की सूची (प्रत्येक स्तंभ के रूप में) को स्वीकार करने वाला एक विचित्र लिंक जो वर्णों की सूची तैयार करता है।

इसे ऑनलाइन आज़माएं!

कैसे?

OḌ%⁽qƥ%⁹%53“...’b51¤iⱮịØB - Link: columns
O                         - ordinals
 Ḍ                        - convert from base ten
  %⁽qƥ                    - modulo 29415
      %⁹                  - modulo 256
        %53               - modulo 53
                    iⱮ    - map with first index of x in:
                   ¤      -   nilad followed by link(s) as a nilad:
           “...’          -     22270425059867513817410846141176204460122938458128124185752719
                b         -     convert to base
                 51       -       51
                          -     ... = [38,13,19,27,10,16,20,11,35,31,4,17,9,0,50,45,24,25,34,39,22,29,41,32,3,7,46,5,48,18,6,44,28,14,1,8]
                      ị   - index into
                       ØB -   "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"


1

स्टेक्स , 46 बाइट्स

é►^njÖ_╪»Θîq╪↨δXû=▀úæ5?ªoéV╫╫╩ßH‼╒C═e┼$⌠°JqUu⌡

इसे चलाएं और डीबग करें

प्रत्येक स्तंभ को आधार -36 के रूप में डिकोड किया गया है। 8273 के क्रमिक मापांक, तो 95 लागू होते हैं। यह एक अद्वितीय संख्या देता है, एक निश्चित स्ट्रिंग में देखा गया।

यह उदाहरणों में निर्दिष्ट प्रारूप में बिल्कुल इनपुट लेता है, और कॉलम प्राप्त करने के लिए उन्हें स्थानांतरित करना पड़ता है। मैं कुछ अलग इनपुट प्रारूप का उपयोग करके कुछ बाइट्स को बचाने में सक्षम हो जाऊंगा, जो मैं किसी बिंदु पर कर सकता हूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.