सहायता: एलियंस प्रोग्रामर केवल ASCII बोलते हैं


22

दृश्य की स्थापना:

यह एक औसत दोपहर है, जैसा कि आप अपने पसंदीदा शगल में संलग्न होकर एक लंबे दिन के बाद खोलते हैं: पीपीसीजी पर लुभावना सवालों के ढेरों का जवाब देना। यह आपके लिए अच्छा दिन नहीं है; उन शापित पायथ प्रोग्रामर को सबसे अच्छा जवाब मिलता रहा है और यह आपके वाइब को मार रहा है। अचानक, आपने देखा कि एक नया प्रश्न पोस्ट किया गया है! तुम अपना मन बना लेते हो; इस बार CJammers नहीं। उग्र रूप से, आप वर्णों की एक धारा को टाइप करना शुरू करते हैं; शानदार ब्रेनफॉक लूप का एक भ्रूण जो आपका अंतिम उत्पाद होगा। आप टाइप करें और लिखें। और तेज! अभी भी अधिक तेज! आप इतने ध्यान केंद्रित कर रहे हैं कि आप अपनी स्क्रीन पर रोशनी को चालू और बंद करने के लिए भी ध्यान नहीं देते हैं। अचानक, मॉनिटर हरे रंग में चमकता है, डेस्कटॉप पर ब्रांडेड प्रतीक जैसा एक एलियन। अपने त्रुटिहीन कौशल का उपयोग करनाcat ~/Desktop/aliensymbolऔर संख्याओं का एक गुच्छा, एक संदेश के साथ प्रस्तुत करें! आप जो हैं, वह PPCG प्रोग्रामर होने के नाते, आप ध्यान दें कि यह ASCII जैसा दिखता है। आपके लिए कोई बात नहीं, आप print(chr(i) for i in file)और संदेश को समझने के लिए। आपका पहला विचार: "मुझे इसे समुदाय के साथ साझा करने की आवश्यकता है!"।

...

किसने सोचा होगा? यह कि एलियंस से संपर्क बनाने वाले पहले लोग PPCG के विनम्र प्रोग्रामर होंगे। हम क्यों? शायद यह इसलिए है क्योंकि हम मानव बुद्धि के प्रतीक हैं। या हो सकता है क्योंकि ब्रेनफैक लगभग उतना ही है जितना कि हम एक विदेशी भाषा के पास है। फिर भी, एलियंस - अति-बुद्धिमान जीवन रूप हैं जो वे हैं - यह परीक्षण करना चाहते हैं कि क्या उन्हें मानव जाति को बुद्धिमान के रूप में वर्गीकृत करना चाहिए या नहीं। हमारी मानसिक दृढ़ता के परीक्षण के रूप में, एलियंस ने हमें यह दिखाने के लिए कि वे तकनीकी रूप से सुसंस्कृत हैं, उन्हें कुछ कंप्यूटर प्रोग्राम भेजने के लिए कहा है। मुद्दा यह है कि वे जिस एकमात्र मानव भाषा को समझते हैं वह संख्यात्मक ASCII है!

मानव जाति को उन जीवों को दिखाने में मदद करें जो वास्तविक बौद्धिक अल्फा हैं। हमें उन्हें एक स्क्रिप्ट भेजने की आवश्यकता है जो हमारे पाठ आधारित स्रोत कोड को उनके संख्यात्मक ASCII संस्करणों में बदल देगी। दुर्भाग्य से, हमारी अविकसित तकनीक (ओबामा का धन्यवाद) के कारण, हमें अनुवाद का छोटा सा कार्यक्रम भेजना चाहिए। अच्छी बात है कि उन्होंने PPCG से संपर्क किया!

चुनौती:

इस चुनौती का आधार सरल है: आप एक प्रोग्राम लिखने वाले हैं जो किसी भी प्रोग्राम के सोर्स कोड (या उस मामले के लिए कोई भी सामान्य टेक्स्ट फ़ाइल) को ले जाएगा, और प्रत्येक पंक्ति के नीचे ASCII अनुवाद के साथ एक अंतरिक्ष अलग संस्करण को आउटपुट करेगा। अर्थात्, एक टेक्स्ट फ़ाइल का एक इनपुट दिया जाता है, आपको उस फ़ाइल की प्रत्येक पंक्ति को आउटपुट करने की आवश्यकता होती है, जिसमें उसके ऊपर की लाइन में प्रत्येक वर्ण के ASCII प्रतिनिधित्व वाली एक पंक्ति होती है (प्रत्येक संख्या उसके द्वारा प्रस्तुत चरित्र के साथ लाइनिंग के साथ)।

एक उदाहरण इसको बहुत स्पष्ट करेगा। hello worldइनपुट के रूप में कुख्यात के स्रोत कोड लेना :

#include <stdio.h>

int main() {
    printf("hello, world\n");
    return 0;
}

आपका कार्यक्रम आउटपुट होना चाहिए:

#   i   n   c   l   u   d   e       <   s   t   d   i   o   .   h   >
35  105 110 99  108 117 100 101 32  60  115 116 100 105 111 46  104 62  10

10
i   n   t       m   a   i   n   (   )       {
105 110 116 32  109 97  105 110 40  41  32  123 10
                p   r   i   n   t   f   (   "   h   e   l   l   o   ,       w   o   r   l   d   \   n   "   )   ;
32  32  32  32  112 114 105 110 116 102 40  34  104 101 108 108 111 44  32  119 111 114 108 100 92  110 34  41  59  10
                r   e   t   u   r   n       0   ;
32  32  32  32  114 101 116 117 114 110 32  48  59  10
}
125 10

कार्यान्वयन विवरण:

आप अपनी इच्छानुसार इनपुट लेने के लिए चुन सकते हैं (फ़ाइल, कमांड लाइन पाइप, फंक्शन पैरामीटर आदि खोलना) और आपको किसी फ़ंक्शन से आउटपुट को वापस करने या वापस करने के लिए आउटपुट करना चाहिए।

ध्यान देने योग्य बातें

  • आउटपुट में प्रत्येक वर्ण को लाइन में 3 अंकों के स्थान की अनुमति देने के लिए '\ t' द्वारा अलग किया जाता है (हम मान लेते हैं कि आपका टैब 4 स्थानों या अधिक पर सेट है)।
  • नई लाइनें उस लाइन पर प्रदर्शित होती हैं जिसे रिटर्न कुंजी दबाया गया था (उदाहरण में 10 का नोटिस करें)
  • '\ T' और '\ n' मुद्रण आवश्यकताएँ ढीली हैं। आपके आउटपुट को सामान्य अर्थों में, आंख को प्रसन्न करना चाहिए (उन एलियन को दिखाने के लिए जो हमारे पास सौंदर्य बोध है)।
  • आप मान सकते हैं कि अंतिम पंक्ति के अंत में एक नई रेखा है या नहीं।

स्कोरिंग

यह कोड-गोल्फ है इसलिए सबसे कम कार्यक्रम जीतता है। ध्यान दें, भले ही आपका कार्यक्रम सबसे छोटा न हो, लेकिन आप जिस भाषा का उपयोग कर रहे हैं, उसके सापेक्ष बहुत साफ-सुथरी ट्रिक्स का उपयोग करता है, आपके लिए कई + 1!

सौभाग्य। मानवता की अंतरिक्ष संबंधी खुफिया रैंकिंग आपके कंधों पर टिकी हुई है।

नोट: कृपया प्लॉट के छेदों को माफ करें। मैं लेखक नहीं हूं : डी


8
शायद ड्रॉप या बहुत सरल "साजिश" और बस चुनौती छोड़ दें। मैं ईमानदारी से बैकस्टोरी के 3 पैराग्राफ पढ़ने नहीं जा रहा हूं। मैं सिर्फ चुनौती को पढ़ने जा रहा हूं, क्योंकि मैं यहां हूं।
mbomb007

1
@YetiCGN लाइन ब्रेक एक लाइन ब्रेक के रूप में काम कर रहा है (आप इसका प्रतिनिधित्व करने वाले चरित्र को नहीं देख सकते हैं लेकिन आप ब्रेक को देख सकते हैं) और आपको अभी भी इसे एएससीआई संस्करण में स्पष्ट रूप से लिखने की आवश्यकता है। इसे ऐसे समझें जैसे कि आपने regex ने '\ n' के लिए स्रोत कोड खोजा है। हर जगह आपकी खोज हाइलाइट होगी जहां आपको 10. लिखना चाहिए। यहां विम से एक उदाहरण है (पिछले एक को अनदेखा करें)।
गवराथ

26
@ mbomb007 tbh, यह एक सुंदर महाकाव्य बैकस्टोरी थी। मैंने इसका आनंद लिया
माल्टीसेन

7
@ mbomb007 जो लोग पढ़ना चाहते हैं, जो सीधे चुनौती वाले हिस्से में नहीं जा सकते हैं; उपशीर्षक की सुंदरता ऐसी है।
गवराथ

1
मैंने इसे " मनुष्यों के साथ संपर्क बनाने वाले पहले लोगों के रूप में पढ़ा, जो पीपीसीजी के विनम्र प्रोग्रामर होंगे।"
marczellm

जवाबों:


5

दिल्लोग एपीएल , 14 बाइट्स

स्ट्रिंग्स की सूची लेता है जिसमें न्यूलाइन अनुक्रम (10 या 13 10 आदि) शामिल हैं

↑(⊢,[.5]⎕UCS

से मिलकर सूचियों की सूची का मिलान करें

(... प्रत्येक पंक्ति के लिए वापसी ...

पाठ ही

,[.5] द्वारा पहले आयाम से पहले एक नए आयाम में पीछा किया

⎕UCSयू nicode सी haracter एस एट कोड अंक

TryAPL ऑनलाइन!


क्या आप इसे एक बार में सभी इनपुट में लेने के बजाय प्रत्येक पंक्ति में एक बार कॉल नहीं कर रहे हैं?
स्टीवन एच।

1
@StevenH। नहीं, फ़ंक्शन के दाएं-दाएं हिस्से में एक लूप होता है, लेकिन एक पूरे के रूप में, इसे सिर्फ एक बार कहा जाता है। TryAPL उदाहरण देखें जो fसीधे इनपुट पर कहा जाता है। प्रति पंक्ति एक बार किसी फ़ंक्शन को कॉल करने के लिए, यदि उसने कहा होता
आदम

9

पायथ, 17 13 बाइट्स

उन पाइथ प्रोग्रामर का एक और। माफ़ कीजिये।

नए कोड के लिए प्रत्येक पंक्ति को उद्धरण चिह्नों में लपेटने और बच निकलने की आवश्यकता होती है (यदि आप उन्हें मुद्रित करने की इच्छा रखते हैं, तो newlines सहित), लेकिन लाइन और ASCII के बीच एक अतिरिक्त नई रेखा डालता है।

jjLC9smCMBd.Q

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

स्पष्टीकरण:

           .Q  Evaluate all input lines
      m        For each of those lines:
         Bd     Return the line and
       CM       the line mapped to ASCII characters
     s         Sum all these together to begin alternating between line and mapped line
 jLC9          Join all the characters and numbers in the lines and mapped lines on tabs
j              And join all of those on newlines

मैं पुराने कोड और उसके स्पष्टीकरण को नीचे रख रहा हूं।

#Jw
jKC9J
jK+CMJT

इसे ऑनलाइन आज़माएं! या आसानी से पढ़े जाने वाले टेस्ट केस का उपयोग करें

स्पष्टीकरण:

#                  Until we run into an error:
 Jw                 Read in the next line of input and call it J.
                     (When there is no line of input, error is thrown that ends program.) 

j                  Join: 
    J               all characters in input line
 KC9                and insert tab characters (C9), which we can refer to later as K.
                        (Setting it to a variable doesn't save or lose bytes.)

                   Implicit print that join with trailing newline.

j                  Join:
   CMJ              the mapping of ASCII numbers to characters in the input,
 K                  inserting tab characters in between every number
  +   T             And with a trailing 10 for the newline at the end.

1
मुझे लगता है कि आपका पहला लिंक काम नहीं करता है और दूसरा भी नहीं करता है (मुझे लगता है कि नई लाइनें प्रिंट नहीं करता है)। आप इसमें कोड अपडेट कर सकते हैं।
गोवथ

8

पायथन 2, 105 बाइट्स

यह ओपी के उत्तर की तुलना में थोड़ा अलग दृष्टिकोण का उपयोग करता है। ध्यान दें कि SO रिक्त स्थान के साथ मेरे शाब्दिक टैब को गड़बड़ करता है।

def f(s):
 o=x=''
 for c in s:
    o+=c+"  ";x+="%s    "%ord(c)
    if"\n"==c:print o[:-1],x;o=x=''
 print o+"\n"+x

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


x+=ord(c)+" "से छोटा नहीं होगा "%s "%ord(c)?
DJMcMayhem

@DJMcMayhem आप किसी पूर्णांक को एक स्ट्रिंग में जोड़ नहीं सकते हैं। x+=`ord(c)`+" "समान लंबाई है।
mbomb007 21

8

विम, 86, 77 कीस्ट्रोक्स

:g/^/norm A<C-v><C-v>10<C-v><esc>Yp:s/./\=char2nr(submatch(0))."\t"/g<C-v><cr>k:s/./&\t/g<C-v><cr>
:%s/<C-v><cr>0<cr>

यह बहुत लंबा रास्ता है, लेकिन जब आप विम की evalसुविधा ( \=) का उपयोग करते हैं तो आपको यही मिलता है ।


6
बता नहीं सकता है कि क्या आपके \=द्वारा eval फीचर, या एक उदास चेहरे की व्याख्या की जा रही है क्योंकि आप eval फीचर का उपयोग कर रहे हैं ...
AdmBorkBork

2
@timmyD पहला। यह मेरा उदास चेहरा है। D;
DJMcMayhem


6

पर्ल, > 33 31 बाइट्स

के लिए +3 शामिल है -F( -eकोड के साथ जोड़ा नहीं जा सकता है और कोड 'भी है, इसलिए स्थान और -भी गिने जाते हैं)।

STDIN पर इनपुट के साथ चलाएँ या तर्क के रूप में एक या अधिक फ़ाइल नाम दें

perl -M5.010 asciidump.pl <<< "Hoi"

asciidump.pl

#!/usr/bin/perl -F
$"=v9;say"@F@{[unpack'W*']}"

यदि पाठ में कोई टैब है या कोई अंतिम न्यूलाइन नहीं है, तो आउटपुट सौंदर्य नहीं है


5

पायथ, 21 बाइट्स

j.imjC9d.zmjC9+CMdT.z

यहां "उन शापित पाइथ प्रोग्रामर्स" में से एक की प्रविष्टि है ;)

एक प्रोग्राम जो एसटीडीआईएन पर एक निर्विवाद मल्टीलाइन स्ट्रिंग का इनपुट लेता है और परिणाम प्रिंट करता है। यह मानता है कि सभी इनपुट में एक अनुगामी न्यूलाइन है। यदि आप चाहते हैं कि यह बिना किसी नई रूपरेखा के निपटे, <तो कार्यक्रम की शुरुआत में और )_3अंत में जोड़ें।

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

परीक्षण के मामले के लिए आउटपुट ऑनलाइन दुभाषिया में देखना मुश्किल है, इसलिए मैंने इसे यहां शामिल किया है:

#   i   n   c   l   u   d   e       <   s   t   d   i   o   .   h   >
35  105 110 99  108 117 100 101 32  60  115 116 100 105 111 46  104 62  10

10
i   n   t       m   a   i   n   t   (   )       {
105 110 116 32  109 97  105 110 116 40  41  32  123 10
                p   r   i   n   t   f   (   "   h   e   l   l   o   ,       w   o   r   l   d   \   n   "   )   ;
32  32  32  32  112 114 105 110 116 102 40  34  104 101 108 108 111 44  32  119 111 114 108 100 92  110 34  41  59  10
                r   e   t   u   r   n       0   ;
32  32  32  32  114 101 116 117 114 110 32  48  59  10
}
125 10

यह काम किस प्रकार करता है

j.imjC9d.zmjC9+CMdT.z  Program. Input: .z (All of STDIN split on newlines)
     C9                 Yield tab character by taking chr(9)
    j                   Join on tab
   m   d.z             Map that over .z
               CM       Map ord()
              +   T     Append 10
           jC9          Join on tab
          m      d .z  Map that over .z
 .i                    Interleave the results of the two mappings
j                      Join on newlines
                       Implicitly print

आप छुटकारा पाने .zऔर लाइनों की सूची के रूप में इनपुट लेने के द्वारा 2 बाइट्स बचा सकते हैं
Maltysen

1
@ मैलेटेन ने सवाल और अन्य जवाबों को देखते हुए, मुझे लगता है कि नई सुर्खियों में विभाजन चुनौती का हिस्सा है।
TheBikingViking

5

सी, 136 117 114 बाइट्स

#define p(s)while(l[i])printf(s,l[i++]);i=0;puts("")
char l[99];i;f(f){while(fgets(l,99,f)){p("%c\t");p("%d\t");}}

char l[99];i;f(f){while(fgets(l,256,f)){i=0;while(l[i])printf("%c\t",l[i++]);i=0;puts("");while(l[i])printf("%d\t",l[i++]);puts("");}}

इस तरह परीक्षण किया जा सकता है

infile;
main(c,v)char**v;
{
    infile=fopen(v[1],"r");
    f(infile);    
}

char**vअंदर होने से main()आपको वहां 2 अक्षर बचेंगे ..
एलेक्सिस विलके

उह, मैं केवल उस कोड में 114 बाइट्स गिनता हूं। मुझे लगता है कि आप LF (117-> 115) के बजाय CRLF का उपयोग कर रहे हैं, साथ ही आपके पास एक अनुगामी न्यूलाइन (115-> 114) है।
टिम Timस

4

PowerShell v2 +, 85 बाइट्स

gc $args|%{$a=$b='';$_-split'(.)'-ne''|%{$a+="$_`t";$b+="$(+[char]$_)`t"};$a;$b+"10"}

इनपुट एक फ़ाइल के लिए एक पथ के माध्यम से है। हम तब Get-Content(उर्फ gc) उस फाइल पर, जो स्वचालित रूप से न्यूलाइन्स पर विभाजित होती है। हम उनमें से प्रत्येक पर लूप करते हैं |%{...}। सेटिंग $aऔर $bएक रिक्त स्ट्रिंग से शुरू करें - ये क्रमशः हमारे ASCII वर्ण और कोड बिंदु हैं। हम -splitहर वर्ण पर इनपुट लाइन रखते हैं (.), इसे रखते हैं , और खाली मानों को हटाते हैं -ne''(यह कैसे .NET रेगेक्स पार्स के कारण है), फिर उन्हें दूसरे लूप में भेजें।

प्रत्येक आंतरिक लूप, हम स्ट्रिंग को एक टैब के साथ वर्तमान वर्ण को बदलते हैं `tऔर उस पर जोड़ते हैं $a। इसी तरह $b, सिवाय इसके कि हम स्पष्ट रूप से एक charऔर फिर एक इंट के रूप में कास्टिंग कर रहे हैं +

आंतरिक लूप के बाहर, हम परिणामी $aऔर $b(एक लाइनफीड डिज़ाइनर के साथ, क्योंकि यह हमारे लूपिंग में कभी नहीं आएगा) पाइपलाइन पर। जिन्हें Write-Outputकार्यक्रम पूरा होने के अवसर पर इकट्ठा किया जाता है ।

उदाहरण

(इस समझ के साथ कि मुझे एक अनुगामी लाइनफीड मिली है और मार्कडाउन टैब कैरेक्टर को पूरा करता है)

PS C:\Tools\Scripts\golfing> .\aliens-only-understand-ascii.ps1 '.\aliens-only-understand-ascii.txt'
#   i   n   c   l   u   d   e       <   s   t   d   i   o   .   h   >   
35  105 110 99  108 117 100 101 32  60  115 116 100 105 111 46  104 62  10

10
i   n   t       m   a   i   n   t   (   )       {   
105 110 116 32  109 97  105 110 116 40  41  32  123 10
                p   r   i   n   t   f   (   "   h   e   l   l   o   w   ,       w   o   r   l   d   \   n   "   )   ;   
32  32  32  32  112 114 105 110 116 102 40  34  104 101 108 108 111 119 44  32  119 111 114 108 100 92  110 34  41  59  10
                r   e   t   u   r   n       0   ;   
32  32  32  32  114 101 116 117 114 110 32  48  59  10
}   
125 10

धिक्कार है, मैंने अभी एक PowerShell उत्तर लिखा, जबकि किसी तरह पूरी तरह से इस एक को याद करने का प्रबंधन! हालांकि पॉश का प्रतिनिधित्व करते हुए हमेशा खुशी महसूस होती है! :)
briantist

4

> <> (मछली), 48 बाइट्स

>i:0(?v::oa=?v9o
2';'oa<.20r  <~p3
o9nv?=0l
voa<

एक कार्य भाषा पर चमकता है! मुझे यकीन है कि मैं शायद थोड़ा और अधिक बाहर निकाल सकता था, लेकिन यह एक लंबा सप्ताह रहा है। हालांकि बाद में इसे देख सकते हैं।

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

वैकल्पिक यह ऑनलाइन कोशिश करता है कि मेरी राय में अच्छा लग रहा है, लेकिन पाठ लपेटकर परीक्षण मामले की तरह लंबी लाइनों के साथ इनपुट के लिए थोड़ा गड़बड़ करता है।


4

PHP, 131 115 बाइट्स

बस एक FGITW, शायद मैं इस पर और अधिक सुधार कर सकता हूं। पता चला, मैं कर सकता हूँ!

131 बाइट्स पर पहला संस्करण:

<?$s=file($argv[1]);foreach($s as$l){$a=str_split(trim($l));echo join(' ',$a).'
';$i=0;while($c=ord($l{$i++}))echo$c.'  ';echo'
';};

फ़ाइल नाम स्क्रिप्ट नाम के बाद पहले तर्क के रूप में दिया जाता है: php aliens.php helloworld.c

115 बाइट्स पर दूसरा संस्करण:

function($s){foreach($s as$l){$a=str_split($l);echo join('  ',$a);$i=0;while($c=ord($a[$i++]))echo$c.'  ';echo'
';}};

पहला संस्करण लाइन के अंत में लापता नईलाइन्स के लिए है, लेकिन अतिरिक्त स्पष्टीकरण के बाद, हम उस कोड को छोड़ सकते हैं और 16 बाइट्स को बचाने के लिए फ़ंक्शन में सब कुछ डाल सकते हैं।

व्हाट्सएप अक्षर और join(' ',$a)साथ ही echo$c.' 'टैब वर्ण = हैं \t। कोड में newlines उद्देश्य पर हैं।


3

पायथन 3, 89 77 बाइट्स

एक ही विचार के आधार पर अधिक गोल्फ संस्करण:

def f(s):
 for a in s:print(*map('{:>4}'.format,[*a,*a.encode()]),end='\n\n')

अगर वहाँ 'कर रहे हैं \ t इनपुट में है, तो बदल 4एक करने के लिए 9

पिछला संस्करण:

def f(s):
 for l in s:
  print(*l,sep='\t',end='');print(*l.encode(),sep='\t',end='\n\n')

तार की एक सूची लेता है, प्रत्येक एक '\ n' के साथ समाप्त होता है।


प्रोटिप: आप प्रिंट स्टेटमेंट को for l in sयानि की समाप्ति पर छोड़ सकते हैंfor l in s:print(*l,sep='\t',end='');print(*l.encode(),sep='\t',end='\n\n')
डिस्ट्रक्टिबल लेमन

मैं यह परीक्षण नहीं किया है, लेकिन मैं के साथ बंद 8 ले सकता है करने के लिए लगता हैlambda s:'\n\n'.join(*map('{:>4}'.format,[*a,*a.encode()])for a in s)
DJMcMayhem

3

पॉवरशेल, 56 बाइट्स

gc $args|%{($a=[char[]]$_)-join"    ";[int[]]$a+10-join"    "}

स्क्रिप्ट फ़ाइलपथ को इनपुट के रूप में स्वीकार करती है। Get-Content स्वचालित रूप से स्रोत में newlines पर विभाजित स्ट्रिंग्स की एक सरणी में इनपुट को विभाजित करता है।

वहाँ से मैं एक फ़ॉर्च में प्रवेश करता हूं, वर्णों की एक सरणी में डाली जाती है और $ a पर सेट करती हूं, उस टैब के साथ जुड़ें और उसे प्रिंट करें। अगला लेकिन अभी भी फॉर्च्यूनर के भीतर मैं वर्ण सरणी को एक पूर्णांक सरणी में रखता हूं, एक लाइनफ़ीड संलग्न करता हूं और एक टैब के साथ फिर से जुड़ता हूं।

कॉल इस तरह दिखता है:

PS C:\PretendFolder> .\aoua.ps1 ".\aoua.txt"

और यहाँ एक आउटपुट नमूना है

#   i   n   c   l   u   d   e       <   s   t   d   i   o   .   h   >
35  105 110 99  108 117 100 101 32  60  115 116 100 105 111 46  104 62  10

10
i   n   t       m   a   i   n   (   )       {
105 110 116 32  109 97  105 110 40  41  32  123 10
                p   r   i   n   t   f   (   "   h   e   l   l   o   ,       w   o   r   l   d   \   n   "   )   ;
32  32  32  32  112 114 105 110 116 102 40  34  104 101 108 108 111 44  32  119 111 114 108 100 92  110 34  41  59  10
                r   e   t   u   r   n       0   ;
32  32  32  32  114 101 116 117 114 110 32  48  59  10
}
125 10

2

जावास्क्रिप्ट (ईएस 6), 94 बाइट्स

s=>s.replace(/(.*)\n?/g,(s,n)=>n&&[...s].join`␉`+`
${[...n].map(c=>c.charCodeAt()).join`␉`}
`)

जहाँ Where शाब्दिक टैब वर्ण का प्रतिनिधित्व करता है। जब तक इनपुट में टैब वर्ण नहीं होते हैं तब तक काम करता है। 81-बाइट संस्करण जिसके लिए इनपुट के लिए अनुगामी न्यूलाइन भी आवश्यक है:

s=>s.replace(/.*\n/g,s=>[...s].join`␉`+[...s].map(c=>c.charCodeAt()).join`␉`+`
`)

मुझे लगता है कि .split().map()जीत हो सकती है .replace()। एक बार बच गए वर्णों को बैकटिक्स के साथ अनुकूलित करने के बाद, यह 85 बाइट्स होना चाहिए: s=>s.split('\n').map(c=>(s=[...c]).join('\t')+'\n'+s.map(c=>c.charCodeAt()).join('\t')).join('\n')(क्षमा करें, मुझे पता नहीं है कि क्या / कैसे बैकटिक्स को एक टिप्पणी में शामिल किया जा सकता है।)
Arnauld

@Arnauld (जैसे) एक नंगे newline वर्ण के लिए काम नहीं करता है। इसके अलावा, एक टिप्पणी में बैकटिक्स को शामिल करने के लिए, उन्हें बैकस्लैश के साथ पूर्ववर्ती करें।
नील

2

सी #, 64 63 बाइट्स

s=>{foreach(int c in s+(s=""))s+=c+(10==c?"\n":"    ");return s;};

के बजाय वास्तविक टैब चरित्र का उपयोग करके -1 बाइट \t। नोट: ऊपर के 4 स्थानों और नीचे के ungolfed संस्करण में 2 रिक्त स्थान के रूप में प्रस्तुत करता है।

Ungolfed:

/*Func<string, string> Lambda =*/ s =>
{
    // Enumerate the ascii (int) values of the chars in s, 
    // but at the same time set input s to "" to use at the output var.
    // +(s="")   is 2 bytes less than   var o="";
    foreach (int c in s + (s=""))
        // Append the string representation of the ascii value,
        // Append new line if c was new line, otherwise append tab. 
        s += c + (10==c ? "\n" : "  ");
    return s;
};

परिणाम:

(नोट: \r\nजब मैंने इनपुट को चिपकाया है, तो दृश्य स्टूडियो ने नई लाइनों के लिए उपयोग किया है, इसलिए 13 10आउटपुट में लाइन समाप्त हो गई है)

Input:

#include <stdio.h>

int maint() {
    printf("hello, world\n");
    return 0;
}

Output:

35  105 110 99  108 117 100 101 32  60  115 116 100 105 111 46  104 62  13  10
13  10
105 110 116 32  109 97  105 110 116 40  41  32  123 13  10
32  32  32  32  112 114 105 110 116 102 40  34  104 101 108 108 111 44  32  119 111 114 108 100 92  110 34  41  59  13  10
32  32  32  32  114 101 116 117 114 110 32  48  59  13  10
125 

2

सीजेएम, 27 बाइट्स

qN/{_1/9c*N+\{is9c}%+}%AN+*

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

व्याख्या

q       e# Take the whole input
N/      e# Split on newlines
{       e# Map this block to every line:
_        e# Duplicate
1/       e# Split into characters
9c*      e# Join with tabs (ASCII code 9)
N+       e# Append a newline
\        e# Swap top elements
{is9c}%  e# Map each character to its ASCII code plus a tab character
+        e# Concatenate the two lines
}%      e# (end of block)
AN+*    e# Join with "10" plus a newline

1/और sअनावश्यक हैं।
मार्टिन एंडर

2

पॉवरशेल, 61 59 बाइट्स

gc m|%{$b="$_
"[0..$_.Length]
$b-join'    '
[int[]]$b-join' '}

ध्यान देने योग्य बातें:

  • mवर्तमान निर्देशिका में नामित फ़ाइल से इनपुट पढ़ता है ।
  • सभी लाइन ब्रेक, (पहली के बाद स्ट्रिंग में एम्बेडेड सहित $_) केवल शाब्दिक लाइनफीड हैं (0xA), इसलिए प्रत्येक एक बाइट।
  • सीधे -joinसंचालकों के बाद स्ट्रिंग्स की सामग्री प्रत्येक एक एकल टैब वर्ण होती है (भले ही यह यहां कैसे प्रस्तुत की गई हो)।

Ungolfed

Get-Content m | ForEach-Object -Process { # Read the file line by line
    $b = "$_`n"[0..$_.Length]   # Line by line processing strips line endings, so add a newline
                                # Index operator on a [string] returns a [char], or given a [range], a [char[]]
                                # Using $_.Length automatically accounts for the extra linebreak (0 based index)
    $b -join "`t"               # PowerShell displays [char] as the printable character by default, so join the array with a tab
    [int[]]$b -join "`t"        # We need to convert the [char]s to an [int]s so we can display it as a number
                                # So cast the [char[]] as [int[]], then join with tab again

}

आपका कोड ascii 13
छाप रहा है

@Cirishman PowerShell .ps1 फ़ाइलों में लाइनब्रीक के लिए केवल ASCII 10 का उपयोग करके समर्थन करता है, लेकिन अधिकांश पाठ संपादकों के साथ विंडोज में ऐसा करना मुश्किल हो सकता है। SCiTE या नोटपैड ++ या अन्य लाइन-एंडिंग जागरूक संपादकों का उपयोग करके आप यह सुनिश्चित कर सकते हैं कि यह यूनिक्स एंडिंग्स का उपयोग कर रहा है। एक बार जब आप निश्चित हो जाते हैं कि फ़ाइल में कोई 13 नहीं है, तो यह 10 का प्रिंट करेगा।
ब्रितानी

0

जावा, 202 बाइट्स

s->{for(String g : s.split("\n")){g.chars().forEach(c->System.out.print((char)c+"   "));System.out.println();g.chars().forEach(c->System.out.print(c+(c<10?"  ":c<100?"  ":" ")));System.out.println();}};

मैं भी इसे छोटा करने से परेशान नहीं हो सकता।


0

हास्केल - 71 बाइट्स

f q=unlines[(x>>=(++"\t").show.ord)++'\n':intersperse '\t'x|x<-lines q]

-1

पायथन 3, 92 97 107 बाइट्स

i के लिए सूची में (खुला (इनपुट) ()) पढ़ें ()। विभाजन ("\ n")): j में i के लिए: प्रिंट (i + "\ n" + ord (j))

p=print
for i in list(open(input()).read().split("\n"))
    s=t=''
    for j in i:
        r=str(ord(j))
        s+=j+' '*len(r)
        t+=r+' '
    p(s)
    p(t)

यह निष्कलंक है, लेकिन काम करना चाहिए।

यह इंगित करने के लिए धन्यवाद @gowrath कि कोड निर्दिष्ट नहीं कर रहा है जैसा कि प्रश्न निर्दिष्ट करता है।


क्यों नहीं? सभी input()कमांड कर रहे हैं, फ़ाइल को खोलने का नाम मिल रहा है।
सोनारद 10

@gowrath ओह, ठीक है।
सोनाद्र 10

यह पाठ और आस्की आउटपुट को ओवरले नहीं करता जैसा कि प्रश्न युक्ति में है; बस संख्या प्रिंट करता है।
गौवथ

@gowrath धन्यवाद, मैं उस asap को ठीक करूँगा।
सोनारड 10

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