텍스트에서 접두사를 검색하고 텍스트에 모든 접미사를 나열합니다.


17

여기서는 "접미사"를 느슨하게 사용하여 "접두사 다음에 오는 하위 문자열"을 의미합니다.

여기서 "접두사"는 단어의 시작을 의미하며, 단어의 시작은 공백 뒤 또는 입력 텍스트의 첫 번째 문자 (첫 번째 단어)로 정의됩니다. 단어 중간에있는 "접두사"는 무시됩니다.

예를 들어 입력 접두사가 "arm"이고 입력 텍스트가 "Dumbledore의 군대가 임박한 아마겟돈으로 무장했습니다"이면 출력 목록에 (y, ed, ageddon)이 포함됩니다.

테스트 사례

대소 문자를 구분하고 문자열은 공백 다음에 끝납니다. 공백으로 입력이 시작되지 않습니다.

중복 제거는 선택 사항입니다.


Input prefix: "1"

Input text:

"He1in aosl 1ll j21j 1lj2j 1lj2 1ll l1j2i"

Output: (ll, lj2j, lj2) - in any permutation

Input prefix: "frac"

Input text: 

"fracking fractals fracted fractional currency fractionally fractioned into fractious fractostratic fractures causing quite a fracas"

Output: (king, tals, ted, tional, tionally, tioned, tious, tostratic, tures, as)

Input prefix: "href="https://www.astrotheme.com/astrology/"

Input text: 

"(div style="padding: 0; background: url('https://www.astrotheme.com/images/site/arrondi_450_hd.png') no-repeat; text-align: left; font-weight: bold; width: 450px; height: 36px")
  (div class="titreFiche" style="padding: 5px 0 0 6px")(a href="https://www.astrotheme.com/astrology/Nolwenn_Leroy" title="Nolwenn Leroy: Astrology, birth chart, horoscope and astrological portrait")Nolwenn Leroy(br /)
(/div)
  (div style="text-align: right; border-left: 1px solid #b2c1e2; border-right: 1px solid #b2c1e2; width: 446px; padding: 1px 1px 0; background: #eff8ff")
    (table style="width: 100%")(tr)(td style="width: 220px")
(div style="padding: 0; background: url('https://www.astrotheme.com/images/site/arrondi_450_hd.png') no-repeat; text-align: left; font-weight: bold; width: 450px; height: 36px")
  (div class="titreFiche" style="padding: 5px 0 0 6px")(a href="https://www.astrotheme.com/astrology/Kim_Kardashian" title="Kim Kardashian: Astrology, birth chart, horoscope and astrological portrait")Kim Kardashian(br /)(span style="font-weight: normal; font-size: 11px")Display her detailed horoscope and birth chart(/span)(/a)(/div)
(/div)
(div style="padding: 0; background: url('https://www.astrotheme.com/images/site/arrondi_450_hd.png') no-repeat; text-align: left; font-weight: bold; width: 450px; height: 36px")
  (div class="titreFiche" style="padding: 5px 0 0 6px")(a href="https://www.astrotheme.com/astrology/Julia_Roberts" title="Julia Roberts: Astrology, birth chart, horoscope and astrological portrait")Julia Roberts(br /)(span style="font-weight: normal; font-size: 11px")Display her detailed horoscope and birth chart(/span)(/a)(/div)
    (td id="cfcXkw9aycuj35h" style="text-align: right")
  (/div)"

Output: (Nolwenn_Leroy", Kim_Kardashian", Julia_Roberts")

승자

이것은 이므로 가장 적은 바이트가 이깁니다. :)

코드가 테스트 사례와 같은 임의의 문제를 해결할 수있는 한 작동하는 방식으로 입력을 받아 들일 수 있습니다.


2
분명히, 접두사는 단어의 시작 부분에 있어야합니까? 두 번째 테스트 사례에 단어 'diffraction'이 있으면 출력이 변경됩니까?
sundar-복원 모니카

2
https://www.astrotheme.com/astrology/앞에 붙일 때 어떻게 접두사가 될 수 href="있습니까?
Neil

1
접미사가 비어 있습니까?
user202729

1
나는 사람들이 다른 공백과 분할 공간을 분할 할 수있게하는 것이 좋습니다. 또한 입력에 행에 여러 공백이 없을 것이라고 말하고 싶습니다 (또는 빈 단어가 정의되지 않은 동작을 초래할 수 있음). 도전의 주요 부분이 단어로 분리되지 않기 때문에이 두 가지를 제안합니다 (단어 목록이나 단어를 입력으로 허용하는 것이 좋습니다.하지만 22 답변으로 너무 늦었습니다. 미래의 도전을 위해).
Jonathan Allan

1
-1 다른 공백으로 분할 할 수 있습니다. 도전은 원래 그랬던 것이 이치에 맞았지만, 지금 변경하면 답이 두 가지 다른 일로 나뉘어 질 것입니다. 그리고 이것은 일부 언어가 처리 할 수없는 경우와 다릅니다. 64 비트 숫자 또는 뭔가, 여기서는 약간 더 복잡한 일치를 구현하는 것을 의미 하므로 잘못된 가정으로 답변을 수정하고 테스트 사례를 추가하여이를 확인하는 것이 더 합리적입니다.
sundar-복 직원 Monica

답변:


5

R , 63 바이트

function(s,p,z=el(strsplit(s,' ')))sub(p,'',z[startsWith(z,p)])

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

긍정적 인 예측 구현은 불행히도 큰 regmatches/gregexpr조합 으로 인해 5 바이트 더 길다 .

function(s,p)regmatches(s,gregexpr(paste0('(?<=',p,')[^ ]*'),s,,T))

2
순진한 sub (grep ())는 66의 lookbehind보다 약간 낫지 만 여전히 startsWith ()를 침해하지는 않습니다. 접근 방식을 변경하지 않고서는 개선의 여지가 많지 않습니다. 온라인으로 사용해보십시오!
CriminallyVulgar

4

젤리 , 12 바이트

Ḳfṛ"€¥Ḋ€ṫ€L}

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


예술 작품. : ') 이것을 사용하여 html을 목록으로 구문 분석합니다. 대단히 감사합니다. :)
DrQuarius

2
@DrQuarius Regex는 HTML을 구문 분석 할 수 없으므로 Jelly도 마찬가지입니다.
user202729

에게 잘 작동하는 것 같습니다 . 왜 그런지 모르겠습니까?
DrQuarius

1
@ DrQuarius 그것은 유명한 농담이며 user202729는 그것을 확장했습니다.
Outgolfer Erik

4

Japt , 9 바이트

단어 배열로 입력을받을 수있는 경우 8 바이트

¸kbV msVl
¸         // Shorthand for `qS`, split into words.
 kbV      // Filter the words, selecting only those that start with the prefix.
     msVl // For each remaining word, remove prefix length chars from the start.

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


아주 좋지만 마지막 테스트 사례 에서는 작동하지 않는 것 같습니다 . 문자열 내부에 따옴표가있을 수 있습니까? 또는 새로운 라인?
DrQuarius

@DrQuarius 마지막 테스트 사례에 결함이 있습니까? 당신이 찾고있는 모든 문자열은 단어의 중간에 있습니다 (로 둘러 싸여 있음 url('')).
Nit


4

C (gcc) , 113 (109) 106 105 바이트

@LambdaBeta 덕분에 -4 바이트!
@WindmillCookies 덕분에 -3 바이트!

i;f(char*s,char*t){for(i=strlen(s);*t;t++)if(!strncmp(t,s,i))for(t+=i,puts("");*t^32&&*t;)putchar(*t++);}

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


1
의를 모두 제거하여 4 바이트를 절약 할 수 있습니다 ^0. Just ;*t;and&&*t;
LambdaBeta

@LambdaBeta 감사합니다! 나는 그것을 놓쳤다.
betseg

1
다른 전략을 사용하여 107 로 줄였습니다 . 죄송합니다 :)
LambdaBeta

@ LambdaBeta 실제로 그 방법을 생각했지만 게시 한 솔루션보다 짧을 것이라고 생각하지 않았습니다. 좋은 대답입니다.
betseg

1
putchar 대신에 puts를 사용하고, 지금은 107이며, 다른 줄에 출력됩니다 : tio.run/…
Windmill Cookies

3

Japt , 16 12 바이트

Arnauld 답변 포트

@Shaggy에서 -4 바이트

iS qS+V Å®¸g

iS                  Insert S value (S = " ") at beginning of first input (Implicit)
   q                split using
    S+V             S + Second input
        Å           slice 1
         ®          map
          ¸         split using S
           g        get first position

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



아마도 이것이 Arnauld 솔루션의 포트라고 언급해야 할 것입니다. (물론 독립적으로 파생되지 않았다고 가정)
Shaggy

@Shaggy 솔직히 나는 이것이 동일한 대답이라는 것을 알지 못했지만 어쨌든 나는 그에게 신용을 줄 것이다. 죄송합니다
Luis felipe De jesus Munoz

시도해보고 싶다면 9 바이트 솔루션이 있습니다.
얽히고 설킨

@Shaggy 이것이 의미 했습니까, 아니면 다른 생각이 있습니까?
Nit

3

05AB1E , 11 바이트

#ʒηså}εsgF¦

온라인으로 사용해보십시오! ( 여기에 여러 줄 문자열에 대한 데모입니다)

어떻게 작동합니까?

# ʒηså} εsgF¦ 전체 프로그램.
# 첫 번째 입력을 공백으로 나눕니다.
 ʒ} 다음 기준으로 단어 필터링 ...
  ηså ... "두 번째 입력이 단어의 접두사에서 발생합니까?"
      ε 그리고 유효한 단어마다
       sg 두 번째 입력 길이를 검색합니다.
         그리고 그 단어의 첫 문자를 그 횟수만큼 떨어 뜨립니다.

:) 아주 좋은데, 멀티 라인 데모에 감사합니다! 다른 프로그램에 문제가 있다고 생각합니다.
DrQuarius

3

Stax , 8 바이트

·B¬╤²*6&

실행 및 디버깅

설명:

j{x:[fmx|- Full program, implicit input: On stack in order, 1st input in X register
j          Split string on spaces
 {   f     Filter:
  x:[        Is X a prefix?
      m    Map passing elements:
       x|-   Remove all characters in X the first time they occur in the element
             Implicit output

또한 x%t(길이 X, 왼쪽에서 자르기)를 사용할 수 있습니다.이 길이는 동일하지만 9 바이트로 압축됩니다 .


아름다운. :) 나는 이것이 승자라고 생각합니다. 가장 낮은 바이트 점수 경쟁자는 대부분 세 번째 테스트 사례를 구문 분석 할 수 없습니다. :)
DrQuarius

아아 ...하지만 지금은 어떻게했는지 알았습니다. 문자열의 따옴표가 프로그램의 일부가 아니라는 것을 프로그램에 알려 주어야합니다. 괜찮습니다. 또한 당신은 여전히 ​​가장 짧습니다. :)
DrQuarius

3

망막 , 31 바이트

L`(?<=^\2¶(.|¶)*([^ ¶]+))[^ ¶]+

온라인으로 사용해보십시오!첫 번째 줄은 원하는 접두사이고 나머지는 입력 텍스트입니다. 중복을 제거하지 않습니다. 공백이 유효한 분리자인 경우 25 바이트입니다. 설명 : 유효한 접 두부의 접미 부를 나열하려고합니다. 는 [^ ¶]+접미사 자체를 일치합니다. 정규 표현식의 접두사는 접미사의 접두사가 입력 접두사임을 보장하는 lookbehind입니다. lookbehind가 오른쪽에서 왼쪽으로 평가 될 때 접두사를 일치시키기 위해 (같은 패턴이지만 내부 ()를 캡처하기 위해 s를 사용하여) 시작한 다음 입력의 시작 부분에서 자체 행의 접두사를 마지막으로 일치시키기 전에 모든 문자를 찾습니다.


공백 또는 줄 바꿈을 의미하는 공백? 나는 그것이 유효한 해결책이라고 생각하지만, 모두에게 공평하게 말하면 명시된대로 문제를 떠날 것입니다.
DrQuarius

@DrQuarius 아니요, 공백에는 탭, 용지 공급 및 타원이 포함 됩니다.
Neil

Retina는 게시물을 볼 때 가장 먼저 떠오른 언어입니다 (아직 언어를 모르지만). 나는 그것이 더 짧을 것이라고 생각했다. 설명해 주실 래요? 예를 들어. 문서는 말합니다 는 개행 문자 왜 여기에 많은 사람들이 필요한지 알 수 없습니다.
sundar-복원 모니카

@sundar 그 당시 약간의 서두름으로 죄송합니다. 첫 번째 는 전체 첫 번째 줄이 접두사와 일치하는지 확인합니다. 두 번째 는 얼마나 많은 중간 라인이 있는지 알 수 없기 때문에 필요합니다. 마지막 두 개 는 같은 방식으로 작동합니다. 무효화 된 문자 클래스에는 일반적으로 줄 바꿈이 포함되지만 여기서는 원하지 않습니다.
Neil

문제없이 추가 해주셔서 감사합니다. "일반적으로 줄 바꿈을 포함하지만 여기서는 원하지 않습니다."<-올바르게 이해하면 여기에서이를 원합니다. OP는 공백 만 구분 기호로 계산하고 접두사가 공백으로 시작하고 접미사가 공백으로 끝나도록 엄격하게 지정합니다. 예를 들어. 접두사가 공백이 아닌 개행 뒤에 오므로 "dif \ nfractional"은 "frac"와 일치하지 않아야합니다. 마찬가지로 "fracture- \ nrelated"는 접미사 "ture- \ nrelated"를 반환해야합니다. 내가 생각하는 좋은 소식은 적어도 하나 이상을 제거 할 수 있기 때문 입니다.
sundar-복원 모니카

3

Brachylog , 24 21 바이트

tṇ₁W&h;Wz{tR&h;.cR∧}ˢ

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

인라인 술어와 변수 공유가있는 경우 몇 바이트 더 짧을 수 있습니다.

입력은 접두사가 첫 번째 요소이고 텍스트가 두 번째 요소 인 배열입니다.

tṇ₁W                    % Split the text at spaces, call that W
    &h;Wz               % Zip the prefix with each word, to give a list of pairs
         {         }ˢ   % Select the outputs where this predicate succeeds:
          tR            % Call the current word R
            &h;.c       % The prefix and the output concatenated
                 R      % should be R
                  ∧     % (No more constraints on output)

2

IBM / Lotus Notes 공식, 54 바이트

c:=@Explode(b);@Trim(@If(@Begins(c;a);@Right(c;a);""))

aand 라는 두 필드에서 입력을받습니다 b. Formula는 @For루프 가 없어도 목록에 함수를 재귀 적으로 적용하기 때문에 작동 합니다.

사용 가능한 TIO가 없으므로 여기 스크린 샷이 있습니다.

enter image description here


2

APL (Dyalog Unicode) , 23 바이트 SBCS

전체 프로그램. stdin에서 텍스트 및 접두사를 묻습니다. stdout에리스트를 인쇄합니다.

(5'(\w+)\b',⎕)⎕S'\1'⊢⎕

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

 프롬프트 (텍스트)

 그 수율 (분리형 '\1'에서 )

()⎕S'\1' PCRE 다음 정규식에서 캡처 그룹 1의 검색 및 리턴 목록 :

 프롬프트 (접두사)

'(\w+)\b', 이 문자열 앞에 붙입니다 (단어 문자 그룹 다음에 단어 경계가옵니다).

5⌽ 처음 5자를 끝까지 회전하십시오. '\bPREFIX(\w+)'


2

C (클랑) , 107 바이트

i;f(s,t,_)char*s,*t,*_;{i=strlen(s);_=strtok(t," ");while((strncmp(_,s,i)||puts(_+i))&&(_=strtok(0," ")));}

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

기술:

i;f(s,t,_)char*s,*t,*_;{   // F takes s and t and uses i (int) and s,t,u (char*)
    i=strlen(s);           // save strlen(s) in i
    _=strtok(t," ");       // set _ to the first word of t
    while(                 // while loop
        (strncmp(_,s,i)||  // short-circuited if (if _ doesn't match s to i places)
         puts(_+i))        // print _ starting at the i'th character
        &&                 // the previous expression always returns true
        (_=strtok(0," "))) // set _ to the next word of t
    ;                      // do nothing in the actual loop
}

#include <string.h>strtok 문제로 인한 gcc segfaults 때문에 clang이어야 합니다.



2

MATL, 17 바이트

Yb94ih'(.*)'h6&XX

MATL Online에서 사용해보십시오

어떻게?

Yb -입력을 공백으로 나누고 결과를 셀형 배열에 배치

94- 대한 ASCII 코드 ^문자

ih -입력 ( "frac")을 가져오고 '^'와 입력을 연결

'(.*)'h-문자열 '(.*)'을 스택에 넣고 '^ frac'와 '(. *)'를 연결합니다. 이제 '^frac(.*)문자열의 시작 부분에 "frac"와 일치하고 이후에 나오는 것을 포착하는 정규식이 있습니다.

6&XX- 6&'토큰'모드 를 지정하여 정규식 일치를 실행 합니다. 즉, 일치 된 캡처 그룹이 전체 일치 대신 반환됩니다.

암시 적으로 결과를 출력합니다.


그것이하는 일입니다 'Tokens'. 알아 둘만 한!
Luis Mendo

1
ㅋ. 나도 전혀 몰랐다.이 답변에 대한 시행 착오로 알아 냈다.
sundar-복원 모니카


2

PowerShell 3.0, 60 62 59 바이트

param($p,$s)-split$s|%{if($_-cmatch"^$p(.*)"){$Matches[1]}}

cmatch 출력을 억제하는 일부 바이트가 손실되었습니다. 고의로 중복을 일으켜 일부를 얻은 해결책이 있습니다. 그러나 처음에는 일치하지 않으면 수정 지시를 던졌지 만 이제는 생각하지 않습니다. 그것을 고치기 위해 +2 바이트.


60 바이트의 솔루션은 경우에 따라 이중 응답을 반환 king, tals, ted, tional, tional, tionally, tioned, tioned, tious, tostratic, tures,tures,tures, tures, as하고 He1in예제에서 인덱스 오류를 표시 합니다. Powershell 5.1, 6.0.2. 62 바이트의 솔루션은 괜찮습니다.
mazzy

1
@mazzy 나는 "Duplicates is allowed"비트를 남용하여 일치하지 않는 것을 발견 할 때 더 많은 복제본을 반환하고 일치하지 않는 첫 번째 반복에서 빨간색을 던지는 것을 알았습니다.
Veskah




1

껍질 , 11 바이트

Haskell 답변 의 포트는 거의 같습니다.

m↓L⁰foΠz=⁰w

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

설명

m↓L⁰f(Πz=⁰)w  -- prefix is explicit argument ⁰, the other one implicit. eg: ⁰ = "ab" and implicit "abc def"
           w  -- words: ["abc","def"]
    f(    )   -- filter by (example w/ "abc"
       z=⁰    -- | zip ⁰ and element with equality: [1,1]
      Π       -- | product: 1
              -- : ["abc"]
m             -- map the following
 ↓            -- | drop n elements
  L⁰          -- | n being the length of ⁰ (2)
              -- : ["c"]

1

젤리 ,  11  9 바이트

Ḳœṣ€ḢÐḟj€

왼쪽의 텍스트 (문자 목록)와 오른쪽의 접두사 (문자 목록)를 허용하는 2 차원 링크로, 문자 목록 (결과 접미사)을 생성합니다.

온라인으로 사용해보십시오! (바닥 글은 전체 프로그램의 암시 적 스매싱을 피하기 위해 공백과 결합합니다)
참고 : OP의 문자열에 세 가지 엣지 케이스를 추가했습니다.

어떻게?

Ḳœṣ€ḢÐḟj€ - Link: text, prefix                        e.g. "fracfracit unfracked", "frac"
Ḳ         - split (text) at spaces -> list of words        ["fracfracit", "unfracked"]
   €      - for each (word):
 œṣ       -   split around sublists equal to (prefix)       ["","","it"]  ["un","ked"]
     Ðḟ   - filter discard items for which this is truthy:
    Ḣ     -   head
          -   -- Crucially this modifies the list:             ["","it"]       ["ked"]
          -   -- and yields the popped item:                 ""            "un"
          -   -- and only non-empty lists are truthy:       kept          discarded
          -            ...so we end up with the list:      [["","it"]]
        € - for each (remaining list of lists of characters):
       j  -   join with the prefix                          "fracit"                                             
          -                                                ["fracit"]

이전 11 개월 :

Ḳs€L}Ḣ⁼¥ƇẎ€

또한 위와 같은 쌍방향 링크.

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


1

-asE가있는 Perl 5, 23 22 21 바이트 (?)

say/^$b(.*)/ for@F

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

명령 줄 하나의 라이너perl -asE 'say/^$b(.*)/ for@F' -- -b=frac -또는 마지막 파일 이름 대신 파일 이름 으로 실행할 수 있습니다 -.
또는 스크립트 파일에서perl -as -M5.010 script.pl -b=frac - (이를 보여주는 TIO 링크에 대한 @Brad Gilbert b2gills 덕분에).

코드 자체는 18 바이트이며 코드에 -b=이름이 지정된 변수에 값 (접두사 입력)을 할당 하는 옵션 에 3 바이트를 추가 했습니다 $b. 그것은 일반적인 "플래그는 계산되지 않는다"는 합의에 대한 예외처럼 느껴졌다.

-a각 입력 행을 공백으로 분할하고 결과를 배열에 배치 @F합니다. -s명령 행에 이름을 지정하여 명령 행 인수를 변수로 지정하는 단축 방법입니다. 여기서 인수는 -b=frac"frac"접두어를 변수에 배치 $b합니다.

/^$b(.*)/- $b문자열 시작 부분의 값과 일치 합니다. .*그 말이 끝날 때까지 그 뒤에 오는 것이 무엇이고, 주변의 패러티 인들은이 가치를 포착합니다. 캡처 된 값은로 반환되어 자동으로 반환됩니다 say. 공백으로 구분 된 단어를 반복하면 for @F초기 또는 마지막 공백을 확인할 필요가 없습니다.



1

펄 6 , 30 바이트

{$^t.comb: /[^|' ']$^p <(\S+/}

그것을 테스트

넓히는:

{  # bare block lambda with placeholder params $p, $t

  $^t.comb:    # find all the substrings that match the following
  /
    [ ^ | ' ' ] # beginning of string or space
    $^p        # match the prefix
    <(         # don't include anything before this
    \S+        # one or more non-space characters (suffix)
  /
}


'p'와 '<'btw 사이에 여분의 공간이있는 것 같습니다.
sundar-복원 모니카

@sundar p및 사이에 공백이 있으며 <(, 그렇지 않으면 다음과 같이 $v<…>짧은 것으로 표시 될 수 있습니다 $v{qw '…'}.
브래드 길버트 b2gills

1
적어도이 경우에는 그것없이 작동하는 것 같습니다.
sundar-복원 모니카

1
@sundar 기술적으로는 경고 만하지만 경고하지 않는 코드와 1 바이트 만 다른 경우 경고하는 코드를 작성하는 것은 좋지 않습니다.
브래드 길버트 b2gills

1

자바 10, 94 바이트

p->s->{for(var w:s.split(" "))if(w.startsWith(p))System.out.println(w.substring(p.length()));}

여기에서 온라인으로 사용해보십시오 .

언 골프 드 :

p -> s -> { // lambda taking prefix and text as Strings in currying syntax
    for(var w:s.split(" ")) // split the String into words (delimited by a space); for each word ...
        if(w.startsWith(p)) //  ... test whether p is a prefix ...
            System.out.println(w.substring(p.length())); // ... if it is, output the suffix
}

1

작은 기본 , 242 바이트

TextWindow객체에 입력 및 출력을받지 않는 스크립트

c=TextWindow.Read()
s=TextWindow.Read()
i=1
While i>0
i=Text.GetIndexOf(s," ")
w=Text.GetSubText(s,1,i)
If Text.StartsWith(w,c)Then
TextWindow.WriteLine(Text.GetSubTextToEnd(w,Text.GetLength(c)+1))
EndIf
s=Text.GetSubTextToEnd(s,i+1)
EndWhile

SmallBasic.com에서 사용해보십시오! IE / Silverlight 필요



1

Brachylog , 12 바이트

hṇ₁∋R&t;.cR∧

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

[text, prefix]입력 변수 를 통해 입력을 받아서 출력 변수를 통해 각 단어생성 합니다. 이것은 원래 sundar의 대답으로, "인라인 술어와 변수 공유가 있으면 몇 바이트 더 짧아 질 수 있습니다"라고 읽은 후 골프를 시작했습니다. 이는 현재 가능합니다. 생성기 출력이 더 많은 바이트를 절약한다는 것이 밝혀졌습니다.

    R           R
   ∋            is an element of
h               the first element of
                the input
 ṇ₁             split on spaces,
     &          and the input
      t         's last element
         c      concatenated
       ;        with
        .       the output variable
          R     is R
           ∧    (which is not necessarily equal to the output).

언어의 새로운 기능을 사용하여 골프를 치기 시작한 첫 두 번의 시도 :

기대했던 전역 변수로 : hA⁰&tṇ₁{∧A⁰;.c?∧}ˢ (18 바이트)

Apply-to-head Metapredicate로 다음을 수행하십시오. ṇ₁ᵗz{tR&h;.cR∧}ˢ (16 바이트)

그리고 내 원래 해결책 :

Brachylog , 15 바이트

ṇ₁ʰlᵗ↙X⟨∋a₀⟩b↙X

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

동일한 I / O 이것은 기본적으로 접두사 ṇ₁ʰ⟨∋a₀⟩를 제거하기 위해 수정 된 접두사가있는 단어의 생성기입니다 .

                   The input variable
  ʰ                with its first element replaced with itself
ṇ₁                 split on spaces
    ᵗ              has a last element
   l               the length of which
     ↙X            is X,
       ⟨   ⟩       and the output from the sandwich
       ⟨∋  ⟩       is an element of the first element of the modified input
       ⟨ a₀⟩       and has the last element of the input as a prefix.
                   The output variable
       ⟨   ⟩       is the output from the sandwich
            b      with a number of characters removed from the beginning
             ↙X    equal to X.

동일한 바이트 수를 가진 매우 다른 술어 :

Brachylog , 15 바이트

hṇ₁∋~c₂Xh~t?∧Xt

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

동일한 I / O

   ∋               An element of
h                  the first element of
                   the input variable
 ṇ₁                split on spaces
    ~c             can be un-concatenated
      ₂            into a list of two strings
       X           which we'll call X.
        h          Its first element
         ~t        is the last element of
           ?       the input variable,
            ∧      and
             Xt    its last element is
                   the output variable.


0

Pyth , 21 20 18 17 16 바이트

AQVcH)IqxNG0:NG"

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

내재적으로 설정 하기 때문에 V대신 -1을 사용하여 -1FNVN

문자열 슬라이싱 옵션에 대한 추가 정보를 읽은 후 -2

사용하여 -1 x인덱스 0에 하위 문자열이 있는지 확인 데 하는

문자열 끝을 얻기 위해 ""로 대체를 사용하여 -1

나는 이것이 심각한 골프를 사용할 수 있다고 확신하지만 Pyth 초보자로서 그것을 작동시키는 것은 보너스였습니다.

어떻게 작동합니까?

assign('Q',eval_input())
assign('[G,H]',Q)
for N in num_to_range(chop(H)):
    if equal(index(N,G),0):
        imp_print(at_slice(N,G,""))

0

Excel VBA, 86 바이트

입력을 접 두부로 사용 [A1]하고 값을 [B1]콘솔에 출력합니다.

For each w in Split([B1]):?IIf(Left(w,[Len(A1)])=[A1],Mid(w,[Len(A1)+1])+" ","");:Next
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.