단어의 역전


30

소나는 열 살짜리 딸과 함께 집에 있습니다. 학교가 오후 2시에 끝났으므로 학교에서 다른 자녀를 데려 오기 위해 학교에 가야합니다. 날씨가 더워서 어린 아이를 집에두고 싶어합니다.

그녀는 그녀가 떠나있는 동안 그녀를 바쁘게하기 위해 아이에게 줄을 많이 주었다. 그녀는 그녀에게 줄의 단어를 바꾸라고 요청했습니다. 줄이 많으므로 딸이이 거대한 과제를 해결하도록 도와야합니다.

따라서 단일 공백으로 구분 된 단어가 포함 된 문자열이 있으면 문자열의 단어를 반대로 바꿉니다. 선행 또는 후행 공백이 없다고 가정 할 수 있습니다.

문자열에는 만 포함 [a-zA-z ]되므로 문장 부호를 처리 할 필요가 없습니다.

문자열을 입력으로 받으면 문자열을 출력해야합니다.

샘플 테스트 사례 :

Input:
Man bites dog 

Output: 
dog bites Man


Input:
The quick brown fox jumps over the lazy dog

Output:
dog lazy the over jumps fox brown quick The


Input:
Hello world

Output:
world Hello

채점

이것은 입니다. 바이트 단위의 최단 답변이 이깁니다.



1
단어 목록으로 입력을 취할 수 있습니까? (예 ['man', 'bites', 'dog'])
Rɪᴋᴇʀ

3
출력에 후행 공백이있을 수 있습니까?
Digital Trauma

답변:





7

자바 스크립트 (ES6), 31 바이트

s=>s.split` `.reverse().join` `

시도 해봐

f=
s=>s.split` `.reverse().join` `
o.innerText=f(i.value="Man bites dog")
oninput=_=>o.innerText=f(i.value)
<input id=i><pre id=o>


1
이것과 같은 답변입니다. 본질적으로 C # 답변과 동일하여 골프를 치기 위해 C #을 싫어합니다. 내 대답의 모든 여분의 보풀은 거의 ... 바이트 수를 두 배로 일
TheLethalCoder

참고 사항 : C #에서 아무것도 전달하지 않으면 Split기본적으로 공백이 분할되어 여기에서도 동일하게 할 수 있습니까?
TheLethalCoder

1
불행히도 @TheLethalCoder split는 JS에 문자열 / 정규식을 제공하지 않으면 사용 된 구문에 따라 각 개별 문자로 분할되거나 원래 문자열을 포함하는 단일 요소로 배열을 만듭니다.
Shaggy

7

배쉬 + 일반적인 리눅스 유틸리티, 21

printf "$1 "|tac -s\ 

출력 문자열에 후행 공백을 남깁니다. 이것이 정상인지 확실하지 않습니다.


2
50k 축하합니다 !! 당신의 차례 오늘 :-)
Luis Mendo

@LuisMendo 감사합니다!
Digital Trauma

6

R, 19 바이트

cat(rev(scan(,'')))

stdin에서 문자열을 읽습니다. 기본적으로,scan 으로 공백 / 줄 바꾸기로 구분 된 토큰을 읽으므로 단어를 벡터로 읽습니다. 공백으로 요소를 rev반전시키고 cat인쇄합니다.

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





3

brainfuck , 74 바이트

,[>++++[<-------->-],]<[>++++[->--------<]+>[[<]>[+>]<]<-[<]>[.>]<[[-]<]<]

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

이 코드는 두 개의 다른 위치에 숫자 -32를 생성하지만 단일 -32를 유지하는 것보다 적은 바이트로 보입니다.

설명

,[                        input first character
  >++++[<-------->-]      subtract 32 from current character (so space becomes zero)
,]                        repeat for all characters in input
<                         go to last character of last word
[                         while there are more words to display:
 >++++[->--------<]       create -32 two cells right of last letter
 +>                       increment trailing space cell (1 right of last letter) so the next loop works
 [[<]>[+>]<]              add 32 to all cells in word and trailing space cell
 <-                       subtract the previously added 1 from the trailing space
 [<]>                     move pointer to beginning of word
 [.>]<                    output word (with trailing space)
 [[-]<]                   erase word
 <                        move to last character of previous word
]

3

C, 54 48 바이트

인수를 48 바이트로 입력으로 사용

main(c,v)char**v;{while(--c)printf("%s ",v[c]);}

온라인 시도

> ./a.out man bites dog

포인터 사용, 84 바이트

f(char*s){char*t=s;while(*t)t++;while(t-s){while(*t>32)t--;*t=0;printf("%s ",t+1);}}

용도

main(){ f("man bites dog"); }

3

Japt , 11 10 7 4 바이트

Japt에서의 첫 시도.

¸w ¸

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


설명

    :Implicit input of string U
¸   :Split on <space>
w   :Reverse
¸   :Join with <space>

여기에서 Japt 팁을 공유 하십시오 .


2
Japt :-)를 사용해 주셔서 감사합니다 ¸. 대신에 qS 3 바이트를 절약해야합니다. (통역사 문서의 "유니 코드 바로 가기"섹션 참조)
ETH 프로덕션

좋은! -S플래그 를 사용하면 바이트를 저장할 수 있습니다 .
Oliver

@obarakon은 2 바이트를 계산합니다. 플래그가 바이트 수에 포함되어 있지 않는 한, 4 바이트입니다.
Shaggy

@Shaggy 각 플래그는 1 바이트로 계산됩니다. 따라서 -S총 바이트 수에 +1이됩니다.
Oliver

아, 알겠습니다 그게 PPCG 일입니까 아니면 Japt 일입니까?
Shaggy






2

Cubix , 48 바이트

거의 이것을 포기했지만 마침내 도착했습니다.

oU_;SW;@?ABu>):tS-?;\0$q^s.$;;<$|1osU!(;;...<#(1

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

이것은 다음과 같이 측면 길이가 3 인 큐브에 매핑됩니다.

      o U _
      ; S W
      ; @ ?
A B u > ) : t S - ? ; \
0 $ q ^ s . $ ; ; < $ |
1 o s U ! ( ; ; . . . <
      # ( 1
      . . .
      . . .

일반적인 단계는 다음과 같습니다.

  • 모든 입력 A및 역 B스택 가져 오기
  • 네거티브 q를 아래쪽으로 옮기고 0스택에 카운터 를 추가하십시오 . 여기에서 뛰어 다니는 것.
  • 공간 / 종료 루프를 찾고 올바른 인쇄 순서로 스택을 배치합니다.
    • 카운터 )를 늘리고 스택에서 카운터 항목을 가져옵니다.t
    • 공간인가 아니면 EOI인가 S-?
    • 그렇지 않으면 반복
  • 워드 루프 인쇄
    • 감소 카운터 (
    • 카운터 인 경우 루프 종료 !U 가 0이면
    • s스택에 문자가있는 스왑 카운터
    • o캐릭터를 인쇄 하고 스택에서 튀어 나옵니다;
    • 반복 루프
  • 스택 길이를 #줄이고 감소(
  • 확인 ?0 경우 출구 @가 0 인 경우
  • 그렇지 않으면 공간 So정리를 인쇄 ;;하고 첫 번째 루프로 돌아갑니다.

많은 불필요한 단계를 건너 뛰었지만 단계별로 볼 수 있습니다


2

Mathematica, 35 바이트

StringRiffle@Reverse@StringSplit@#&

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


StringSplit[#]공백으로 자동 분할되므로을 지정할 필요가 없습니다 " ".
나무가 아님

2
옳은! -5 바이트!
J42161217

오, 나는 그리고 당신이 기능 조성물을 이용하여 다른 바이트를 저장할 수 있다고 생각 : StringRiffle@*Reverse@*StringSplit(이 같은 전화 StringRiffle@*Reverse@*StringSplit@"hello world")
아니 나무

2

로다 , 27 25 바이트

@fergusq 덕분에 2 바이트 절약

{[[split()|reverse]&" "]}

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

이 함수는 입력 스트림에서 입력을받습니다.

설명 (오래됨)

{[[(_/" ")()|reverse]&" "]}           /* Anonymous function */
   (_/" ")                            /* Pull a value from the stream and split it on spaces */
          ()                          /* Push all the values in the resulting array to the stream */
            |reverse                  /* And reverse it */
  [                 ]                 /* Wrap the result into an array*/
                     &" "             /* Concatenate each of the strings in the array with a space */
 [                       ]            /* And push this result to the output stream */

split공백을 기본 구분 기호로 사용하므로 split()보다 짧습니다 (_/" ")().
fergusq




1

J , 6 바이트

|.&.;:

Try it online! This is reverse (|.) under (&.) words (;:). That is, split sentence into words, reverse it, and join the sentence again.


1

Gema, 29 characters

<W><s>=@set{o;$1 ${o;}}
\Z=$o

Sample run:

bash-4.4$ gema '<W><s>=@set{o;$1 ${o;}};\Z=$o' <<< 'Man bites dog'
dog bites Man 


1

Perl 6, 14 bytes

{~[R,] .words}

Try it

Expanded:

{              # lambda with implicit param $_

  ~            # stringify following (joins a list using spaces)

   [R,]        # reduce the following using the Reverse meta operator

        .words # call the words method on $_
}

1

Java 8, 53 57 bytes

Lambda + Stream API

s->Stream.of(s.split(" ")).reduce("",(a,b)->b+" "+a)

Following Selim suggestion, we just dropped 4 bytes


1
Save 4 bytes by using Stream.of instead of Arrays.stream :--)
Selim


1

Pyth, 3 bytes

_cw

My first Pyth answer, one byte shorter than @notjagan's answer!

Explained:

 cw # Split the input by space (same as Python's string.split())
_   # Reverses the array
    # Pyth prints implicitly.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.