레 부아 철자


16

실제로 하지 으로도 영감을 Atbash 자기 회문 도에 의해 일반화 된 Gematria 계산기 .

문자열이 주어 s의 길이 N , 출력 Revu'a 시퀀스 의 첫 번째 문자, S 의 처음 두 문자 , ... 제 N 의 문자 -2 (S) , 제 N -1 문자 전체 .

문자열은 방향성강하고 0x0000에서 0xFFFF 범위에있는 유니 코드 (원하는 인코딩) 문자로만 구성됩니다 . 그러나 방향성 제어 문자는 발생하지 않습니다. 주어진 문자열의 모든 문자는 같은 방향성을 갖습니다.

["t","te","tes","test"]공백으로 구분 된 문자열 "t te tes test",
t
te
tes
test
미리 형식화 된 배열 인 여러 줄 문자 로 배열 표기법으로 반환 할 수 있습니다

티
테
테스
테스트
또는 이와 유사한 것 선행, 분리 및 후행 간격의 양은 중요하지 않으며 줄 바꿈도 아닙니다. 의심 스러운지 물어보십시오.

오른쪽에서 왼쪽으로 입력하면 올바른 순서로 오른쪽에서 왼쪽으로 출력되어야합니다.
입력 : "נחמן"
출력 : "נ נח נחמ נחמן"또는

נ
נח
נחמ
נחמן
또는 ["נ","נח","נחמ","נחמן"]. 중 유효하지 않은 결과는 "נחמן נחמ נח נ", "ן מן חמן נחמן"하고 "נחמן חמן מן ן".

답변:


17

Dyalog APL, 2 바이트

,\

연결하여 누적 감소. 여기서 사용해보십시오 .

접두사 a 를 사용하면 출력 형식이 더 좋지만 올바른 순서가 없으면 명확하게 표시됩니다.


2
K에서 동일한 이유로 정확히 같은 솔루션이 작동합니다.
JohnE

@JohnE K는 유니 코드를 처리합니까?
Adám

12

자바 스크립트 (ES6), 27 26 25 바이트

@nicael 및 @ MartinBüttner 덕분에 1 바이트 절약, @Neil 덕분에 1 바이트 절약

x=>x.replace(/.?/g,"$` ")

JS 기능 의 일부 내장 기능 을 활용 .replace합니다. 특히, 대체 $`에서 일치하는 문자 앞에있는 모든 것이됩니다. /.?/g대신 정규식을 사용하면 /./g끝에 빈 문자열과 일치합니다.


다른 바이트를 저장했습니다 : f=x=>x.replace(/.?/g,"$")`. 당신은 여분의 선행 공간을 얻었지만 허용됩니다.
Neil

@ Neil 감사합니다, 나는 작동 할 단서가 없었습니다!
ETHproductions

어, 나는``를 올바르게 인용하는 것을 잊었지만, 당신이 내가 의미하는 바를 해결 한 것을 봅니다.
Neil

6

apt, 10 4 바이트

이 경우 누적 감소가 너무 유용하다는 것을 알지 못했습니다. :-)

UŒ+

기본적으로 쉼표로 구분 된 배열로 출력합니다. 이것이 허용되지 않으면 대신이 6 바이트 코드를 사용하십시오.

U¬å+ ·

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

작동 원리

      // Implicit: U = input string
U¬    // Split U into chars.
  å+  // Cumulative reduce: loop through each item in the array, concatenating it to the total.
      // ["t","e","s","t"] => ["t","te","tes","test"].
      // Implicit: output last expression

7
"온라인으로 사용해보십시오!"라는 문구를 사용하고 있습니다. 온라인으로 연결하지 마십시오 ! 도덕적으로 허용 되는가? : P
Martin Ender

3
@ MartinBüttner Dennis가 상표를 등록하기 전에 약 한 달 동안 Japt 답변에서 해당 문구를 사용했습니다. 계속 사용하려면 도덕적 권리가 있어야한다고 생각합니다. : P
ETHproductions

6

Brainfuck, 40 바이트

내 콘솔은 오른쪽에서 왼쪽 문자를 지원하지 않지만 작동하지 않을 것이라고 생각합니다 .c

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

언 골프 드 :

++++++++++> # Store 10 (Newline)
,[>,]       # Store input
<[<]>       # Goto first character
[           # While next character
  [<+>-]    # Copy character to the left
  <[<]>     # Goto first character
  [.>]      # Print all charaters
  >         # Go to next character
]

13
별도의 답변으로 게시 할 수 있습니다.
nicael

20
당신은 해야한다 별도의 답변으로 그들을 게시 할 수 있습니다.
Timwi

17
당신은 해야한다 별도의 답변으로 그들을 게시 할 수 있습니다.
nicael

21
당신 별도의 답변으로 게시 할 입니다.
Timwi

11
당신은 그들을 별도의 답변으로 게시하도록 저를 판결 했습니다.
YoYoYonnY

5

망막, 11 7 바이트

.
 $`$0

출력은 선행 공간과 후행 줄 바꿈으로 공백으로 구분됩니다.

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


후손을 위해 5 바이트 이상 펄에 이식 가능합니다 : perl -pE 's/./$$ & \ n / g'`. (나는 11 개월 늦었다, 나는 알고있다)
Dada


4

프롤로그 (SWI), 60 49 바이트

암호:

p(X):-findall(S,atom_prefix(X,S),[_|R]),write(R).

설명 :

atom_prefixX의 입력에 집합 S 변수로는 원자 1 프리픽스 제공 X를 빈 원자로 시작한다.

찾기 은 모든 솔루션을 가져 와서 목록에 넣습니다.

[_ | R] 머리 (빈 원자)를 버리고 꼬리를 R에 저장

예 :

p('נחמן').
[נ, נח, נחמ, נחמן]

p('test').
[t, te, tes, test]

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

편집 : 꼬리 만 R에 저장하여 11 바이트를 절약했습니다 .



3

GNU 세드, 21

-Esed 옵션에 대한 점수는 +1입니다 .

:
s/^(\S+)\S/\1 &/
t

LTR에서는 작동하지만 RTL에서는 작동하지 않습니다. 그 비트를 놓쳤습니다. . 실제로 않는 작업의 RTL 그냥 내 터미널에서 제대로 렌더링되지 않았습니다. 현명한 텍스트 편집기 (예 : emacs)에서 보는 IO에서 잘 작동합니다. 또한 Ideone에서도 작동합니다.

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


3

Brachylog , 5 바이트 (비경쟁)

@[@w\

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

설명

@[       Take a prefix of the input
  @w     Write this prefix to STDOUT followed by a linebreak
    \    False: try another prefix

오른쪽에서 왼쪽 문자열은 고려조차하지 않았지만 제대로 작동하는 것 같습니다.


왜 경쟁이 아닌가?
Adám

@ 아담 @[@wGithub에서의 커밋에 대한 정확한 날짜를 찾을 수있는 월 2016 년 한 4월 / 후 반드시 구현되었지만이 문제를 제출하기 전에 반드시 없습니다.
Fatalize

2

CJam, 9 바이트

l{N2$@+}*

출력은 줄 바꿈으로 구분됩니다.

여기에서 테스트하십시오.

설명

l     e# Read input.
{     e# Fold this block over the input, which is effectively a foreach-loop which skips
      e# the first character...
  N   e#   Push a linefeed.
  2$  e#   Copy the previous string.
  @   e#   Pull up the current character.
  +   e#   Concatenate.
}*

나는 CJam이 그것보다 짧을 것을 완전히 기대했다.
Timwi

@Timwi "모든 접두사 / 접미사를 가져 오기"내장 기능이나 일반화 된 누적을위한 고차 함수가 없기 때문에 이것이 최적이 아니더라도 크게 이길 수 있을지 의심됩니다.
Martin Ender

Ll{+_p}/;P : 더 많은 경험을 가진 사람이 더 많은, 또한 어쩌면 따옴표 일 수정 골프 수있을 경우 잘 모르겠어요 때문에 같은 길이, 게시물입니다
FryAmTheEggman

2

자바 스크립트, 36 바이트

x=>[...x].map((c,i)=>x.slice(0,i+1))

데모:

a=x=>[...x].map((c,i)=>x.slice(0,i+1));
document.write(
  a("test")+"<br>"+
  a("נחמן")
)

원칙은 문자열 조각을 첫 번째 문자에서 단어의 모든 문자로 매핑하고 출력하는 것입니다. 놀랍게도 이것은 RTL 문자열에서도 완벽하게 작동하며 최적화가 필요하지 않습니다.


2

내 콘솔은 오른쪽에서 왼쪽 문자를 지원하지 않지만 작동하지 않을 것이라고 생각합니다 .c

C, 74 바이트 (2 번째 항목)

char m[2<<9];i;main(){do{m[i]=getchar();printf("%s ",m);}while(m[i++]>0);}

언 골프 드 :

#include <stdio.h>

// char, because `printf("%s", str);` expects a array of characters.
char str[2<<9];
int  str_len = 0;
int main(void) {
    do {
        str[str_len]=getchar();
        printf("%s ", str);
    } while(m[i++]>0);
    return 0;
}

2

내 콘솔은 오른쪽에서 왼쪽 문자를 지원하지 않지만 작동하지 않을 것이라고 생각합니다 .c

C, 105 바이트 (3 번째 항목)

m[2<<9];i;j;k;main(){while((m[i++]=getchar())<0);for(;j<i;j++,putchar(10))for(k=0;k<j;k++)putchar(m[k]);}

언 골프 드 :

#include <stdio.h>

int str[2<<9];
int str_len = 0;
int main(void) {
    do {
        str[str_len] = getchar();
    } while(str[str_len++] != EOF);
    int i;
    for(i=0; i<str_len; i++) {
        int j;
        for(j=0; j<i; j++) {
          putchar(str[j]);
        }
        putchar(10);
    }
}

2

TI-BASIC, 18 바이트

For(X,1,10^(9
Disp sub(Ans,1,X
End

기술적으로 유효하지 않음 : TI-BASIC은 유니 코드를 지원하지 않습니다.

이 이름을 지정 prgmA하고을 사용하여 입력하십시오 Ans.

프로그램 재귀는 짧아 지지만 변수를 초기화 할 방법은 없습니다. 따라서 각 반복마다 입력의 하위 문자열을 표시합니다. Disp는 값을 반환하지 않으므로 입력을 덮어 쓰지 않습니다.

결국 프로그램은 전체 문자열을 인쇄 한 후 오류와 함께 종료됩니다.



2

자바 7, 95 92 바이트

String d(String a){for(int i=a.length();i-->0;a=a.substring(0,i)+(i>0?"\n":"")+a);return a;}

이전 답변 ( 95 바이트 ) :

String c(String s){String r="";for(int i=0;++i<=s.length();r+=s.substring(0,i)+"\n");return r;}

재귀 적 접근법을 시도했지만 실제로 작동시키지 못했습니다. 아마도 다른 사람이 (이 for-loop보다 짧은) 것입니다.

언 골프 및 테스트 사례 :

여기에서 시도하십시오.

class M{
  static String d(String a){
    for(int i = a.length(); i-- > 0; a = a.substring(0, i) + (i > 0 ? "\n" : "") + a);
    return a;
  }

  public static void main(String[] a){
    System.out.println(c("test"));
    System.out.println();
    System.out.println(c("נחמן"));
  }
}

산출:

t
te
tes
test

נ
נח
נחמ
נחמן

2

, 1 바이트 (비경쟁)

E

설명:

.   # Implicit input
 E  # Get prefixes
  . # Implicit print

딥에 대해 들어 본 적이 없습니다.
Adám

@ Adám There ....
Oliver Ni

1

MATL , 8 바이트

사용 최신 버전 (8.0.0) 언어 / 컴파일러를

jtn1X"YR

>> matl
 > jtn1X"YR
 >
> test
t
te
tes
test

설명

j           % input string
tn          % duplicate and get length, say "N"
1X"         % repeat string N times vertically. Gives a char matrix
YR          % lower triangular part of matrix. Implicitly print


1

𝔼𝕊𝕄𝕚𝕟, 7 자 / 16 바이트

ᴉⓜᵖ ᵴ˖$

Try it here (Firefox only).

어딘가에 내장 된 것이있을 것입니다. 아직 찾지 못했습니다.

설명

ᴉⓜᵖ ᵴ˖$ // implicit: ᴉ=split input, ᵴ=empty string
ᴉⓜ      // map over ᴉ
   ᵖ ᵴ˖$ // push ᵴ+=(mapped item char)
         // implicit stack output, separated by newlines

1

자바 스크립트 ES6, 29 바이트

(a,b='')=>[...a].map(x=>b+=x)

이것은 아무것도 얻지 못하지만 간단한 해결책입니다.



1

파이썬, 32 바이트

f=lambda s:s and f(s[:-1])+" "+s

공백으로 구분 된 문자열을 선행 공백으로 출력하는 재귀 함수입니다.

34 바이트 프로그램 (Python 2) :

s=""
for c in input():s+=c;print s

1

V , 5 바이트 (비경쟁)

òÄ$xh

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

이 언어는 도전보다 새로운 언어이므로이 대답은 경쟁이되지 않습니다. 설명:

ò       " Recursively:
 Ä      "   Duplicate this line
  $     "   Move to the end of this line
   x    "   Delete one character
    h   "   Move one character to the right, which will throw an error when the line is one character long

1

PowerShell v2 +, 28 바이트

[char[]]$args[0]|%{($o+=$_)}

입력 $args[0]을 받아 char배열 로 캐스트 하고 문자를 루프로 파이프합니다 |%{...}. 반복 할 때마다 현재 문자 를 $o통해 누적 됩니다. 이 표현식은 Parens로 캡슐화되어 사본이 파이프 라인에 배치됩니다. 실행이 끝나면 파이프 라인이 플러시 되어 요소 사이에 줄 바꿈이 생깁니다.+=$_Write-Output

PS C:\Tools\Scripts\golfing> .\spell-out-the-revua "נחמן"
נ
נח
נחמ
נחמן

PS C:\Tools\Scripts\golfing> .\spell-out-the-revua "PPCG"
P
PP
PPC
PPCG


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