Yardım: Yabancılar Programcılar sadece ASCII konuşuyor


22

Sahneyi Ayarlamak:

En sevdiğiniz eğlenceye katılarak uzun bir günün ardından gevşeyeceğiniz için ortalama bir öğleden sonra: PPCG'de büyüleyici soruları cevaplama. Senin için iyi bir gün olmadı; Bu lanet olası Pyth programcıları her zaman en iyi cevabı almaya devam ediyorlar ve bu durum sizi öldürüyor Birdenbire yeni bir soru gönderildiğini fark ettiniz! Sen kararını verdin; bu sefer CJammers değil. Öfkeli bir şekilde, bir karakter akışı doğuran yazmaya başlarsınız; Son ürününüzün görkemli BrainFuck döngüsünün fetüsü. Siz yazın ve yazın. Daha hızlı! Daha hızlı hala! O kadar odaklandınız ki ekranınızdaki ışıkların açılıp kapanmaya başladığını bile fark etmiyorsunuz. Birdenbire, monitör yeşil renkte parlıyor, masaüstünde markalanmış bir yabancı. Kusursuz becerilerinizi kullanarakcat ~/Desktop/aliensymbolve bir sürü numarayla mesajlaşın! Sizin kurnaz PPCG programcısı olduğunuzda ASCII gibi göründüğünü fark edersiniz. Senin için önemi yok, sen print(chr(i) for i in file)ve mesajı deşifre et. İlk düşünceniz: "Bunu toplulukla paylaşmalıyım!".

...

Kim düşünebilirdi ki? Uzaylılarla ilk temas kuran insanların PPCG'nin mütevazi programcıları olması. Neden biz? Belki de bunun nedeni, insan zekasının özü olduğumuzdur. Ya da belki BrainFuck yabancı bir dile ihtiyacımız kadar yakındır. Yine de, yabancılar - ultra zeki yaşamlar oldukları gibi - insan ırkını zeki olarak sınıflandırıp sınıflandırmayacaklarını test etmek istiyorlar. Zihinsel kahramanlığımızın bir testi olarak, uzaylılar bizden teknolojik olarak kültürlendiğimizi göstermek için birkaç bilgisayar programı göndermemizi istedi. Mesele şu ki, anladıkları tek insan dili sayısal ASCII!

İnsanlığın gerçek entelektüel alfa olduğunu yaratıklara göstermesine yardım edin. Onlara metin tabanlı kaynak kodlarımızı sayısal ASCII sürümlerine dönüştürecek bir komut dosyası göndermemiz gerekiyor. Ne yazık ki, az gelişmiş teknolojimizden dolayı (teşekkürler Obama), olabildiğince küçük bir çeviri programı göndermeliyiz. İyi ki PPCG ile bağlantı kurmayı seçtiler!

Meydan okuma:

Bu zorluğun temeli basittir: herhangi bir programın kaynak kodunu (veya bu konuda herhangi bir genel metin dosyasını) alacak bir program yazacak ve her satırın altında bir ASCII çevirisi ile ayrılmış bir alan çıktısı alacaksınız. Diğer bir deyişle, bir metin dosyasının girişi göz önüne alındığında, o dosyanın her satırını, ardından her satırın ASCII gösterimini içeren satırın (her biri sayı temsil ettiği karakter ile sıralanır) içeren bir satır çıkarmanız gerekir.

Bir örnek bunu büyük ölçüde açıklayacaktır. Giriş ünitesinin kaynak kodunu alarak hello world:

#include <stdio.h>

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

programınızın çıktısı:

#   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

Uygulama ayrıntıları:

İstediğiniz şekilde girdi almayı (açılış dosyası, komut satırı borusu, fonksiyon parametresi vb.) Almayı seçebilir ve stdout'a çıkış yapmalısınız ya da bir fonksiyondan çıkışı döndürmelisiniz.

Dikkat edilecek şeyler

  • Çıktıdaki her karakter, aşağıdaki satırdaki 3 basamaklı alanın hizalanmasına izin vermek için bir '\ t' ile ayrılır (sekmenizin 4 boşluk veya daha fazlasına ayarlandığını varsayacağız).
  • Yeni satırlar, geri dönüş tuşunun basıldığı satırda görüntülenir (örnekteki 10'lara dikkat edin)
  • '\ T' ve '\ n' yazdırma gereksinimleri gevşek. Çıktınız, genel anlamda, göze hoş görünmeli (bu uzaylılara estetik anlamda da sahip olduğumuzu göstermemiz gerekir) ve görsel bütünlüğü korurken önceki iki noktayı bükebilirseniz affedilirsiniz.
  • Son satırın sonunda yeni satır olup olmadığını varsaymayı seçebilirsiniz.

puanlama

Bu kod golf yani en kısa program kazanır. Programınız en kısa olmasa da, kullandığınız dile göre çok düzenli püf noktaları kullanıyor olsa da, sizin için birçok + 1!

İyi şanslar. İnsanlığın galaksiler arası istihbarat sıralaması omuzlarınıza dayanır.

Not: Lütfen arsa deliklerini bağışlayın. Ben bir yazar değilim : D


8
Belki "komplo" bırak veya büyük ölçüde basitleştirin ve sadece meydan okudum. Dürüst olmak gerekirse, backstory'nin 3 paragrafını okuyamayacağım. Ben sadece mücadeleyi okuyacağım, çünkü bunun için buradayım.
mbomb007

1
@YetiCGN Satır sonu, satır sonu olarak işlev görür (onu temsil eden karakteri göremezsiniz ancak arayı görebilirsiniz) ve hala açıkça ascii sürümünde yazmanız gerekir. Regex '\ n' için kaynak kodunu araştırmış gibi düşünün. Aramanızın vurgulayacağı her yer, 10 yazmanız gereken yerdir. İşte vim'den bir örnek (sonuncuyu görmezden gelin).
gowrath

26
@ Mbomb007 tbh, bu oldukça epik bir sahne arkasıydı. Ben çok memnun oldum
Maltysen 2:16

7
@ mbomb007 Okumak isteyenler, doğrudan meydan okuma bölümüne gidemeyenler; altyazıların güzelliği budur.
gowrath

1
Ben okumak "ile temas ettiği ilk insanlardan insanlara PPCG mütevazi programcıları olurdu."
marczellm

Yanıtlar:


5

Dyalog APL , 14 bayt

Yeni satır dizileri içeren dizelerin listesini alır (10 veya 13 10 vb.)

↑(⊢,[.5]⎕UCS

oluşan listelerin listesini matrifiye etmek

(... her hat geri dönüşü için ...

metnin kendisi

,[.5] ilk boyuttan önce yeni bir boyutta

⎕UCSU nicode haracter S ve kod noktaları

TryAPL çevrimiçi!


Tüm girişleri bir kerede almak yerine, her satırda bir kere çağırmıyor musunuz?
Steven H.

1
@StevenH. Hayır, (en sağdaki) işlevi bir döngü içerir, ancak bir bütün olarak, sadece bir kez çağrılır. fDoğrudan girdi üzerinde çağrılan TryAPL örneğine bakın . Söylemek gerekirse, her hat için bir işlevi çağırmak .
Adám

9

Pyth, 17 13 bayt

Pyth programcılarından bir diğeri. Üzgünüm.

Yeni kod, her satırın tırnaklara sarılmasını ve kaçılmasını (yazdırılmasını istiyorsanız yeni satırlar dahil) gerektirir, ancak satır ve ASCII arasına fazladan yeni bir satır koyar.

jjLC9smCMBd.Q

Çevrimiçi deneyin!

Açıklama:

           .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

Eski kodu ve onun açıklamalarını aşağıda saklıyorum.

#Jw
jKC9J
jK+CMJT

Çevrimiçi deneyin! veya daha kolay okunur bir test çantası kullanın .

Açıklama:

#                  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
Sanırım ilk bağlantınız, ikinci bağlantınız gibi çalışmıyor (sanırım yeni satırlar yazdırmıyor). İçindeki kodu güncellemek isteyebilirsiniz.
gowrath

8

Python 2, 105 bayt

Bu OP'nin cevabından biraz farklı bir yaklaşım kullanmaktadır. SO'nun birebir sekmelerimi boşluklarla karıştırdığını unutmayın.

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

Çevrimiçi deneyin


Daha x+=ord(c)+" "kısa olmaz mıydı "%s "%ord(c)?
DJMcMayhem

@DJMcMayhem Bir dizgeye tam sayı ekleyemezsiniz. x+=`ord(c)`+" "aynı uzunluktadır.
mbomb007

8

Vim, 86, 77 tuş vuruşlarını

: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>

Bu çok uzun, ama vim'in evalözelliğini ( \=) kullanırken elde ettiğiniz budur .


6
Değerlendirmenizin \=özelliğini mi yoksa üzücü bir yüzü açıklıyor mu, çünkü değerlendirme özelliğini kullanıyor
musunuz

2
@timmyD İlk. Bu benim üzgün yüzüm. D;
DJMcMayhem


6

Perl, > 33 31 bayt

İçin +3 içerir -F(ile birlikte kullanılamaz -eve kod da vardır ', bu nedenle boşluk ve -sayılır).

STDIN'deki giriş ile çalıştırın veya argüman olarak bir veya daha fazla dosya adı verin

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

asciidump.pl

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

Metin sekme içeriyorsa veya son satır yok ise çıktı estetik değil


5

Pyth, 21 bayt

j.imjC9d.zmjC9+CMdT.z

İşte "o lanet olası Pyth programcılarından" birinin girişi ;

STDIN'de kaydedilmemiş çok satırlı bir dizgenin girişini alan ve sonucu basan bir program. Bu, tüm girişlerin izleyen bir yeni hattına sahip olduğunu varsayar. İzleyen bir yeni satır ile başa çıkmak istemiyorsanız <, programın başına ve )_3sonuna ekleyin .

Çevrimiçi deneyin

Test senaryosunun çıktısını çevrimiçi tercümanda görmek zor, bu yüzden buraya ekledim:

#   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

Nasıl çalışır

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

2 bayttan kurtulup .zsatır listesi olarak giriş yapabilirsiniz
Maltysen

1
@Maltysen Bu soruya ve diğer cevaplara bakılırsa, yeni hatlara ayrılmanın zorluğun bir parçası olduğunu düşünüyorum.
TheBikingViking

5

C, 136 117 114 Bayt

#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("");}}

Böyle test edilebilir

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

char**vİçinde olmak main()size orada 2 karakter kazandırır ..
Alexis Wilke

Ah, bu kodda sadece 114 bayt sayıyorum. Sanırım LF yerine CRLF kullanıyorsunuz (117-> 115), ayrıca yeni bir hattınız var (115-> 114).
Tim

4

PowerShell v2 +, 85 bayt

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

Giriş, bir dosya yolu üzerinden yapılır. Daha sonra otomatik olarak yeni satırlara bölen o dosyaya Get-Content(takma ad gc) giriyoruz. Bunların her birinin üzerinden geçiyoruz |%{...}. Ayarlayarak $ave $bboş bir dizeyle başlayın - bunlar sırasıyla ASCII karakterlerimiz ve kod noktalarımızdır. Daha sonra -splither karakterin giriş satırını tutarız (.), boş değerleri kaldırırız -ne''(.NET regex'in nasıl ayrıştırılmasından kaynaklanır), sonra bunları başka bir döngüye göndeririz.

Her iç döngüde, mevcut karakteri bir sekmeyle birleştiririz `tve onu ekleriz $a. Benzer şekilde $b, istisnai olarak açıkça charve sonra bir int olarak yayın yapıyoruz +.

İç döngünün dışında, sonucu $ave $b(bir satır beslemesi belirteci ile, çünkü bu asla döngüde ortaya çıkmayacak) boru hattına yerleştiririz. Bunlar Write-Outputprogram bitiminde örtük olarak toplanmaktadır .

Örnek

(Sonunda bir satır sıkıntısı çektiğimi ve Markdown'ın sekme karakterini değiştirdiğini anladım)

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

Kahretsin, sadece bir şekilde bunu kaçırmayı başarırken bir PowerShell cevabı yazdım! Yine de temsil edilen lüks görmek her zaman sevindim! :)
briantist

4

> <> (Balık), 48 Bayt

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

Dilin parladığı bir görev! Eminim biraz daha golf oynayabilirim ama uzun bir hafta oldu. Yine de bir bakabilirsin.

Çevrimiçi deneyin!

Alternatif olarak , bence daha güzel görünen çevrimiçi deneyin, ancak metin sarma, test senaryosu gibi uzun çizgilerle giriş için biraz karışıklık yaratıyor.


4

PHP, 131 115 bayt

Sadece bir FGITW, belki daha da geliştirebilirim. Çıkıyor, ben yapabilirim!

131 byte'ta ilk sürüm:

<?$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'
';};

Dosya adı, komut dosyası adından sonra ilk bağımsız değişken olarak sağlanır: php aliens.php helloworld.c

115 byte'ta ikinci sürüm:

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

İlk sürüm satırın sonundaki eksik yeni satırları hesaba katar, ancak ek açıklamadan sonra bu kodu bırakıp 16 bayt kurtarmak için her şeyi bir fonksiyona koyabiliriz.

Boşluk karakterleri, içinde join(' ',$a)olduğu gibi echo$c.' 'sekme karakterleridir = \t. Koddaki yeni satırlar bilerek.


3

Python 3, 89 77 bayt

Aynı fikre dayanan daha fazla golf versiyonu:

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

T girişinde bulunuyor \' varsa, o zaman değiştirmek 4bir için 9.

Önceki sürüm:

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

Her biri '\ n' ile biten bir dizelerin listesini alır.


protip: basılı ifadeleri for l in sörneğin sonuna bırakabilirsinizfor l in s:print(*l,sep='\t',end='');print(*l.encode(),sep='\t',end='\n\n')
İmha

Test etmedim, ancak 8 ile 8 lambda s:'\n\n'.join(*map('{:>4}'.format,[*a,*a.encode()])for a in s)
çıkartacağını

3

Powershell, 56 Bayt

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

Komut dosyası bir dosya yolunu girdi olarak kabul eder. Get-Content, girişi otomatik olarak kaynaktaki yeni satırlara bölünmüş bir dizi dizeye böler.

Oradan bir foreach giriyorum, bir dizi karaktere atıyorum ve bunu $ a'ya ayarlıyorum, sekmelerle birleştirip yazdırıyorum. Sonra ama yine de foreach içinde karakter dizisini bir tamsayı dizisine atıyorum, satır beslemesi eklerim ve tekrar bir sekmeyle birleştiririm.

Çağrı şöyle görünür:

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

ve burada bir çıktı örneği

#   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

JavaScript (ES6), 94 bayt

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

␉ değişmez sekme karakterini temsil ediyor. Giriş sekme karakterleri içermediği sürece çalışır. Girişin sonunda yeni bir satırsonu olmasını gerektiren 81 baytlık bir sürüm:

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

Sanırım .split().map()kazanabilirim .replace(). Kaçış karakterleri backticks ile optimize edildiğinde, bunun 85 bayt olması gerekir: s=>s.split('\n').map(c=>(s=[...c]).join('\t')+'\n'+s.map(c=>c.charCodeAt()).join('\t')).join('\n')(Üzgünüm, backticks'in bir yoruma nasıl dahil edilip edilmeyeceğine dair hiçbir fikrim yok.)
Arnauld

@Arnauld (Örneğin) çıplak bir yeni satır karakteri için çalışmıyor. Ayrıca, bir yoruma ters çubuklar eklemek için, bunlardan önce ters eğik çizgi ekleyin.
Neil

2

C #, 64 63 bayt

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

-1 bayt yerine gerçek sekme karakteri kullanarak \t. Not: Aşağıdaki asılsız versiyonda 4 boşluk ve 2 boşluk olarak işlenir.

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;
};

Sonuçlar:

(Not: Visual Studio, \r\ngirişi yapıştırdığımda yeni satırlar için kullandı , bu nedenle 13 10satır çıktıda bitiyor)

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

CJam, 27 bayt

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

Çevrimiçi deneyin!

açıklama

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/Ve sgereksiz.
Martin Ender

2

PowerShell, 61 59 bayt

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

Dikkat edilecek şeyler:

  • Girdiyi mgeçerli dizinde adı geçen bir dosyadan okur .
  • Tüm satır sonları $_(birinciden sonra dizgiye gömülü olanı da dahil olmak üzere ) yalnızca değişmez satır beslemeleridir (0xA), yani her biri bir bayttır.
  • -joinİşleçlerin hemen ardından dizgilerin içeriği tek bir sekme karakteridir (burada nasıl işlendiğine bakılmaksızın).

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

}

Kodunuz, ascii 13, 10 yerine newline
basıyor

@Chirishman PowerShell, .ps1 dosyalarındaki satır başları için yalnızca ASCII 10 kullanımını desteklemektedir, ancak Windows'ta çoğu metin düzenleyicide bunu yapmak zor olabilir. SCiTE veya Notepad ++ veya satır sonunu bilen diğer uyumlu editörleri kullanarak unix sonları kullandığından emin olabilirsiniz. Dosyanın 13'ü içermediğinden emin olduktan sonra 10'u basacaktır.
briantist

0

Java, 202 bayt

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();}};

Bunu daha kısa yapmaktan bile rahatsız olamıyorum.



-1

Python 3, 92 97 107 bayt

i listesindeki (open (input ()). read (). split ("\ n")): j in i: print (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)

Bu denenmemiş, ancak çalışması gerekir.

Sorunun belirttiği gibi kodun yapılmadığına dikkat çektiğiniz için teşekkürler @gowrath.


Neden olmasın? Tüm input()komut orada yapıyor açmak için dosyanın adını alıyor.
sonrad10

@gowrath oh, tamam.
sonrad10

Bu, metinde ve ascii çıktılarında soru spesifikasyonunda olduğu gibi örtüşmez; sadece sayıları yazdırır.
gowrath

@gowrath teşekkürler, en kısa zamanda düzelteceğim.
sonrad10

@ sonrad10 Sabit olana kadar silin.
mbomb007
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.