ASCII 아트 픽쳐가 입력되면 ASCII 아트를 이탤릭체로 출력합니다.
ASCII 아트를 기울임 꼴로 표시하려면
-
마지막 줄 앞에 공백없이, 두 번째 마지막 줄 앞에 공백, 세 번째 마지막 줄 앞에 두 공백 등을 삽입하십시오.
-
생성 된 추가 공백을 제거하십시오. 즉, 각 줄
n
앞에 적어도 공백 이 있으면 각 줄n
의 시작 부분에서 공백을 제거 하십시오. -
모든 교체
\
와의|
모든|
과의/
, 그리고 모든/
과들_
. 기존을_
동일하게 유지하십시오 .입력은 문자
\|/_
와 공백 만 포함하도록 보장됩니다 .
예를 들어, 입력
/\/\/\ /\/\/\ /\/\/\ /\/\/\
/\ /\ /\ /\ /\ /\
/\/\/\ /\/\/\ /\ /\ /\/\
/\ /\ /\ /\ /\
/\ /\ /\/\/\ /\/\/\
출력해야합니다
_|_|_| _|_|_| _|_|_| _|_|_|
_| _| _| _| _| _|
_|_|_| _|_|_| _| _| _|_|
_| _| _| _| _|
_| _| _|_|_| _|_|_|
입력으로 제공되는 출력
_/_/_/ _/_/_/ _/_/_/ _/_/_/
_/ _/ _/ _/ _/ _/
_/_/_/ _/_/_/ _/ _/ _/_/
_/ _/ _/ _/ _/
_/ _/ _/_/_/ _/_/_/
어떤 출력
______ ______ ______ ______
__ __ __ __ __ __
______ ______ __ __ ____
__ __ __ __ __
__ __ ______ ______
입력 및 출력은 단일 문자열 (선택적 후행 줄 바꿈 포함) 또는 행 배열 일 수 있습니다.
이것이 code-golf 이므로 바이트 단위의 가장 짧은 코드가 승리합니다.
추가 테스트 사례 :
|||||
/////
\\\\\
_____
/////
_____
|||||
_____
________
________
즉, 빈 문자열을 입력하면 빈 문자열이 출력됩니다.
답변
CJam, 43 38 바이트
qN/W%eeSf.*:sW%z_{S-}#>zN*"\|/__"_(+er
입력을 사각형으로 채워야합니다.
설명
qN/ e# Read input, split into lines.
W% e# Reverse lines.
ee e# Enumerate them (pairing each line with its index starting from 0).
Sf.* e# Turn each index i into i spaces.
:s e# Flatten each pair into a single string, prepending the spaces.
W% e# Reverse the lines again.
z_ e# Transpose the character grid, duplicate it.
{S-}# e# Find the first row index that contains non-spaces.
> e# Discard that many rows.
zN* e# Transpose back and join with linefeeds.
"\|/__" e# Push this string.
_(+ e# Make a copy that's rotated one character to the left, i.e. "|/__\".
er e# Perform character transliteration mapping from the first string to the second.
답변
피스, 32
jCf|Z=Z-Td.t_.e+*kd.rb"\|/__"_Qd
여기 사용해보십시오 하거나 Test Suite를 실행하십시오.
각 줄에는 여러 개의 후행 공백이 있습니다. 이것은 적용하여 작동합니다.r
문자열의 각 줄에 내장 회전 합니다. 로테이션은 문자열의 각 문자를 다른 인수의 "\|/__"
문자와 일치시켜 다음 문자로 바꿉니다. 이중 밑줄은 밑줄이 백 슬래시가되는 것을 방지합니다. 문자열은 색인에 따라 채워집니다.
이 작업이 완료되면 줄이 서로 압축 된 다음 공백 만 포함 된 각 열을 필터링합니다. 그런 다음 압축을 풀고 개행을 시작합니다.
답변
MATL , 38 33 29 바이트
P"NZ"@Y:'\|/' '|/_'XEh]XhPcYv
출력 라인에는 가장 긴 라인과 일치하는 후행 공백이 있습니다 (챌린지에 의해 허용됨).
입력은 문자열의 셀형 배열 (목록)입니다. 배열은 중괄호를 사용하고 문자열은 다음과 같이 작은 따옴표를 사용합니다 ( 온라인으로 연결하려면 각 링크를 클릭하십시오 ! ).
-
첫 번째 예 :
{'/\/\/\ /\/\/\ /\/\/\ /\/\/\' ' /\ /\ /\ /\ /\ /\' ' /\/\/\ /\/\/\ /\ /\ /\/\' ' /\ /\ /\ /\ /\' ' /\ /\ /\/\/\ /\/\/\'}
-
두 번째 예 :
{'_|_|_| _|_|_| _|_|_| _|_|_|' '_| _| _| _| _| _| ' '_|_|_| _|_|_| _| _| _|_|' '_| _| _| _| _|' '_| _| _|_|_| _|_|_|'}
-
세 번째 예 :
{' _/_/_/ _/_/_/ _/_/_/ _/_/_/' ' _/ _/ _/ _/ _/ _/ ' ' _/_/_/ _/_/_/ _/ _/ _/_/ ' ' _/ _/ _/ _/ _/ ' '_/ _/ _/_/_/ _/_/_/ '}
설명
배열은 처음에 뒤집 힙니다. 각 문자열은 루프로 처리되고 수정 된 문자열은 스택으로 푸시됩니다. 처리는 문자를 바꾸고 여러 공백을 추가하는 것으로 구성됩니다. 공백의 수는 스택의 현재 요소 수와 같습니다 (배열이 뒤집 혔기 때문에).
루프 후 문자열은 배열에서 수집되며,이 배열은 뒤집히고 2D 문자 배열로 변환되며 원하지 않는 선행 공백, 2D 문자 배열의 모든 행에 존재하는 선행 공백으로 처리됩니다.
P % implicitly input cell array of strings. Flip it (reverse order)
" % for each
NZ" % string with as many spaces as elements there are on the stack
@Y: % push current input string
'\|/' % push string: origin for replacement
'|/_' % push string: target for replacement
XE % replace
h % concatenate string with spaces and modified-character string
] % end for each
Xh % collect all processed strings in a cell array
P % flip back to restore original order
c % convert to 2D char array
Yv % remove trailing spaces common to all rows. Implicitly display
답변
자바 스크립트 (ES6), 171 (149) 148 바이트
a=>a.map(s=>(t=' '.repeat(--i)+s,l=t.match` *`[0].length,n=l<n?l:n,t),n=i=a.length).map(s=>s.slice(n).replace(/./g,c=>"|/__ "["\\|/_ ".indexOf(c)]))
행을 문자열 배열로 승인하고 리턴합니다.
편집 : @ user81655 덕분에 22 바이트가 절약되었습니다. 입력이 5 자 \|/_
및 공백으로 제한됨을 인식하여 1 바이트를 절약했습니다.
답변
Dyalog APL (이전 버전), 23 48 바이트
공백 조정은 비싸다 :
{{⍵↓⍨0,⌊/+/∧\' '=⍵}(⍳≢⍵)⌽'|/ _'['\| '⍳(∊,⊢,∊)⍵]}
이 요구 ⎕ML←0
하는 최근까지 기본했다 .