카테고리 보관물: 코딩

코딩

Helloellolloloo Worldorldrldldd 하십시오. 공백으로 구분 된 여러

입력 한 단어를 받아 그 단어를 빼고 첫 글자를 뺀 프로그램을 만든 다음 모든 글자가 사라질 때까지 반복합니다. 예를 들어, cat될 것입니다 catatt, 그리고 hello될 것입니다 helloellolloloo.


영어 알파벳의 26 글자 중 하나를 입력 하십시오. 공백으로 구분 된 여러 단어가있을 수 있으며 모든 단어에 변경 사항을 적용해야합니다.

출력
추가 된 글자가 더 이상 없을 때까지 각 단어의 첫 글자가 누락 된 후 두 번째 글자가 누락 된 상태로 입력 된 단어.

더 많은 예 :

ill eel 출력 illlll eelell

laser bat 출력 laserasersererr batatt

darth vader 출력 dartharthrththh vaderaderdererr

이것은 코드 골프이므로 가장 짧은 코드가 승리합니다.

설명 :
입력 또는 출력을 목록으로 취급 할 수 있습니다. 공백 대신 줄 바꿈을 사용하여 단어를 구분할 수 있습니다. 입력에 후행 공백을 추가 할 수 있습니다.



답변

apt -m, 6 3 바이트

입력과 출력은 단어의 배열입니다.

£sY

시도 해봐


설명

        :For each word in the input array
£       :Map each letter at index Y
 sY     :  Slice the current word from index Y

답변

brainfuck , 60 56 바이트

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

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

후행 공백이 필요하고 선행 공백을 인쇄합니다. 이 두 가지 모두 우회 될 수 있지만 112 바이트로 끝납니다 .

설명

,[  Loop over each byte of input
  Tape: 32 w o r-32 d'
  >++++++++[-<----<++++>>]   Subtract 32 from the character and add 32 to the previous char
  Tape: 32 w o r d-32 0'
  <[>>]<   If the last character was a space
  Tape: 32 w o r d-32 0'
  or
  Tape: 32 w o r d' space-32
  [
    [<]>.   Move to the end of the word and print out the space
    [   Loop over each letter
      [-]    Remove the first letter (initially space)
      >[.>]  Print the rest of the word
      <[<]>  Move back to the first letter
    ]
    Tape: clear
  ]
,]  Get the next byte of input

답변

하스켈, 36 21 바이트

map$concat.scanr(:)""

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

편집 : 새로운 IO 형식으로 인해 -15 바이트 (공백으로 구분 된 단어 대신 단어 목록)


답변

-p, 36 25 23 바이트

s!\b|\S!$'=~s/ .*//r!eg

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

이것은 단일 regsub입니다. 먼저 모든 단어 경계 또는 공백이 아닌 문자와 일치합니다.

[][H][e][l][l][o] [][W][o][r][l][d]

이러한 각 일치 항목은 나머지 단어로 바꿔야합니다.

[→Hello][Hello][ello][llo][lo][o→] (...)

$'일치 후 문자열 부분을 저장하는 특수 변수로이를 수행 할 수 있습니다 . 그러나, 우리는 중첩 된 regsub 적용 할 필요가 s/ .*//있는 최초의 우주 과거의 모든 것을 제거 그것에을 $'입력의 나머지 단어를 제거하기 위해.

2 바이트 동안 @nwellnhof 에게 감사드립니다 .


답변

파이썬 3 , 49 바이트

d=lambda s:' '.join(n+d(n[1:])for n in s.split())

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

이것은 "".split()빈 배열 을 반환하여 재귀의 기본 사례에 대한 검사 역할 을하는 사실을 이용 합니다.


답변

젤리 , 3 바이트

ḊƬ€

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

K이제 어레이 입 / 출력이 허용되므로 더 이상 필요하지 않습니다 .

ḊƬ€
  €   For each word:
Ḋ       Remove the first letter
 Ƭ      until there are none left.

답변

APL (Dyalog), 19 9 바이트

{⌽∊,\⌽⍵}¨

내 두뇌를 조깅 해주신 @ H.PWiz에게 감사합니다

APL의 모든 문자열이 문자 배열이기 때문에 작동합니다.

{⌽∊,\⌽⍵}¨
        ¨ - for each string
      ⍵} - string argument - ex. "hello"
     ⌽ - reverse - "olleh"
   ,\ - scan magic - "o" "ol" "oll" "olle" "olleh"
  ∊ - enlist(join together) "oolollolleolleh"
{⌽ - reverse - "helloellolloloo"

TIO