도움말 : 외계인 프로그래머는 ASCII 만 사용


22

장면 설정 :

PPCG에 관한 매력적인 질문에 답하기 위해 좋아하는 취미에 참여함으로써 긴 하루를 보낸 후 평균 오후입니다. 좋은 하루가 아니었다. 저주받은 Pyth 프로그래머는 계속해서 최고의 답변을 얻습니다. 갑자기 새로운 질문이 게시되었습니다. 당신은 당신의 마음을 구성합니다; 이번에는 CJammers가 아닙니다. 분노하게도, 당신은 문자의 흐름을 낳기 시작하기 시작합니다. 최종 제품이 될 영광스러운 BrainFuck 루프의 태아. 입력하고 입력합니다. 빨리! 더 빨리! 너무 집중되어있어 화면의 표시등이 깜박 거리기 시작하지 않습니다. 갑자기 모니터가 녹색으로 빛나고 바탕 화면에 상표가 붙은 외계인과 같은 외계인입니다. 완벽한 기술을 사용하여cat ~/Desktop/aliensymbol많은 숫자와 메시지가 나타납니다! 당신이 날카로운 PPCG 프로그래머이기 때문에 ASCII처럼 보입니다. 당신 print(chr(i) for i in file)과 상관없이, 당신 은 메시지를 해독합니다. 당신의 첫 생각 : "이것을 커뮤니티와 공유해야합니다!".

...

누가 생각했을까요? 외계인과 처음 접촉 한 사람들은 PPCG의 겸손한 프로그래머 일 것입니다. 우린 왜? 우리가 인간 지능의 전형이기 때문일 수도 있습니다. 아니면 BrainFuck이 우리가 외계 언어에 가까워 야하기 때문일 수도 있습니다. 그럼에도 불구하고 외계인은 자신들이 지적으로 지능적인 삶의 형태로 인류를 지능적으로 분류해야하는지 여부를 테스트하고 싶어합니다. 우리의 정신력 테스트로서, 외계인들은 우리에게 기술적으로 문화 화되어 있음을 보여주는 몇 가지 컴퓨터 프로그램을 보내달라고 요청했습니다. 문제는 그들이 이해하는 유일한 언어는 숫자 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

구현 세부 사항 :

파일, 명령 행 파이프, 함수 매개 변수 등 원하는 형식으로 입력을 선택할 수 있으며 stdout으로 출력하거나 함수에서 출력을 리턴해야합니다.

참고 사항

  • 출력의 각 문자는 '\ t'로 구분되어 아래 줄에서 3 자리 숫자의 공백을 줄입니다 (탭이 4 자리 이상으로 설정되어 있다고 가정합니다).
  • 개행은 리턴 키가 눌린 행에 표시됩니다 (이 예에서는 10을 알 수 있습니다)
  • '\ t'및 '\ n'인쇄 요구 사항은 느슨합니다. 당신의 결과물은 일반적으로 눈을 즐겁게해주어야하며 (미적 감각을 가진 외계인을 보여줘야합니다), 시각적 무결성을 유지하면서 앞의 두 지점을 구부릴 수 있다면 용서받을 것입니다.
  • 마지막 줄 끝에 줄 바꿈이 있는지 여부를 가정 할 수 있습니다.

채점

이것은 코드 골프이므로 가장 짧은 프로그램이 승리합니다. 프로그램이 가장 짧지는 않지만 사용중인 언어와 관련하여 정말 깔끔한 트릭을 사용하지만 많은 +1이 있습니다!

행운을 빕니다. 인류의 은하계 지능 순위는 당신의 어깨에 달려 있습니다.

참고 : 플롯 구멍을 용서하십시오. 나는 작가가 아니다 : D


8
아마도 "플롯"을 떨어 뜨리거나 크게 단순화하고 도전을 떠나십시오. 나는 솔직히 백 스토리의 3 단락을 읽지 않을 것입니다. 나는 그것이 내가 여기있는 것이기 때문에 도전을 읽을 것입니다.
mbomb007

1
@YetiCGN 줄 바꿈은 줄 바꿈 역할을하며 (문자를 나타내는 문자는 볼 수 없지만 나누기는 볼 수 있음) 여전히 ASCII 버전으로 명시 적으로 작성해야합니다. 정규식에서 '\ n'에 대한 소스 코드를 검색 한 것처럼 생각하십시오. 검색 할 때마다 10을 써야합니다. 여기 vim의 예가 있습니다 (마지막 예제는 무시).
gowrath

26
@ mbomb007 tbh, 그것은 꽤 서사시적인 뒷이야기였습니다. 나는 그것을 즐겼다
Maltysen

7
@ mbomb007 읽고 싶은 사람은 도전 할 수없는 사람. 자막의 아름다움입니다.
gowrath

1
나는로 읽기 "와 메이크 접점에 대한 첫 번째 사람 인간 PPCG의 겸손한 프로그래머가 될 것"이라고 말했다.
marczellm

답변:


5

Dyalog APL , 14 바이트

줄 바꿈 시퀀스 (10 또는 13 10 등)가 포함 된 문자열 목록을 가져옵니다.

↑(⊢,[.5]⎕UCS

로 구성된 목록의 목록을 숙성

(... 각 줄마다 ...

텍스트 자체

,[.5] 첫 번째 차원 이전에 새 차원을

⎕UCSU nicode C haracter S 등 코드 포인트

TryAPL 온라인!


한 번에 모든 입력을받는 것이 아니라 각 라인 당 한 번만 호출하지 않습니까?
Steven H.

1
@StevenH. 아니요, (의 가장 오른쪽 부분) 함수에는 루프가 포함되어 있지만 전체적으로 한 번만 호출됩니다. f입력에서 직접 호출 되는 TryAPL 예제를 참조하십시오 . 말했을 경우 한 줄에 한 번 함수를 호출합니다 .
Adám

9

Pyth, 17 13 바이트

그 Pyth 프로그래머의 또 다른 하나. 죄송합니다.

새 코드를 사용하려면 각 줄을 따옴표로 묶고 이스케이프해야합니다 (인쇄하려는 경우 줄 바꿈 포함). 줄과 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
첫 번째 링크는 두 번째 링크뿐만 아니라 작동하지 않는다고 생각합니다 (새 줄을 인쇄하지는 않습니다). 코드를 업데이트하고 싶을 수도 있습니다.
gowrath

8

파이썬 2, 105 바이트

이것은 OP의 답변과 약간 다른 접근법을 사용합니다. 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

8

Vim, 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>

이것은 너무 길지만 vim의 eval기능 ( \=) 을 사용할 때 얻는 것 입니다.


6
당신의 경우 말할 수 없다 \=당신이 평가 기능을 사용하고 있기 때문에 평가 기능, 또는 슬픈 얼굴을 설명한다 ...
AdmBorkBork

2
@timmyD 첫 번째. 이것은 내 슬픈 얼굴입니다. D;
DJMcMayhem


6

Perl, > 33 31 바이트

에 +3을 포함합니다 -F( -e코드와 결합 할 수없고 '공간 -도 포함되어 있습니다).

STDIN의 입력으로 실행하거나 하나 이상의 파일 이름을 인수로 제공하십시오.

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

asciidump.pl

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

텍스트에 탭이 있거나 마지막 줄 바꿈이 없으면 출력이 미학적이지 않습니다.


5

Pyth, 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하고 입력을
줄임

1
@ Maltysen 질문과 다른 답변으로 판단하면 줄 바꿈으로 나누는 것이 도전의 일부라고 생각합니다.
TheBikingViking

5

C, 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()가 당신에게 ...이 개 문자를 절약 할 수
알렉시스 WILKE

그 코드에서는 114 바이트 만 계산합니다. LF (117-> 115) 대신 CRLF를 사용하고 있으며 마지막 줄 바꿈 (115-> 114)이 있다고 생각합니다.
Tim Čas

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한 다음 int로 캐스팅한다는 점을 제외하고 +.

내부 루프 외부에서 파이프 라인에 결과 $a$b(라인 피드 지정자를 사용하여 루프에 나타나지 않으므로)를 배치합니다. 그것들은 Write-Output프로그램 완료시 암시 적으로 수집됩니다 .

(나는 후행 줄 바꿈이 있고 Markdown이 탭 문자를 엉망으로 만든다는 것을 이해하면서)

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 답변을 작성했지만 어떻게 든이 답변을 완전히 놓칠 수있었습니다! posh가 항상 대표되는 것을 보게되어 기쁘다! :)
briantist

4

> <> (물고기), 48 바이트

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

언어가 빛나는 일! 아마 좀 더 골프를 쳤을지도 모르겠지만, 일주일이 지났습니다. 그래도 나중에 살펴볼 수도 있습니다.

온라인으로 사용해보십시오!

다른 방법 으로는 온라인에서 시도해보십시오. 제 생각에는 텍스트 줄 바꿈이 테스트 케이스와 같은 긴 줄로 입력하기 위해 약간 엉망이됩니다.


4

PHP, 131 바이트

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. 코드의 줄 바꿈은 의도적입니다.


3

파이썬 3, 89 77 바이트

동일한 아이디어를 기반으로 더 많은 골프 버전 :

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

입력에 '\ t'가 있으면 4 A와를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')
Destructible Lemon

나는 그것을 테스트하지는 않았지만 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는 입력을 소스의 개행으로 분할 된 문자열 배열로 자동 분할합니다.

거기에서 foreach를 입력하고 문자 배열로 캐스트하고 $ a로 설정하고 탭으로 결합하여 인쇄하십시오. 다음으로 여전히 foreach 내에서 문자 배열을 정수 배열로 캐스팅하고 줄 바꿈을 추가하고 탭으로 다시 결합하십시오.

전화는 다음과 같습니다 :

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`␉`}
`)

여기서 ␉는 리터럴 탭 문자를 나타냅니다. 입력에 탭 문자가없는 한 작동합니다. 입력에 후행 줄 바꿈이 있어야하는 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 개행 문자 (예 : 개행 문자)에는 작동하지 않습니다. 또한 주석에 백틱을 포함 시키려면 백 슬래시를 추가하십시오.
Neil

2

기음#, 64 63 바이트

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

대신 실제 탭 문자를 사용하여 -1 바이트 \t. 참고 : 아래의 ungolfed 버전에서는 4 칸 이상, 2 칸 렌더링합니다.

언 골프 드 :

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

결과 :

(참고 : Visual Studio는 \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

CJam, 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

PowerShell, 61 59 바이트

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

참고 사항 :

  • 이름이 지정된 파일에서 입력을 읽습니다. m현재 디렉토리에 .
  • 모든 줄 바꿈 (첫 번째 이후 문자열에 포함 된 줄 바꿈 포함) $_ )은 리터럴 줄 바꿈 만 (0xA)이므로 각 바이트는 1 바이트입니다.
  • 바로 뒤에 문자열의 내용 -join연산자 여기에서 렌더링되는 방법에 관계없이 각각 단일 탭 문자입니다.

언 골프

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, 10 대신 줄 바꿈, 캐리지 리턴을 인쇄합니다.
Chirishman

@Chirishman PowerShell은 .ps1 파일의 줄 바꿈에 ASCII 10 만 사용하도록 지원하지만 대부분의 텍스트 편집기가있는 Windows에서는 까다로울 수 있습니다. SCiTE 또는 Notepad ++ 또는 기타 줄 끝 인식 편집기를 사용하여 유닉스 엔딩을 사용하고 있는지 확인할 수 있습니다. 파일에 13이 포함되어 있지 않다고 확신하면 10이 인쇄됩니다.
briantist

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 97107 바이트

목록의 i의 경우 (open (input ()). read (). split ( "\ n")) : i의 j : 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)

이것은 테스트되지 않았지만 작동합니다.

질문이 지정한대로 코드가 작동하지 않음을 지적하는 @gowrath에게 감사드립니다.


왜 안돼? 모든 input()명령에서 파일 이름을 열 수 있습니다.
sonrad10

@gowrath 오, 알았어.
sonrad10

이것은 질문 사양에서와 같이 텍스트 및 ASCII 출력을 오버레이하지 않습니다. 그냥 숫자를 인쇄합니다.
gowrath

@ gowrath 감사합니다. 최대한 빨리 해결하겠습니다.
sonrad10

@ sonrad10 수정 될 때까지 삭제하십시오.
mbomb007
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.