Bantuan: Programmer Aliens hanya berbicara ASCII

22

Mengatur Pemandangan:

Ini adalah sore yang biasa-biasa saja, ketika Anda bersantai setelah hari yang panjang dengan terlibat dalam hiburan favorit Anda: menjawab sejumlah besar pertanyaan menawan di PPCG. Ini bukan hari yang baik untuk Anda; programmer Pyth sialan itu terus mendapatkan jawaban terbaik dan itu membunuh getaran Anda. Tiba-tiba, Anda melihat pertanyaan baru telah diposting! Anda mengambil keputusan; bukan kali ini CJammers. Dengan marah, Anda mulai mengetik, melahirkan aliran karakter; janin dari loop BrainFuck yang agung seperti produk akhir Anda nantinya. Anda mengetik dan mengetik. Lebih cepat! Lebih cepat lagi! Anda sangat fokus, Anda bahkan tidak melihat lampu di layar Anda mulai berkedip-kedip. Tiba-tiba, monitor menyala hijau, simbol seperti alien yang menempel pada desktop. Menggunakan keterampilan sempurna Anda, Andacat ~/Desktop/aliensymboldan disajikan dengan banyak angka, pesan! Menjadi programmer PPCG yang cerdik seperti Anda, Anda perhatikan bahwa itu terlihat seperti ASCII. Tidak masalah bagi Anda, Anda print(chr(i) for i in file)dan menguraikan pesan. Pikiran pertama Anda: "Saya perlu membagikan ini dengan komunitas!".

...

Siapa yang akan memikirkannya? Bahwa orang pertama yang melakukan kontak dengan alien akan menjadi programmer PPCG yang rendah hati. Mengapa kita Mungkin itu karena kita adalah lambang kecerdasan manusia. Atau mungkin karena BrainFuck hampir sedekat yang kita miliki dengan bahasa asing. Namun demikian, alien - menjadi bentuk kehidupan yang sangat cerdas - ingin menguji apakah mereka harus mengklasifikasikan ras manusia sebagai cerdas atau tidak. Sebagai ujian kecakapan mental kami, para alien telah meminta kami untuk mengirimi mereka beberapa program komputer untuk menunjukkan bahwa kami berbudaya secara teknologi. Masalahnya adalah, satu-satunya bahasa manusia yang mereka pahami adalah angka ASCII!

Bantu manusia menunjukkan kepada makhluk-makhluk itu siapa alfa intelektual sesungguhnya. Kami perlu mengirimi mereka skrip yang akan mengubah kode sumber berbasis teks kami menjadi versi ASCII numerik mereka. Sayangnya, karena teknologi kami yang terbelakang (terima kasih Obama), kami harus mengirimkan program penerjemahan sekecil mungkin. Untung mereka memilih untuk menghubungi PPCG!

Tantangan:

Premis dari tantangan ini sederhana: Anda harus menulis sebuah program yang akan mengambil kode sumber program apa pun (atau file teks umum apa pun dalam hal ini), dan mengeluarkan versi yang dipisahkan dengan spasi dengan terjemahan ASCII di bawah setiap baris. Yaitu, diberi input file teks, Anda perlu menampilkan setiap baris file tersebut diikuti oleh baris yang berisi representasi ASCII dari setiap karakter di baris di atasnya (dengan setiap angka yang sesuai dengan karakter yang diwakilinya).

Contoh akan sangat memperjelas hal ini. Mengambil kode sumber yang terkenal hello worldsebagai input:

#include <stdio.h>

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

program Anda harus menampilkan:

#   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

Detail Implementasi:

Anda dapat memilih untuk mengambil input dalam bentuk apa pun yang Anda inginkan (membuka file, pipa baris perintah, parameter fungsi dll.) Dan Anda harus output ke stdout atau mengembalikan output dari suatu fungsi.

Hal-hal yang perlu diperhatikan

  • Setiap karakter dalam output dipisahkan oleh '\ t' untuk memungkinkan spasi 3 digit pada baris di bawah ini untuk berbaris (kami akan menganggap tab Anda disetel ke 4 spasi atau lebih).
  • Baris baru ditampilkan pada baris yang ditekan kembali (perhatikan 10 di contoh)
  • Persyaratan pencetakan '\ t' dan '\ n' lemah. Keluaran Anda harus, dalam pengertian umum, terlihat menyenangkan bagi mata (perlu menunjukkan kepada orang-orang asing itu kami memiliki rasa estetika juga), dan jika Anda dapat menekuk dua poin sebelumnya sambil mempertahankan integritas visual, Anda akan dimaafkan.
  • Anda dapat memilih untuk berasumsi apakah ada baris baru di akhir baris terakhir.

Mencetak gol

Ini adalah kode-golf sehingga program terpendek menang. Catatan, meskipun program Anda bukan yang terpendek, tetapi menggunakan trik yang benar-benar rapi relatif terhadap bahasa yang Anda gunakan, banyak +1 untuk Anda!

Semoga berhasil. Peringkat kecerdasan intergalaksi umat manusia berada di pundak Anda.

Catatan: Maafkan lubang plot. Saya bukan penulis : D

gowrath
sumber
8
Mungkin menjatuhkan atau sangat menyederhanakan "plot" dan tinggalkan saja tantangannya. Jujur saya tidak akan membaca 3 paragraf backstory. Saya hanya akan membaca tantangannya, karena itulah tujuan saya di sini.
mbomb007
1
@YetiCGN Istirahat baris bertindak sebagai istirahat baris (Anda tidak dapat melihat karakter yang mewakili tetapi Anda dapat melihat istirahat) dan Anda masih perlu menulisnya secara eksplisit dalam versi ascii. Anggap saja seolah-olah Anda regex mencari kode sumber untuk '\ n'. Di mana-mana pencarian Anda akan menyoroti adalah di mana Anda harus menulis 10. Berikut adalah contoh dari vim (abaikan yang terakhir).
gowrath
26
@ mbomb007 tbh, itu cerita latar yang cukup epik. Saya agak menikmatinya
Maltysen
7
@ mbomb007 Mereka yang ingin membaca bisa, mereka yang tidak bisa langsung ke bagian tantangan; seperti itulah keindahan subtitle.
gowrath
1
Saya membacanya sebagai "orang pertama yang melakukan kontak dengan manusia akan menjadi programmer PPCG yang rendah hati."
marczellm

Jawaban:

5

Dyalog APL , 14 byte

Mengambil daftar string yang mencakup urutan baris baru (10 atau 13 10 dll.)

↑(⊢,[.5]⎕UCS

matrif daftar daftar yang terdiri dari

(... untuk setiap baris kembali ...

teks itu sendiri

,[.5] diikuti dalam dimensi baru sebelum dimensi pertama oleh

⎕UCSyang U nicode C haracter S et poin kode

TryAPL online!

Adm
sumber
Tidakkah Anda memanggil ini sekali per setiap baris daripada mengambil semua input sekaligus?
Steven H.
1
@ SevenH. Tidak, fungsi (sebagian besar kanan) berisi loop, tetapi secara keseluruhan, ini disebut sekali saja. Lihat contoh TryAPL yang fdipanggil langsung pada input. Untuk memanggil fungsi satu kali per baris, jika mau dikatakan .
Adám
9

Pyth, 17 13 byte

Satu lagi programmer Pyth itu. Maaf.

Kode baru mengharuskan setiap baris untuk dibungkus dengan tanda kutip dan melarikan diri (termasuk baris baru jika Anda ingin mereka dicetak), tetapi menempatkan baris baru tambahan antara baris dan ASCII.

jjLC9smCMBd.Q

Cobalah online!

Penjelasan:

           .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

Saya menyimpan kode lama dan penjelasannya di bawah.

#Jw
jKC9J
jK+CMJT

Cobalah online! atau gunakan test case yang lebih mudah dibaca .

Penjelasan:

#                  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.
Steven H.
sumber
1
Saya pikir tautan pertama Anda tidak berfungsi sebaik tautan kedua (saya kira tidak mencetak baris baru). Anda mungkin ingin memperbarui kode di dalamnya.
gowrath
8

Python 2, 105 byte

Ini menggunakan pendekatan yang sedikit berbeda dari jawaban OP. Perhatikan bahwa SO mengacaukan tab literal saya dengan spasi.

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

Cobalah online

mbomb007
sumber
Bukankah x+=ord(c)+" "lebih pendek dari itu "%s "%ord(c)?
DJMcMayhem
@DJMcMayhem Anda tidak dapat menambahkan integer ke sebuah string. x+=`ord(c)`+" "memiliki panjang yang sama.
mbomb007
8

Vim, 86, 77 penekanan tombol

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

Ini terlalu lama, tapi itulah yang Anda dapatkan ketika Anda menggunakan evalfitur vim ( \=).

DJMcMayhem
sumber
6
Tidak tahu apakah Anda \=menjelaskan fitur eval, atau wajah sedih karena Anda menggunakan fitur eval ...
AdmBorkBork
2
@timmyD Yang pertama. Ini wajah sedihku. D;
DJMcMayhem
6

Perl, > 33 31 byte

Termasuk +3 untuk -F(tidak dapat digabungkan dengan -edan kode 'juga, jadi ruang dan -dihitung juga).

Jalankan dengan input pada STDIN atau berikan satu atau lebih nama file sebagai argumen

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

asciidump.pl

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

Output tidak estetika jika teks mengandung tab atau tidak ada baris akhir

Ton Hospel
sumber
5

Pyth, 21 byte

j.imjC9d.zmjC9+CMdT.z

Berikut ini entri dari salah satu "programmer Pyth sialan itu" ;)

Sebuah program yang mengambil input dari string multiline yang tidak dikutip pada STDIN dan mencetak hasilnya. Ini mengasumsikan bahwa semua input memiliki baris baru. Jika Anda ingin berurusan dengan tanpa baris baru, tambahkan <di awal program dan )_3di akhir.

Cobalah online

Output untuk test case sulit dilihat di penerjemah online, jadi saya sudah memasukkannya di sini:

#   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

Bagaimana itu bekerja

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
TheBikingViking
sumber
Anda dapat menyimpan 2 byte dengan menghilangkan .zdan mengambil input sebagai daftar baris
Maltysen
1
@Maltysen Dilihat dari pertanyaan dan jawaban lainnya, saya pikir membagi pada baris baru adalah bagian dari tantangan.
TheBikingViking
5

C, 136 117 114 Bytes

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

Dapat diuji seperti ini

infile;
main(c,v)char**v;
{
    infile=fopen(v[1],"r");
    f(infile);    
}
Cleblanc
sumber
Memiliki char**vdi dalam main()akan menyelamatkan Anda 2 karakter di sana ..
Alexis Wilke
Eh, saya hanya menghitung 114 byte dalam kode itu. Saya pikir Anda menggunakan CRLF bukan LF (117-> 115), ditambah Anda memiliki baris tambahan (115-> 114).
Tim Čas
4

PowerShell v2 +, 85 byte

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

Input melalui jalur ke file. Kami kemudian Get-Content(alias gc) pada file itu, yang secara otomatis terbagi pada baris baru. Kami mengulangi masing-masing |%{...}. Mulai dengan mengatur $adan $bke string kosong - ini adalah karakter ASCII dan poin kode kami masing-masing. Kami kemudian -splitmemasukkan baris input pada setiap karakter, menjaganya (.), dan menghapus nilai-nilai kosong -ne''(itu karena bagaimana .NET regex mem-parsing), kemudian mengirimkannya ke loop lain.

Setiap loop dalam, kami merangkai karakter saat ini dengan tab `tdan menambahkannya ke $a. Demikian pula untuk $b, kecuali kita secara eksplisit menggunakan sebagai chardan kemudian sebagai int +.

Di luar loop dalam, kami menempatkan hasilnya $adan $b(dengan penanda linefeed, karena itu tidak akan pernah muncul dalam looping kami) di pipa. Mereka dikumpulkan dengan implisit Write-Outputpada penyelesaian program.

Contoh

(dengan pemahaman bahwa saya mendapat linefeed dan Markdown merusak karakter tab)

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
AdmBorkBork
sumber
Sial, saya baru saja menulis jawaban PowerShell sambil entah bagaimana berhasil melewatkan yang satu ini! Selalu senang melihat posh diwakili! :)
briantist
4

> <> (Ikan), 48 Bytes

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

Tugas yang disorot oleh bahasa! Saya yakin saya mungkin bisa bermain golf sedikit lebih lama, tapi ini sudah seminggu yang panjang. Mungkin melihatnya nanti.

Cobalah online!

Alternatif, coba online yang terlihat lebih bagus menurut saya, tetapi pembungkus teks agak kacau untuk input dengan garis panjang seperti test case.

Callum Kerr
sumber
4

PHP, 131 115 byte

Hanya FGITW, mungkin saya bisa memperbaikinya lebih lanjut. Ternyata saya bisa!

Versi pertama pada 131 byte:

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

Nama file diberikan sebagai argumen pertama setelah nama skrip: php aliens.php helloworld.c

Versi kedua pada 115 byte:

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

Versi pertama menyumbang baris baru yang hilang di akhir baris, tetapi setelah klarifikasi tambahan, kita dapat meninggalkan kode itu dan meletakkan semuanya dalam fungsi untuk menghemat 16 byte.

Karakter spasi putih di join(' ',$a)dan juga echo$c.' 'adalah karakter tab = \t. Baris baru dalam kode sengaja.

YetiCGN
sumber
3

Python 3, 89 77 byte

lebih banyak versi golf berdasarkan ide yang sama:

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

Jika ada 'di input, maka ubah 4ke a 9.

Versi sebelumnya:

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

Mengambil daftar string, masing-masing berakhir dengan '\ n'.

RootTwo
sumber
protip: Anda dapat meninggalkan pernyataan cetak di akhir for l in smisfor l in s:print(*l,sep='\t',end='');print(*l.encode(),sep='\t',end='\n\n')
Destructible Lemon
Saya belum mengujinya, tapi saya pikir bisa lepas landas denganlambda s:'\n\n'.join(*map('{:>4}'.format,[*a,*a.encode()])for a in s)
DJMcMayhem
3

Powershell, 56 Bytes

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

Script menerima filepath sebagai masukan. Get-Content secara otomatis membagi input menjadi array string yang dibagi pada baris baru di sumber.

Dari sana saya memasukkan foreach, melemparkan ke array karakter dan mengaturnya menjadi $ a, bergabung dengan tab dan cetak. Selanjutnya tetapi masih dalam foreach saya melemparkan array karakter ke array integer, menambahkan linefeed dan bergabung lagi dengan tab.

Panggilannya terlihat seperti ini:

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

dan di sini adalah sampel keluaran

#   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
Chirishman
sumber
2

JavaScript (ES6), 94 byte

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

Di mana ␉ mewakili karakter tab literal. Berfungsi selama input tidak mengandung karakter tab. Versi 81-byte yang juga membutuhkan input untuk memiliki baris tambahan:

s=>s.replace(/.*\n/g,s=>[...s].join`␉`+[...s].map(c=>c.charCodeAt()).join`␉`+`
`)
Neil
sumber
Saya pikir .split().map()mungkin menang .replace(). Setelah karakter yang lolos dioptimalkan dengan backticks, ini seharusnya 85 byte: s=>s.split('\n').map(c=>(s=[...c]).join('\t')+'\n'+s.map(c=>c.charCodeAt()).join('\t')).join('\n')(Maaf, saya tidak tahu apakah / bagaimana backticks dapat dimasukkan dalam komentar.)
Arnauld
@Arnauld Tidak berfungsi untuk (misalnya) karakter baris baru. Juga, untuk memasukkan backticks dalam komentar, awali dengan backslash.
Neil
2

C #, 64 63 byte

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

-1 byte dengan menggunakan karakter tab aktual alih-alih \t. Catatan: diterjemahkan sebagai 4 spasi di atas dan 2 spasi dalam versi tanpa tanda di bawah ini.

Tidak Disatukan:

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

Hasil:

(Catatan: Visual Studio telah digunakan \r\nuntuk baris baru ketika saya menempelkan input, karenanya 13 10baris berakhir pada output)

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 
susu
sumber
2

CJam, 27 byte

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

Cobalah online!

Penjelasan

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
Kucing Bisnis
sumber
The 1/dan stidak diperlukan.
Martin Ender
2

PowerShell, 61 59 byte

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

Hal yang perlu diperhatikan:

  • Membaca input dari file yang disebutkan mdalam direktori saat ini.
  • Semua jeda baris, (termasuk yang disematkan dalam string setelah yang pertama $_) adalah hanya baris baris yang dibutuhkan (0xA), jadi masing-masing satu byte.
  • Isi string langsung setelah -joinoperator masing-masing karakter tab tunggal (terlepas dari bagaimana itu diberikan di sini).

Tidak disatukan

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

}
briantis
sumber
Kode Anda mencetak ascii 13, baris baru dan bukan 10, carriage return seperti pada contoh keluaran tantangan
Chirishman
@Chirishman PowerShell tidak mendukung hanya menggunakan ASCII 10 untuk linebreak dalam file .ps1, tetapi mungkin sulit untuk melakukannya di Windows dengan sebagian besar editor teks. Menggunakan SCiTE atau Notepad ++ atau editor sadar akhir baris lainnya Anda dapat memastikan itu menggunakan ujung unix. Setelah Anda yakin file tidak mengandung 13, itu akan mencetak 10-an.
briantist
0

Java, 202 byte

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

Aku bahkan tidak bisa repot membuat ini lebih pendek ..

Shaun Wild
sumber
0

Haskell - 71 byte

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

Python 3, 92 97 107 byte

untuk i dalam daftar (terbuka (input ()) .baca (). split ("\ n")): untuk j di 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)

Ini belum diuji, tetapi harus berhasil.

Terima kasih @gowrath karena telah menunjukkan bahwa kode tidak berfungsi sebagaimana ditentukan oleh pertanyaan.

sonrad10
sumber
Kenapa tidak? Semua input()perintah yang dilakukan di sana adalah mendapatkan nama file untuk dibuka.
sonrad10
@gowrath oh, ok.
sonrad10
Ini tidak menampilkan teks dan output ascii seperti dalam spesifikasi pertanyaan; hanya mencetak angka.
gowrath
@gowrath terima kasih, saya akan memperbaikinya secepatnya.
sonrad10
@ sonrad10 Hapus sampai diperbaiki.
mbomb007