전폭 텍스트


44

전각 텍스트는 마지막 문자를 포함하여 모든 문자 뒤에 공백이있는 텍스트입니다. 예를 들어,이 질문의 첫 문장은 다음과 같습니다.

F u l l   w i d t h   t e x t   i s   t e x t   t h a t   h a s   a   s p a c e   a f t e r   e v e r y   c h a r a c t e r ,   i n c l u d i n g   t h e   l a s t   o n e . 

표준 입력에서 텍스트 한 줄을 가져 와서 표준 너비에서 전체 너비 텍스트로 출력하는 프로그램을 작성하십시오.

리더 보드


6
일반적으로 함수도 허용하거나 많은 언어 (예 : JavaScript)를 제외해야합니다.
wizzwizz4

8
커뮤니티 합의에 기반한 I / O에 대한 몇 가지 기본값 이 있습니다. 당신은 내가 위해 STDIN / STDOUT에 (기본값이 적용된다고 가정) 답변 / O 무효화 한 무리의 주장을 무시하고 다른 언어로 작업이 명백히 불가능하게 할 권리가있는 동안 (그들은 이없는 표준 스트림).
Dennis

52
That is not what fullwidth text is.
BlueRaja-대니 Pflughoeft

4
@ BlueRaja-DannyPflughoeft가 옳습니다. 전체 너비 텍스트는 일부 언어 (예 : 표의 문자)에 필요한 기본 문자 인코딩 (2 바이트 인코딩)에 관한 것입니다. 유니 코드에서 반 전체 크기의 개념이라고 유니 코드 블록
루도빅 Frérot

2
@ LudovicFrérot 사실, 이들은 표의 문자가 아니며, 중국어 영어 문자입니다.
Outgolfer Erik

답변:


29

젤리 , 5 3 2 바이트

2 바이트를 절약 해 준 Dennis 에게 감사 합니다. 또한 1 바이트를 절약 한 FryAmTheEggman 에게 감사드립니다 . 암호:

p⁶

설명:

p⁶   # Cartesian product with the input and the space character.

젤리 인코딩을 사용합니다 .

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


1
⁶은 UTF-8에서 3 바이트를 차지합니다.
Jess Smith

12
@JessSmith Jelly는 자체 코드 페이지를 사용합니다 : github.com/DennisMitchell/jelly/blob/master/docs/code-page.md
spaghetto

1
@AandN 주석이 아닌 답변에 넣으십시오.
mbomb007

3
@ mbomb007 헤더에 있습니다.
Adnan

5
@ AandN 아니요, 귀하의 답변에 자체 코드 페이지가 있다고 말해야합니다. 특히 새로운 언어이므로 사람들은 아직 모릅니다.
mbomb007

24

파이썬 3.5, 18 바이트

print(*input(),'')

print의 기본 구분 기호는 단일 공백 이기 때문에 작동 합니다.


3
print(*input(),end=' ')포터블하지만 골프는 아니지만 ...
Dennis

9
MFW 내가 처음 본 PEP의 첫 사용은 Code Golf입니다.
Veedrac

마지막 문자 뒤에 공백이 있습니까?
Esolanging 과일

17

Hexagony , 21 13 12 10 바이트

암호:

저장된 많은 바이트의 감사의 FryAmTheEggman을 . 암호:

P,<0/*;@.>

또는 더 읽기 쉬운 형태로 :

  P , <
 0 / * ;
@ . > . .
 . . . .
  . . .

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

설명:

Hexagony 프로그램은 왼쪽 상단에서 시작하여 메모리 가장자리를 즉시 ASCII 값인 P80으로 설정합니다 . 그 후 다음 경로가 사용되었음을 알 수 있습니다.

여기에 이미지 설명을 입력하십시오

경로는 다음과 같습니다 P,<;.P/0....;*/>.. 이후에 P, 우리는 1 바이트의 사용자 입력을받습니다. 이것이 비어 있으면 다음 분기 ( <)가 우리를 북동쪽으로 안내합니다. 입력이 비어 있지 않으면 지점은 우리를 동남쪽으로 안내합니다. 그런 다음을 사용하여 사용자 입력을 출력합니다 ;. 메모리 에지를 다시 P80으로 설정합니다 . 미러 다음에 오는 0은 숫자로 연결되어 800이됩니다.이 ;명령 은 명령을 사용하여 출력 되지만 먼저 모듈로 256을 가져와 32가됩니다. 공백 문자입니다. 그런 다음 *명령을 사용하여 메모리 에지를 재설정 하고 나머지 사용자 입력에서 루프로 돌아갑니다. 사용자 입력이 끝나면 경로는 북동쪽으로 향합니다.

여기에 이미지 설명을 입력하십시오

이것은 기본적으로 @명령 으로 이동 하여 프로그램을 종료합니다.

사용 Timwi 의 놀라운 HexagonyColorer을 다이어그램을 만들기위한.


어, 편집하는 동안 골프를 했어요 죄송합니다. 10 :P,<0/*;@.>
FryAmTheEggman

@FryAmTheEggman Hahaha, 다음에 새로운 설명을하겠습니다 : p.
Adnan

P,<<>0;@>*또한 10이지만 불행히도 다른 바이트를 면도하는 데 도움이되지 않는다고 생각합니다.
Martin Ender

@ MartinBüttner 아, 부끄러운 일입니다. 다른 바이트를 제거 할 수 있는지 의심 스럽지만 가능성이 거의 없습니다.
Adnan

HexagonyColorer는 이제 애니메이션입니까?
Esolanging 과일

12

하스켈, 11 바이트

((:" ")=<<)

사용 예 : ((:" ")=<<) "Code Golf"-> "C o d e G o l f ".

각 문자 c를 두 요소 목록에 맵핑 [c, space]하고 모든 것을 단일 목록으로 연결하십시오.


리스트 모나드는 직교 곱과 유사하게 작용하기 때문에 하스켈과 젤리가 여기서 똑같은 일을하고 있다는 것이 흥미 롭습니다.
ballesta25


6

자바 스크립트, 20 바이트

간단하게, Array.join이 끝에 공간을 추가하여 3 바이트를 절약 할 수 있기를 바랍니다.

s=>[...s,``].join` `

5
[...s,``].join` ` 혹시?
Neil

3
더 나은 [...s,,].join...
edc65

@ edc65 최신 Firefox 또는 Chrome에서 작동하지 않습니까? 난 그냥 얻을 join내가 기대하는 것처럼, 반환으로 기능을.
Mwr247

@ Mwr247 가입 후 코드의 나머지 부분을 입력해야하므로 줄임표 (...)를 넣습니다. 그것은 단지 1 바이트 절약입니다
edc65

@ edc65는 ` `주석 을 입력하는 방법을 알아 내기에는 너무 게으른 것일 수 있습니다 .
Neil

5

> <> , 13 10 바이트

@ Sp3000 덕분에 3 바이트 절약

i:0(?;o 'o

여기에서 시도하십시오 . 링크를 클릭 한 후 제출 을 입력 한 다음 입력을 입력하고 제공을 누른 다음마지막으로 애니메이션없이 시작 또는 실행으로 프로그램을 실행하십시오 .

설명

i       read a character
:       duplicate
0(      is it less than 0?
?;      if so: end program. Else:
o       output read character
 '      push all chars until matching (same) quote. Top character is a space
o       output that character, which is a space. Go back to the beginning

i:0(?;o 'ofor 10
Sp3000

실제로도 io 'o작동 하여 오류가 발생 합니다.
Sp3000

@ Sp3000 감사합니다! 오류없는 버전으로갑니다 (제출 하시겠습니까?). 직접 문자를 입력 할 수 없습니다. 일치하지 않는 견적은 어떻게 작동합니까? 항상 앞의 문자를 선택합니까?
Luis Mendo

1
'문자 '를 닫을 때까지 다른 문자를 찾을 때까지 문자를 밀어 넣 습니다. 이 경우 열기 및 닫기 '는 동일한 문자이며 대부분의 소스 코드가 푸시되지만 맨 마지막 문자는 마지막으로 푸시 된 이후 공간 일뿐입니다.
Sp3000

@ Sp3000 그래서 그것은 또한 주기적입니다. 제안과 설명에 감사드립니다!
Luis Mendo

5

Java, 132 (System.in) 또는 99 (프로그램 인수) 바이트

오늘 밤 오버 헤드를 느낄 수 있습니까?

class F{public static void main(String[]a){System.out.print(new java.util.Scanner(System.in).nextLine().replaceAll("(.)", "$0 "));}}
class W{public static void main(String[]a){for(char c:a[0].toCharArray())System.out.print(c+" ");}}

shooqie 는 이것을 수행하는 6 바이트 더 짧은 방법을 알아 냈지만 나는 그들의 접근 방식을 훔치지 않을 것입니다. 그러나 STDIN 및 람다 버전과 함께 사용했습니다.

람다는 28 자이지만 프로그램 요구 사항을 충족하지 않습니다.

s->s.replaceAll("(.)","$0 ")

질문은 입력이 STDIN에서 가져와야 함을 지정했습니다.
EMBLEM

괜찮다면 추가 할 수 있습니다.
Blue

지금 STDIN 버전을 추가했습니다 (그리고 영리한 정규식 shooqie를 사용했습니다).
CAD97

정규식에 괄호가 필요하지 않습니다. 에 대한 인수 사이의 추가 공백도 제거했습니다 replaceAll.
Khuldraeseth na'Barya

4

Cubix , 10 바이트

Cubix는 @ETHproductions에서 개발 한 2 차원 언어로, 명령이 큐브에 래핑됩니다. 온라인으로 사용해보십시오

@.?wi^\oSo

가장자리 길이가 2 인 큐브에 매핑됩니다.

    @ .
    ? w
i ^ \ o S o . .
. . . . . . . .
    . .
    . .

입력으로 시작합니다 i. 흐름이 북쪽 ^으로 상단면으로 리디렉션됩니다 . ?값이 음수이면 좌회전하여 마무리합니다 @. 0은 오른쪽으로 이동 w하거나 양수는 오른쪽 으로 이동 한 다음 왼쪽을 반영합니다 \. 뒤에 공간 출력 문자 oSo.


4

Cubix , 9 바이트

@./.i?>So

온라인에서 작동하는지 확인하십시오!

Cubix는 명령어가 큐브의면에 매핑되는 언어입니다. 이 프로그램은 다음 큐브 네트를 형성합니다.

    @ .
    / . 
i ? > S o . . .
. . . . . . . .
    . .
    . .

명령 포인터는에서 시작하여 i입력에서 다른 문자 코드를 가져와 스택으로 푸시합니다. 남은 입력이 더 이상 없으면 ?IP를 왼쪽 /으로 돌리고을 (를) 누른 다음 위쪽으로 반영 @하여 프로그램을 종료합니다.

그러나 입력이 남아 있으면 값은 문자 코드입니다. 모든으로 1 개 문자 코드 양성의는 ?그것을 전달하는 모든 방법 큐브 감싸는 IP 우회전, 만드는 o숯불를 출력하는 방법에 있습니다. 그런 다음 적중 /하여로 되돌아 >So가 공간을 밀고 인쇄합니다. IP는로 돌아가서 i메인 루프의 시작 부분 으로 돌아갈 때까지 서쪽 으로 이동합니다.

1 문자가 널 바이트 인 경우 문자를 무시 ?하고 계속 진행하며 단순히 단일 공백을 출력합니다.


물론, 서면으로 설명 할 수있는 내용이 많기 때문에 온라인 통역사 에서 볼 것을 적극 권장합니다 . "speed"옵션이있어 원하는대로 느리게 또는 빠르게 실행을 볼 수 있습니다.


1
당신은 바이트를 저장할 수 있습니다@.Uoi?So
MickyT

4

Stax , 2 바이트

타이 젤리!

0\

staxlang.xyz에서 사용해보십시오!

이 모든 것은 0스택에 푸시 하고 표준 입력에서 문자열을 압축하여 필요에 따라 0을 반복합니다. Stax에서 문자열의 코드 포인트 0은 일반적으로 32 (공백)로 변환됩니다.

포장 ûT하면 가독성이 떨어지기만 할 정도로 짧습니다 .




3

자바, 92

class T{public static void main(String[]A){System.out.print(A[0].replaceAll("(.)","$0 "));}}

3

Awk, 7 바이트

(4 자 코드 + 3 자 명령 행 옵션)

NF++

샘플 실행 :

bash-4.3$ awk -F '' 'NF++' <<< 'Full width text.'
F u l l   w i d t h   t e x t . 

(명령 행 옵션 카운트에 무엇이 포함되어야하는지에 대해 약간의 의견 차이가 있습니다. 실제로 awk인터프리터 에게 전달되는 것을 포함했습니다 :“-”,“F”및“F”와 빈 문자열 매개 변수 사이의 구분 기호. 아래 내용을 참조하십시오. 내말은.)

bash-4.3$ od -tax1 /proc/`pidof awk`/cmdline 
0000000   a   w   k nul   -   F nul nul   N   F   +   + nul
         61  77  6b  00  2d  46  00  00  4e  46  2b  2b  00
                         ╰────────╯

3

PHP, 39 바이트

echo join(' ',str_split($argv[1])).' ';

명령 행에서 실행

php fullwidth.php "Full width text is text that has a space after every character, including the last one."

https://eval.in/541179


3

WhoScript 38 바이트

1v;pr;e;#0 1;-;i;t=;ti;o;tl;" ";d;>;pf

문자열이 명령 행에 제공 될 때 가장 잘 작동하지만 실시간으로 한 번에 한 문자 씩 수행 할 수도 있습니다.

언 골프 드 :

time_vortex
  psychic_paper read
  duplicate
  # 0 1
  -
  integer
  TARDIS =
  TARDIS if
      opening
  TARDIS landing
  # 20
paradox
pop
psychic_paper flush

3

미로 , 10 바이트

<.23.%):,>

오류와 함께 종료되지만 오류 메시지는 STDERR로 이동합니다.

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

설명

이것은 완전히 선형적인 프로그램이 가능한 드문 경우 중 하나입니다. 루프는 소스 코드의 수정 명령을 통해 달성 <하고 >각 반복 후 우리는 스택이 다시 비어 있음을 알고 있기 때문에 작동합니다.

< 한 줄의 전체 셀을 왼쪽으로 주기적으로 이동하므로 다음과 같이 끝납니다.

.23.%):,><

명령 포인터 (IP)를 가져 와서 IP가 이제 코드의 오른쪽 끝에 있고 왼쪽으로 이동해야합니다. 다음으로, >반대로 수정하여 소스 코드를 다시

<.23.%):,>

이제 모든 것이 다시 시작되기 전에 단일 반복 (오른쪽에서 왼쪽으로)을 실행합니다.

,    Read a character code from STDIN, or -1 at EOF.
:)   Duplicate and increment.
%    Modulo. At EOF this will attempt a division by zero and terminate. Otherwise, we
     have n % (n+1) = n, so we're left with the input character again.
.    Print it back to STDOUT.
32   Turn the top of the stack into a 32.
.    Print it as well (a space).

3

Gema , 5 바이트

?=?\ 

샘플 실행 :

bash-4.3$ gema '?=?\ ' <<< 'Full width text.'
F u l l   w i d t h   t e x t . 

나는이 언어를 본 적이 없다. 통역사와 연결 하시겠습니까?
스파게티

죄송합니다. 게시물 제목에 하이퍼 링크를 추가했습니다. 아주 오래되었지만 슬프게도 Google은 이름이 '범용 매크로 프로세서'에서 유래 한 경우에만 효율적으로 찾을 수 있습니다.
manatwork


3

APL, 5 바이트

∊2∘↑¨

공백을 추가하는 효과와 함께 문자열의 각 문자에 대해 2 개의 항목을 사용

stdin을 사용하는 프로그램으로 만들려면 동일한 바이트 수입니다.

∊2↑¨⎕

여기서 사용해보십시오 .



3

PHP, 31 바이트

<?=chunk_split($argv[1],1," ");

명령 행 인수에서 입력을받습니다.


3

Threead , 45 16 바이트 비경쟁.

  B[coB]
32c   o

STDIN을 통해 입력을받습니다.

첫 번째 라인 / 테이프는 단순히 STDIN에서 바이트를 읽고 씁니다. 두 번째 줄은 처음에을 통해 공백을 저장 한 32c다음 다음 문자를 읽을 때 해당 공간을 출력합니다.

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


3

파이썬 2, 27 25 24 바이트

lambda x:' '.join(x)+' '

Raffi의 답변보다 짧습니다 ...

60919 (FlipTack) 덕분에 -1입니다.


기능이 허용되면 lambda x:' '.join(x)+' '1 바이트 더 짧습니다.
FlipTack


3

C, 56 바이트 (프로그램 인수), 46 바이트 (stdin에서)

main(int a,char**b){while(*b[1])printf("%c ",*b[1]++);}

평범한 오래된 C 답변. 컴파일되면 프로그램은 첫 번째 매개 변수이므로 문자열로 호출해야하며 공백이있는 문자열은 따옴표로 묶어야합니다. 시작 게시물의 예 :

./prog "Full width text is text that has a space after every character, including the last one."

어떤 출력

F u l l   w i d t h   t e x t   i s   t e x t   t h a t   h a s   a   s p a c e   a f t e r   e v e r y   c h a r a c t e r ,   i n c l u d i n g   t h e   l a s t   o n e .

stdin에서 직접 읽는 솔루션.

main(c){while(c=~getchar())printf("%c ",~c);}

@FryAmTheEggman 덕분에 1 바이트 감소


요구 사항은 약간 어둡지 만 입력 내용을 stdin인수로 사용하기보다는 입력 내용을 읽어야한다고 생각합니다 . 또한 다음은 C에서의 골프를위한 유용한 팁이있는 페이지입니다. codegolf.stackexchange.com/q/2203/13877
Josh

@Josh main의 매개 변수로 계산됩니까? 그렇지 않으면 Java 응답이 잘못된 것이므로 Haskell에 대해서도 확실하지 않습니다.
SBI

우리의 I / O가 친절하기를 좋아합니다. :)하지만 사용 시간 getchar()이 짧다고 생각 합니다. 또한 대부분의 C 컴파일러에 대한 포함이 필요하지 않습니다.
FryAmTheEggman

@FryAmTheEggman 포함을 완전히 준수하도록 남겨두고 gcc로만 테스트 할 수 있습니다. gcc-only가 괜찮다면 포함을 면도하는 것이 좋습니다.
SBI

일반적으로, 그것이 Ideone 과 함께 작동한다면 괜찮습니다 :)
FryAmTheEggman


2

진심으로, 7 바이트

' ;,@j+

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

Man, 끝 공간에 3 바이트가 추가되었습니다. 그것 없이는 ,' j4를 위해 일할 것입니다.

설명:

' ;,@j+
' ;      push two copies of a single space
   ,@    push input, swap
     j+  join on spaces, append a space

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.