সহায়তা: এলিয়েন প্রোগ্রামাররা কেবল এএসসিআইআই কথা বলে


22

দৃশ্য সেটিং:

এটি আপনার একটি দীর্ঘ সময় বাদে আপনার প্রিয় মনমুগ্ধকর বিষয়ে জড়িত হয়ে: পিপিসিজিতে মনোমুগ্ধকর প্রশ্নের জাঁকজমকপূর্ণ জবাব দেওয়ার কারণে এটি গড়ে একটি গড় বিকেল। এটি আপনার জন্য ভাল দিন ছিল না; এই জঘন্য পাইথ প্রোগ্রামাররা সর্বোত্তম উত্তর পেতে থাকে এবং এটি আপনার বৌটিকে মেরে ফেলছে। হঠাৎ করেই, আপনি লক্ষ্য করেছেন একটি নতুন প্রশ্ন পোস্ট করা হয়েছে! আপনি আপনার মন আপ করুন; এবার নয় সিজেমার্স। তীব্রভাবে, আপনি টাইপ করতে শুরু করেন, অক্ষরের একটি ধারা প্রবাহিত করে; আপনার শেষ পণ্যটি হবে এমন গৌরবময় ব্রেইনফাক লুপের একটি ভ্রূণ। আপনি টাইপ করুন এবং টাইপ করুন। দ্রুত! আরও দ্রুত! আপনি এতই কেন্দ্রীভূত হন যে আপনি এমনকি আপনার পর্দার আলোগুলি জ্বলজ্বল শুরু করতে এবং বন্ধ করতে দেখেন না। হঠাৎ, মনিটরটি সবুজ ঝলকান, ডেস্কটপে ব্র্যান্ডেড চিহ্নের মতো এলিয়েন। আপনার অনর্থক দক্ষতা ব্যবহার করে আপনিcat ~/Desktop/aliensymbolএবং একটি সংখ্যার সংখ্যার সাথে একটি বার্তা উপস্থাপন করুন! আপনি যে বুদ্ধিমান পিপিসিজি প্রোগ্রামার হচ্ছেন, আপনি লক্ষ্য করেছেন যে এটি ASCII এর মতো দেখাচ্ছে। আপনার জন্য কোনও ব্যাপার নয়, আপনি print(chr(i) for i in file)এবং বার্তাটি বোঝাচ্ছেন। আপনার প্রথম চিন্তা: "আমার এটি সম্প্রদায়ের সাথে ভাগ করে নেওয়া দরকার!"।

...

কে এটা ভাববে? এলিয়েনের সাথে যোগাযোগ করা প্রথম ব্যক্তিরা হবেন পিপিসিজির নম্র প্রোগ্রামার। আমরা? হতে পারে কারণ আমরা মানব বুদ্ধির প্রতিচ্ছবি। বা হতে পারে কারণ ব্রেইনফাক যেমন আমাদের কাছে একটি এলিয়েন ভাষা রয়েছে তত কাছাকাছি। তবুও, এলিয়েনরা - অতি-বুদ্ধিমান জীবন যা তারা হ'ল - তারা পরীক্ষা করতে চায় যে তাদের মানব জাতিকে বুদ্ধিমান হিসাবে শ্রেণিবদ্ধ করা উচিত কিনা। আমাদের মানসিক দক্ষতার পরীক্ষা হিসাবে, এলিয়েনরা আমাদের প্রযুক্তিগতভাবে সভ্য বলে প্রমাণ করার জন্য তাদের কয়েকটি কম্পিউটার প্রোগ্রাম প্রেরণ করতে বলেছে। বিষয়টি হ'ল, তারা যে একমাত্র মানব ভাষা বুঝতে পারে তা হ'ল সংখ্যার এএসসিআইআই!

প্রকৃত বুদ্ধিজীবী আলফা কে সেই প্রাণীগুলিকে মানব জাতিকে দেখাতে সহায়তা করুন। আমাদের তাদের একটি স্ক্রিপ্ট প্রেরণ করা দরকার যা আমাদের পাঠ্য ভিত্তিক উত্স কোডগুলিকে তাদের সংখ্যাগত ASCII সংস্করণে রূপান্তর করবে। দুর্ভাগ্যক্রমে, আমাদের অনুন্নত প্রযুক্তির কারণে (ওবামা ধন্যবাদ), আমাদের যথাসম্ভব ছোট একটি অনুবাদ প্রোগ্রাম প্রেরণ করতে হবে। তারা পিপিসিগির সাথে যোগাযোগ করার জন্য ভাল জিনিস!

চ্যালেঞ্জ:

এই চ্যালেঞ্জের ভিত্তিটি সহজ: আপনাকে এমন একটি প্রোগ্রাম লিখতে হবে যা কোনও প্রোগ্রামের সোর্স কোড (বা সেই বিষয়ে কোনও সাধারণ পাঠ্য ফাইল) নেবে এবং প্রতিটি লাইনের নীচে একটি এসএসআইআই অনুবাদ সহ এর স্পেস বিভাজনিত সংস্করণ আউটপুট করবে। এটি, একটি পাঠ্য ফাইলের একটি ইনপুট দেওয়া হলে, আপনাকে of ফাইলের প্রতিটি লাইন আউটপুট করতে হবে তারপরের রেখার প্রতিটি অক্ষরের ASCII উপস্থাপনা সমন্বিত একটি লাইন (প্রতিটি সংখ্যাটি এটি প্রতিনিধিত্ব করে এমন অক্ষরের সাথে আবদ্ধ থাকে) output

একটি উদাহরণ এটি ব্যাপকভাবে স্পষ্ট করবে। 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

বাস্তবায়নের বিশদ:

আপনি যে কোনও ফর্মটি (ওপেনিং ফাইল, কমান্ড লাইন পাইপ, ফাংশন প্যারামিটার ইত্যাদি) ইনপুট নেওয়া চয়ন করতে পারেন এবং আপনাকে স্টাডআউটে আউটপুট দিতে হবে বা কোনও ফাংশন থেকে আউটপুট ফিরিয়ে দিতে হবে।

বিষয়গুলি লক্ষণীয়

  • আউটপুটে প্রতিটি অক্ষর একটি '\ t' দ্বারা পৃথক করে নীচের লাইনে 3 ডিজিটের ফাঁকির জন্য লাইন আপ করতে দেয় (আমরা ধরে নিচ্ছি যে আপনার ট্যাবটি 4 স্পেস বা তার বেশি সেট করা আছে)।
  • রিটার্ন কী টিপে দেওয়া হয়েছিল সেই লাইনে নিউলাইনগুলি প্রদর্শিত হয় (উদাহরণে 10 এর লক্ষ্য করুন)
  • '\ T' এবং '\ n' মুদ্রণের প্রয়োজনীয়তা শিথিল। আপনার আউটপুটটি অবশ্যই সাধারণ অর্থে চোখের কাছে সন্তুষ্ট হওয়া আবশ্যক (সেই ধরণের এলিয়েনদেরও আমাদের নান্দনিক বোধ থাকতে হবে তা দেখানো দরকার) এবং যদি আপনি দৃশ্যমান অখণ্ডতা বজায় রেখে পূর্ববর্তী দুটি পয়েন্টগুলি বাঁকতে পারেন তবে আপনাকে ক্ষমা করা হবে।
  • আপনি শেষ লাইনের শেষে একটি নতুন লাইন আছে কিনা তা ধরে নিতে বেছে নিতে পারেন।

স্কোরিং

এটি কোড-গল্ফ তাই সংক্ষিপ্ততম প্রোগ্রামের জয়। দ্রষ্টব্য, এমনকি যদি আপনার প্রোগ্রামটি সবচেয়ে স্বল্পতম না হয় তবে আপনি যে ভাষাটি ব্যবহার করছেন তার তুলনায় সত্যিই ঝরঝরে কৌশলগুলি ব্যবহার করে, আপনার কাছে অনেকগুলি +1!

শুভকামনা। মানবতার আন্তঃগঠাকর বুদ্ধিমত্তার র‌্যাঙ্কিংটি আপনার কাঁধে রয়েছে।

দ্রষ্টব্য: প্লট গর্ত ক্ষমা করুন। আমি লেখক নই : ডি


8
সম্ভবত "প্লট" বাদ দিন বা সরল করুন এবং কেবল চ্যালেঞ্জটি ছেড়ে যান। আমি সত্যিই ব্যাকস্টোরির 3 টি অনুচ্ছেদ পড়তে যাচ্ছি না। আমি কেবল চ্যালেঞ্জটি পড়তে যাচ্ছি, যেহেতু আমি এখানেই আছি।
mbomb007

1
@ ইয়েটিসিজিএন লাইন ব্রেকটি লাইন ব্রেক হিসাবে কাজ করছে (আপনি চরিত্রটিকে উপস্থাপন করতে পারবেন না তবে আপনি ব্রেকটি দেখতে পারেন) এবং আপনাকে এখনও স্পষ্টভাবে এএসআই সংস্করণে লিখতে হবে। এটিকে এমন ভাবুন যেন আপনি '\ n' এর উত্স কোডটি অনুসন্ধান করেছেন ge আপনার সন্ধানটি যেদিকেই হাইলাইট করবে যেখানে আপনি 10 লিখতে হবে তা এখানে ভিএম এর একটি উদাহরণ (শেষটিকে উপেক্ষা করুন)।
গৌরথ

26
@ mbomb007 টিবিএইচ, এটি ছিল একটি দুর্দান্ত মহাকাব্য back আমি এটি উপভোগ করেছি
মালটিসেন

7
@ mbomb007 যারা পড়তে চান তারা পারেন, যারা সরাসরি চ্যালেঞ্জের অংশে যেতে পারেন না; যেমন সাবটাইটেল সৌন্দর্য।
গৌরথ

1
আমি এটি পড়লাম " মানুষের সাথে যোগাযোগ করার প্রথম ব্যক্তিরা হবেন পিপিসিজির বিনীত প্রোগ্রামাররা" "
marczellm

উত্তর:


5

ডায়ালগ এপিএল , 14 বাইট

স্ট্রিংগুলির তালিকা নেয় যা নতুনলাইন সিকোয়েন্সগুলি অন্তর্ভুক্ত করে (10 বা 13 10 ইত্যাদি)

↑(⊢,[.5]⎕UCS

সমন্বিত তালিকাগুলির তালিকাটি মেট্রিফাই করুন

(... প্রতিটি লাইন ফেরতের জন্য ...

পাঠ্য নিজেই

,[.5] দ্বারা প্রথম মাত্রা আগে একটি নতুন মাত্রা অনুসরণ

⎕UCSইউ nicode সি haracter এস এবং কোড পয়েন্ট

অনলাইনে চেষ্টা করুন!


আপনি একবারে সমস্ত ইনপুট গ্রহণের চেয়ে প্রতি লাইনে একবার এই কল করছেন না?
স্টিভেন এইচ।

1
@StevenH। না, (ফাংশনের ডান দিকের বেশিরভাগ অংশ) ফাংশনটিতে একটি লুপ থাকে তবে সামগ্রিকভাবে, একে কেবল একবার বলা হয়। ট্রাইএপিএল উদাহরণটি দেখুন fযা সরাসরি ইনপুটটিতে ডাকা হয়। প্রতি লাইনে একবার একটি ফাংশন কল করার জন্য, যদি বলতেন
অ্যাডম

9

পাইথ, 17 13 বাইট

সেই পাইথ প্রোগ্রামারগুলির মধ্যে আরও একটি। দুঃখিত।

নতুন কোডটির জন্য প্রতিটি লাইনকে উদ্ধৃতিতে আবদ্ধ করতে হবে এবং পালাতে হবে (আপনি যদি প্রিন্ট করতে চান তবে নিউলাইনগুলি সহ) তবে লাইন এবং এএসসিআইআইয়ের মধ্যে একটি অতিরিক্ত নতুন লাইন রাখে।

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 বাইট

এটি ওপি-র উত্তরের চেয়ে কিছুটা ভিন্ন পদ্ধতির ব্যবহার করে। নোট করুন যে এসও স্পেস সহ আমার আক্ষরিক ট্যাবগুলিকে বিভ্রান্ত করে।

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)?
ডিজেএমসিএমহেম

পছন্দ করুন x+=`ord(c)`+" "একই দৈর্ঘ্য।
mbomb007

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
আপনি যদি \=alভাল বৈশিষ্ট্যটি ব্যাখ্যা করছেন বা কোনও দুঃখী মুখের কারণ তা আপনি বলতে পারবেন না কারণ আপনি
alশাল

2
@timmyD প্রথম এটি আমার দু: খিত মুখ। D;
ডিজেএমসিএমহেম


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

এখানে এক থেকে একটি এন্ট্রি এর "ঐ জঘন্য Pyth প্রোগ্রামারদের" ;)

এমন একটি প্রোগ্রাম যা STDIN- এ একটি অব্যক্ত মাল্টলাইন স্ট্রিংয়ের ইনপুট নেয় এবং ফলাফল মুদ্রণ করে। এটি ধরে নেওয়া হয় যে সমস্ত ইনপুটটির একটি নতুন নতুন লাইন থাকে। যদি আপনি এটির কোনও <চলমান নিউলাইনটি মোকাবেলা করতে না চান তবে প্রোগ্রামের শুরুতে এবং )_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 বাইট সংরক্ষণ করতে পারেন
মালটিসেন

1
@ মালটিসেন প্রশ্ন এবং অন্যান্য উত্তর দিয়ে বিচার করে আমার ধারণা, নতুন লাইনে বিভক্ত হওয়া চ্যালেঞ্জের একটি অংশ।
দ্য বাইকিংভিকিং

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 অক্ষর সেখানে .. বাঁচাতে হবে
অ্যালেক্সিস Wilke

ওহ, আমি এই কোডটিতে কেবল 114 বাইট গণনা করি। আমি মনে করি আপনি এলএফ (117-> 115) এর পরিবর্তে সিআরএলএফ ব্যবহার করছেন, এবং আপনার পিছনে নতুন লাইনের (115-> 114) রয়েছে।
টিম Čas

4

পাওয়ারশেল ভি 2+, 85 বাইট

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

ইনপুট একটি ফাইলের পথ দিয়ে। আমরা তখন Get-Content(ওরফে gc) সেই ফাইলটিতে যা স্বয়ংক্রিয়ভাবে নতুন লাইনে বিভক্ত হয়। আমরা তাদের প্রতিটি লুপ |%{...}। সেট করে $aএবং $bএকটি খালি স্ট্রিংয়ে শুরু করুন - এগুলি যথাক্রমে আমাদের ASCII অক্ষর এবং কোড পয়েন্ট। তারপরে আমরা -splitপ্রতিটি অক্ষরের ইনপুট লাইন রাখি (.)এবং তা খালি মানগুলি সরিয়ে -ne''ফেলি (এটি কীভাবে হয়। নেট রেজেক্স পার্স করার কারণে) তবে সেগুলি অন্য লুপে প্রেরণ করুন।

প্রতিটি অভ্যন্তরীণ লুপ, আমরা বর্তমান অক্ষরটিকে একটি ট্যাব দিয়ে সংযুক্ত করি `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

বাজে, আমি কেবল একটি পাওয়ারশেল উত্তর লিখেছিলাম যখন কোনওভাবে এটির পুরোপুরি মিস করার জন্য পরিচালনা করছি! যদিও পোশ প্রতিনিধিত্ব করে দেখে সর্বদা খুশি! :)
ব্রিটিশবাদী

4

> <> (মাছ), 48 বাইট

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

ভাষায় একটি কাজ জ্বলে! আমি নিশ্চিত যে আমি সম্ভবত আরও কিছুটা গল্ফ করতে পারতাম, তবে অনেক দিন কেটে গেল। পরে যদিও এটি একবার দেখুন।

এটি অনলাইন চেষ্টা করুন!

বিকল্প অনলাইনে এটিকে পরখ করে যে কেমন লাগে আমার মতে nicer কিন্তু পরীক্ষা ক্ষেত্রে মত দীর্ঘ লাইন দিয়ে ইনপুট জন্য একটি বিট আপ পাঠ মোড়ানো messes।


4

পিএইচপি, 131 115 বাইট

কেবল একটি এফজিআইটিডাব্লু, সম্ভবত আমি এটি আরও উন্নত করতে পারি। দেখা যাচ্ছে, আমিও পারি!

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। কোডটিতে নতুন লাইনের উদ্দেশ্য রয়েছে।


3

পাইথন 3, 89 77 বাইট

একই ধারণা উপর ভিত্তি করে আরও গল্ফ সংস্করণ:

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

যদি 'হয় \ টি ইনপুট আছে, তারপর পরিবর্তন 4একটি থেকে 9

পূর্ববর্তী সংস্করণ:

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

স্ট্রিংগুলির একটি তালিকা নেয়, প্রতিটি '\ n' দিয়ে শেষ হয়।


protip: আপনি শেষে সাইটে মুদ্রণ বিবৃতি চলে যাবে 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"    "}

স্ক্রিপ্ট একটি ফাইলপথকে ইনপুট হিসাবে গ্রহণ করে। উত্স-সামগ্রীটি স্বয়ংক্রিয়ভাবে উত্সের নতুন লাইনে আলাদা স্ট্রিংগুলির একটি অ্যারেতে ইনপুট বিভক্ত হয়।

সেখান থেকে আমি একটি ভবিষ্যদ্বাণী প্রবেশ করি, অক্ষরের একটি অ্যারেতে কাস্ট করে এবং এটি $ 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

জাভাস্ক্রিপ্ট (ES6), 94 বাইট

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

যেখানে ␉ আক্ষরিক ট্যাব চরিত্রটি উপস্থাপন করে। যতক্ষণ ইনপুটটিতে ট্যাব অক্ষর না থাকে ততক্ষণ কাজ করে। ৮১-বাইট সংস্করণ যার জন্য একটি ইনপুট দরকার একটি ট্রেলিং নিউলাইন:

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

@ আরনাউল্ড (উদাহরণস্বরূপ) একটি খালি নিউলাইন চরিত্রের জন্য কাজ করে না। এছাড়াও, একটি মন্তব্যে ব্যাকটিক্স অন্তর্ভুক্ত করার জন্য, তাদের ব্যাকস্ল্যাশ দিয়ে আগে।
নিল

2

সি #, 64 63 বাইট

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

এর পরিবর্তে প্রকৃত ট্যাব অক্ষর ব্যবহার করে -1 বাইট \t। দ্রষ্টব্য: উপরে 4 টি স্পেস এবং নীচের অদ্বিতীয় সংস্করণে 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

}

আপনার কোডটি এসকিই 13, 10-র পরিবর্তে নতুন লাইন, চ্যালেঞ্জের আউটপুট উদাহরণ হিসাবে ক্যারেজ রিটার্ন
প্রিন্ট করছে

@ চিরিশ্মান পাওয়ারশেল .ps1 ফাইলগুলিতে লাইনব্রেকের জন্য কেবল ASCII 10 ব্যবহার করে সমর্থন করে তবে বেশিরভাগ পাঠ্য সম্পাদকের সাহায্যে উইন্ডোজে এটি করা কঠিন। এসসিটিইটিই বা নোটপ্যাড ++ বা অন্যান্য লাইন-এন্ডিং সচেতন সম্পাদক ব্যবহার করে আপনি এটি ইউনিক্স এন্ডিং ব্যবহার করছেন তা নিশ্চিত করতে পারেন। একবার আপনি নিশ্চিত হয়ে যান যে ফাইলটিতে কোনও 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 বাইট

আমি তালিকায় (খোলা (ইনপুট ()) পড়ুন ()। বিভক্ত ("\ n")): জে ইন আই: মুদ্রণ (i + "\ n" + আদেশ (জে))

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)

এটি অনির্ধারিত, তবে কাজ করা উচিত।

প্রশ্নটি নির্দিষ্ট করে কোডটি করছে না বলে নির্দেশ করার জন্য @ গৌরাথ ধন্যবাদ Thanks


কেন না? সমস্ত input()কমান্ড করছে যে ফাইলটি খোলার জন্য নাম পাচ্ছে।
Sonrad10

ওগো, ঠিক আছে
Sonrad10

এটি প্রশ্ন উত্স অনুসারে পাঠ্য ও আসকি আউটপুটগুলিকে ওভারলে করে না; শুধু সংখ্যা মুদ্রণ।
গৌরথ

@ গৌরাথ ধন্যবাদ, আমি এটিকে ঠিক করব।
Sonrad10

@ Sonrad10 নির্দিষ্ট না হওয়া পর্যন্ত মুছুন।
mbomb007
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.