알파벳 서치 만들기!


66

이 과제 에 대한 솔루션 의 버그 에서 영감을 얻은 문제는 다음과 같은 정확한 텍스트를 생성하는 것입니다.

                         ZYXWVUTSRQPONMLKJIHGFEDCBA
                        YXWVUTSRQPONMLKJIHGFEDCBA
                       XWVUTSRQPONMLKJIHGFEDCBA
                      WVUTSRQPONMLKJIHGFEDCBA
                     VUTSRQPONMLKJIHGFEDCBA
                    UTSRQPONMLKJIHGFEDCBA
                   TSRQPONMLKJIHGFEDCBA
                  SRQPONMLKJIHGFEDCBA
                 RQPONMLKJIHGFEDCBA
                QPONMLKJIHGFEDCBA
               PONMLKJIHGFEDCBA
              ONMLKJIHGFEDCBA
             NMLKJIHGFEDCBA
            MLKJIHGFEDCBA
           LKJIHGFEDCBA
          KJIHGFEDCBA
         JIHGFEDCBA
        IHGFEDCBA
       HGFEDCBA
      GFEDCBA
     FEDCBA
    EDCBA
   DCBA
  CBA
 BA
A
  • 첫 번째 줄에는 25 개의 공백이 있고 알파벳은 26 번째 문자 ( ZYXWVUTSRQPONMLKJIHGFEDCBA)에서 시작하여 줄 바꿈입니다.
  • 두 번째 줄에는 24 개의 공백이 있고 알파벳은 25 번째 문자 ( YXWVUTSRQPONMLKJIHGFEDCBA)에서 시작하여 줄 바꿈입니다.
  • ...
  • 마지막 (26 번째) 줄에는 공백이없고, 알파벳은 1 번째 문자 ( A) 부터 시작 하여 줄 바꿈입니다.

추가 규칙 :

  • 프로그램은 허용되는 출력 방법을 사용할 수 있습니다.
  • 하나의 후행 줄 바꿈 및 / 또는 하나의 선행 줄 바꿈이 허용됩니다.
  • 문자를 포함하는 줄 사이에 줄 바꿈이 하나 더 있어야합니다.
  • 글자는 모두 대문자 여야합니다.

와 마찬가지로 , 짧은 제출 승리. 행운을 빕니다!

리더 보드 :


3
나에게 그것은 박쥐 신호에 의해 던져진 빛처럼 보인다
scottinet


각 줄 앞에 여분의 공간이 있습니까?
HyperNeutrino

3
마지막 글자 뒤에 각 줄에 후행 공백이있을 수 있습니까?
마일

1
@ 마일 네, 괜찮습니다.
MD XF

답변:


19

05AB1E , 7 바이트

암호:

₂žp.s1Λ

05AB1E 인코딩을 사용합니다 . 온라인으로 사용해보십시오!

설명

 žp.s      # Get the suffixes of ZYX...CBA
      Λ    # Using the canvas mode, print the
₂          # first 26 elements of the array
     1     # into the upper-right direction

2
@MDXF IMO, 그것은 정말 멍청한 규칙입니다
DJMcMayhem

3
흠 ... 규칙을 제거 할 것 같아요. 상태 완료
MD XF

2
시간을 찾을 때 해당 기능을 문서화 한 PR을 제안 할 수 있습니다. 잘 작성되고 읽기 쉬운 코드에서 약간의 파이썬을 배울 수있는 좋은 방법 인 것 같습니다
scottinet

6
황금 일 žp때 왜 존재 Au합니까? BADUM tissss
Magic Octopus Urn

5
05AB1E를 사용하여 모든 기능을 설명하는 파일을 작성하고 코드 승리를 줄입니다. : P
Christian

22

R , 67 55 바이트

for(i in 26:1)cat(rep(" ",i-1),LETTERS[i:1],"
",sep="")

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


4
R은 문자열 도전에서 파이썬을 때리고 있습니까? 좋은. LETTERS에 대한 +1
CriminallyVulgar

1
@CriminallyVulgar 매우 이상한 도전입니다. Haskell은 PHP와 R의 동점을 꺾고 있습니다. 둘 다 Python을 꺾고 있습니다. 적어도 Perl은 여러분이 기대하는 것처럼 그들보다 앞서 있습니다.
CR Drost

-2 바이트 변경할 경우 seps. 충돌이 없으면 함수는 명명 된 인수를 자동 완성합니다.
Punintended

1
@ ...주장으로 인해 작동하지 않습니다 . ...(일반적으로) 앞에 오는 인수는 부분적으로 일치하지만 그 이후에는 그렇지 않습니다. 몇 가지 예외가 있다고 생각하지만 cat그 중 하나는 아닙니다
Giuseppe

@Giuseppe 나는 보이지 않는다...
MilkyWay90


15

V , 13 , 11 바이트

¬ZAòY>HGpxl

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

16 진 덤프 :

00000000: ac5a 41f2 593e 4847 7078 6c              .ZA.Y>HGpxl

내 휴대폰에서 작성 : P.

¬ZA         " Insert the alphabet backwards
   ò        " Recursively:
    Y       "   Yank this current line
     >H     "   Add one space to every line
       G    "   Move to the last line in the buffer
        p   "   Paste the line we yanked
         x  "   Delete one character
          l "   Move one character to the right, which will throw an error on 
            "   the last time through, breaking the loop

1
나도 전화로 이런 일을 해요, +1
Stan Strum

12

PowerShell , 42 바이트

25..0|%{' '*$_+-join[char[]]((65+$_)..65)}

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

설명:

25..0|%{                                 } # Loop from 25 to 0
                             (65+$_)..65   # Construct a range of the specific ASCII codes
                    [char[]](           )  # Cast that as a character array
               -join                       # that has been joined together into a string
        ' '*$_+                            # Prepended with the correct amount of spaces


10

/// , 105 97 바이트

/:/\\\\*//#/:Z:Y:X:W:V:U:T:S:R:Q:P:O:N:M:L:K:J:I:H:G:F:E:D:C:B:A//\\*/\/\/_____#
\/ //_/     //*#

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

설명

/// 단지 하나 개의 명령을 알고있는 /<pattern>/<substitution>/<text>모든 항목을 대체 <pattern><text><substitution>. 또한 \문자를 이스케이프 처리하는 데 사용할 수 있습니다.

단순성을 위해 단축 된 코드 :

/:/\\\\*//#/:E:D:C:B:A//\\*/\/\/__#
\/ //_/  //*#

첫 번째 명령은 /:/\\\\*/대체 :\\*후속 코드입니다. 이것은 다음을 제공합니다.

/#/\\*E\\*D\\*C\\*B\\*A//\\*/\/\/__#
\/ //_/  //*#

그럼 /#/\\*E\\*D\\*C\\*B\\*A/대체 #와 함께 \*E\*D\*C\*B\*A:

/\\*/\/\/__\*E\*D\*C\*B\*A
\/ //_/  //*\*E\*D\*C\*B\*A

그럼 /\\*/\/\/__\*E\*D\*C\*B\*A<newline>\/ /대체 \*와 함께 //__*E*D*C*B*A<newline>/:

/_/  //*//__*E*D*C*B*A
/ E//__*E*D*C*B*A
/ D//__*E*D*C*B*A
/ C//__*E*D*C*B*A
/ B//__*E*D*C*B*A
/ A

주의 사항 : \*교체 를 위해 사용해야 했습니다. *또한 대체의 일부 이기 때문에 교체 만하면 무한 루프가 생성됩니다 *.

그런 다음 명령 /_/ /_공백으로 /*//바뀌고 모두 삭제합니다 *.

EDCBA
/ E//    EDCBA
/ D//    EDCBA
/ C//    EDCBA
/ B//    EDCBA
/ A

다음 명령 /#//#아무것도 대체 하지 않습니다. #코드 에는 없기 때문에 아무것도하지 않습니다. 이것은 //코드의 시작 부분에서 두 개의 행간을 제거하기 위해 여기에 있습니다. 이 잎

EDCBA
/ E//    EDCBA
/ D//    EDCBA
/ C//    EDCBA
/ B//    EDCBA
/ 

그런 다음 명령이 / E//제거 <space>E되므로 코드가 남습니다.

    EDCBA
   DCBA
/ D//   DCBA
/ C//   DCBA
/ B//   DCBA
/ 

비슷한 / D//제거 <space>D:

    EDCBA
   DCBA
  CBA
/ C//  CBA
/ B//  CBA
/ 

/ C//:

    EDCBA
   DCBA
  CBA
 BA
/ B// BA
/ 

/ B//:

    EDCBA
   DCBA
  CBA
 BA
A
/ 

그리고 마지막 명령은 불완전하므로 아무것도하지 않습니다.

    EDCBA
   DCBA
  CBA
 BA
A

C # 및 brainfuck 답변과 동일한 길이 : D
Conor O'Brien

9

하스켈, 53 52 바이트

f(a:b)=(b>>" ")++a:b++'\n':f b
f x=x
f['Z','Y'..'A']

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

작동 원리

f['Z','Y'..'A']        -- call f with the full backwards alphabet

f(a:b)=                -- let `a` be the first char and `b` the rest. Return
   (b>>" ") ++         -- replace each char in b with a space, followed by
   a:b ++              -- the input string, followed by
   '\n' :              -- a newline, followed by
   f b                 -- a recursive call of `f` with `b`
f x=x                  -- stop on an empty input string

왜 작동하지 f['Z'..'A']않습니까?
코너 오브라이언

1
@ ConorO'Brien :로 [a..b]시작하여 a모든 후속 작업 ( +1정수의 경우, 다음의 ASCII 문자 등)을 최대로 수집합니다 b. a > b이 목록이 비어있는 경우 그러나 증분 / 감소가 계산되는 두 번째 값 (작을 수 있음)도 지정할 수 있습니다. [1,3..8]-> [1,3,5,7], [15,10..0]-> [15,10,5,0]또는 ['Z','Y'..'A']거꾸로 대문자 알파벳입니다.
nimi

아, 지금 봅니다. 감사!
Conor O'Brien

8

파이썬 2 , 66 64

i=26
while i:i-=1;print' '*i+'ZYXWVUTSRQPONMLKJIHGFEDCBA'[25-i:]

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


1
Programming Puzzles & Code Golf에 오신 것을 환영합니다-멋진 첫 번째 답변!
MD XF

2
감사! 그냥 숨기지 않고 시도해 보겠다고 생각했습니다.
Artemis_134

2
당신은 사이의 공간을 제거 할 수 있습니다 print'65 바이트.
Mr. Xcoder

귀하의 답변을 Pyth로 옮겼습니다. codegolf.stackexchange.com/a/141939/63757
Stan Strum

7

자바 스크립트 (ES6), 83 77 76 바이트

f=(n=0,p='')=>n<26?f(++n,p+' ')+p+`ZYXWVUTSRQPONMLKJIHGFEDCBA
`.slice(~n):''

o.innerText = f()
<pre id=o>


나는 당신에게 개선을 제안하고 싶었지만 우리의 접근 방식이 매우 다르다는 것을 깨달았습니다. 당신이 상관하지 않기를 바랍니다.

@ThePirateBay 문제 없습니다!
Arnauld

7

젤리 , 12 바이트

ØAµ⁶ṁḊ;ṚµƤṚY

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

ØAµ⁶ṁḊ;ṚµƤṚY  Main Link
ØA            "ABC...XYZ"
         Ƥ    For each prefix,
  µ⁶ṁḊ;Ṛµ     Monadic Link
   ⁶          ' '
    ṁ         (with automatic repetition) molded to the shape of
     Ḋ        All but the first letter of the input (repeat - 1)
      ;       With the input          appended to it
       Ṛ                     reversed
           Y  Join on newlines

마일 덕분에 -3 바이트



@LeakyNun 아 멋진 감사합니다!
HyperNeutrino

예, 접두사 빠른 또 다른 사용. 금형이 길이를 암시 적으로 사용하여 모양이 바뀌기 때문에 12 바이트 .
마일

@LeakyNun 실제로 불행히도, 여분의 공간이 없기 때문에 유효하지 않습니다 (고정하는 데 2 ​​바이트가 걸릴 것입니다)
HyperNeutrino

7

brainfuck , 105 바이트

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

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

축소 및 형식화 :

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

읽을 수있는 버전 :

[
  pre-initialize the tape with the values 10 90 32 >26<
  C_NEWLINE: 10
  V_ALPHA: 90
  C_SPACE: 32
  V_COUNTER: 26

AS:

  10 = 8 *  1 + 2
  90 = 8 * 11 + 2
  32 = 8 *  4 + 0
  26 = 8 *  3 + 2
]

8 ++++++++ [
  *  1 >+
  * 11 >+++++++++++
  *  4 >++++
  *  3 >+++
<<<<-]
PLUS 2 >++
PLUS 2 >++
PLUS 0 >
PLUS 2 >++

UNTIL V_COUNTER == 0 [
  COPY V_COUNTER to RIGHT and RIGHT_RIGHT
  [->+>+<<]
  TAPE: 10 V_ALPHA 32 >0< V_COUNTER_R V_COUNTER_RR
  V_COUNTER_R SUB 1 TIMES: >-[-
     PRINT C_SPACE <<.
  >>]
  TAPE: 10 V_ALPHA 32 0 >0< V_COUNTER_RR
  V_COUNTER_RR TIMES: >[-
    PRINT V_ALPHA <<<<.
    DECREMENT V_ALPHA -
    INCREMENT V_COUNTER_R >>>+
  >]
  TAPE: 10 V_ALPHA 32 0 V_COUNTER_R(26) >0<
  V_COUNTER_R SUB 1 TIMES: <-[-
    INCREMENT V_COUNTER <+
    INCREMENT V_ALPHA <<+
  >>>]
  PRINT C_NEWLINE <<<<.
>>>]


6

시적 , 601 바이트

one night i camped a bit
throughout all the forest now
the sweet sights
i saw giant things
i saw little small things
here i am
seated around all my trees i saw
i sleep
i sle-e-p
sleep in a cabin
i am sleep-y
i sleep a bit
i awaken in bed
i stand
i walk
i am ready
i saw a vision of a dragon
i am fooled
i know i am
should i f-ight
i f-light
i did f-light
i did a flight
go away,i do imply
i*m afraid
i run
i leave
i flee
i am timid
i*m just a person,not toughie-tough-guy
no,never
i*m waste
i am stupid
a quitter i was
i am stupid
i*m turning around
i do not appreciate camping
i cry
i am crying
no
no

Poetic은 2018 년 클래스 프로젝트를 위해 만든 esolang이며 단어 길이가 brainfuck 명령 (및 +,-,> 및 <명령에는 각각 1 자리 인수가 있음)에 해당하는 brainfuck 파생물입니다.

단어 길이 만 명령을 지시한다는 사실은 기술적으로 단어가 아닌 단어로 구성된 프로그램을 기술적으로 만들 수 있었음을 의미합니다 (즉, 문자 X는 단어 사이에 공백이있는 문자 수만큼 필요합니다). 불필요한 바이트를 추가하지 않으면 서 자유 구절시.

온라인으로 해보고 싶다면 (첫 번째로 수업 프로젝트의 절반에 해당) 온라인 통역사를 확인하십시오 !


이것이 경쟁이 아닌 이유는 무엇입니까?
pppery

도전 후에 언어가 만들어졌습니다.
JosiahRyanW


흠, 그러면 Poetic을 프로그래밍 언어로 사용하는 동기가 더 커질 것입니다! 허.
JosiahRyanW

5

05AB1E , 10 바이트

žpDvÐg<ú,¦

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

설명 :

žpDvÐg<ú,¦
žp           Push the uppercased alphabet, reversed
  D          Duplicate
   v         For each letter (we just want to loop 26 times, so we use the 
                already pushed alphabet for that purpose)
    Ð        Triplicate
     g<      Length of the string - 1
       ú     Add that number of spaces at the beginning of the string
        ,    Print with newline
         ¦   Remove the 1st element of the remaining copy of the string

5

펄 6 , 37 바이트

@Massa 덕분에 9 바이트가 절약되었습니다.

say " "x$_,chrs $_+65...65 for 25...0

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

설명 : 25...0 25에서 0 사이의 범위입니다 (예상 한대로). 우리는 그 범위를 반복하면서 많은 공백과 chrs65 + 그 숫자 ( $_+65...65)의 ASCII 코드 ( ) 가있는 문자열을 말합니다 (= 줄 바꿈으로 인쇄 ).


1
25...0 더 짧은 방법입니다 :-)
Massa

try say " "x$_,chrs $_+65...65 for 25...0:-)
Massa

많은 감사합니다! 나는 그것에 대해 전혀 몰랐다! 그리고 하위 형식도 더 좋습니다 (너무 나빠서 머리 꼭대기에서 만들었습니다). (이것이 codegolf에 Perl 6을 사용하는 이유입니다. 저는 항상 새로운 것을 발견합니다.)
Ramillies

4

, 19 11 바이트

ASCII 전용으로 -8 바이트

F²⁶«P⮌…α⊕ι↗

온라인으로 사용해보십시오! 링크는 자세한 버전입니다.



noooooo가 선두의 우주 기다립니다
ASCII 전용

아들의 아들 .. 나는 차콜이 가진 모든 단일 명령과 운영자를 살펴볼 필요가있다. > _> 감사합니다!
완전히 인간적인


1
CycleChopIncrement
@ASCII



4

Cubix , 43 46 바이트

$/\;u:\s/':(!$u;:'@^!@Wu;oSU;o+<u(;;oN;(!|

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

Cubified

      $ / \
      ; u :
      \ s /
'  : ( ! $ u ; : ' @ ^
! @ W u ; o S U ; o + <
u ( ; ; o N ; ( ! | . .
      . . .
      . . .
      . . .

달려 봐

이 중 몇 가지를 더 면도 할 수 있었지만 생각보다 조금 더 어려웠습니다. 첫 번째 따옴표 뒤에 26을주는 대체 문자가 있습니다.

  • '<sub> 26을 기본 번호로 스택에 밀어 넣습니다.
  • :(! 카운터로 기본 복제, 감소, 진실성 테스트
  • u참으로 $명령을 건너 뛰고 오른쪽으로 돌리십시오.
    • So;u 32를 누르고, 문자로 출력하고, 팝 32를, 오른쪽으로 돌리면 감소합니다
  • $거짓으로 다음 u명령을 뛰어 넘다.
  • ;:'@^ 팝, 기본 번호를 복제하고 스택에 64를 푸시하고 고문 경로로 리디렉션
  • $\s/:\/u;$이것은 윗면의 단계 순서입니다. 카운터를 64로 교체하기 위해 비등합니다. 여기에 놓은 리디렉션을 건너 뛰면서 끝납니다.
  • <+o;U 추가, 출력 문자, 팝, u- 좌회전으로 리디렉션
  • (!감소, 진실성 테스트. true이면 u 턴에 도달하고 경로 재 지정으로 돌아가는 경로에서 시작됩니다.
  • |(;No 거짓, 반영, 중복 테스트, 중복 감소, 팝, 푸시 10 및 출력 문자
  • ;;(u!@W기본 번호로 내려 가고, 감소하고, 진실한 시험으로 우회전하고, 거짓이면 중지하고, 그렇지 않으면 처음에 차선을 복제본으로 변경하십시오. 헹구고 반복하십시오.

4

파이썬, 83 바이트

[print(' '*i+''.join([chr(64+i)for i in range(i+1,0,-1)]))for i in range(25,-1,-1)]

codegolf에 대한 첫 번째 답변 :)


1
PPCG에 오신 것을 환영합니다! 좋은 대답!
코너 O'Brien





3

파이크 , 8 바이트

G_.<XFo}h-

여기 사용해보십시오!

           -  o = 0
G_         -    reversed(alphabet)
  .<       -   suffixes(^)
    XF     -  for i in ^:
      o    -      o++
       }   -     ^ * 2
        h  -    ^ + 1
         - -   i.lpad(" ", ^)
           - for i in reversed(^):
           -  print i

prepend n spaces to stringPyke의 기능뿐만 아니라 내장 기능이 있으면 올바른 언어가 6 바이 트로이 작업을 수행하는 것을 볼 수 있습니다


3

PHP ( 63 58 55 바이트)

이것은 아마도 Perl에서 상속받은 PHP의 가장 좋아하는 이상한 코너 일 것입니다.

for($c=A;$c!=AA;$q="$s$z 
$q",$s.=" ")$z=$c++.$z;echo$q;

명시 적으로 허용 된대로 후행 줄 바꿈을 출력합니다. 이것은 파일에 넣는 데 필요한 php -r개구부를 저장하기 위해 실행될 수 있습니다 <?php.

설명 : 문자열을 포함하는 변수가 될 때 'A'PHP에 증가, 그것은 될 'B'다음 'C'등까지 'Z'가된다 'AA'. 'A'이 madcap 대수에서 시작 하기 전에 숫자가 없으며 감소 연산자는 그것을 취소하지 않기 때문에 점차적으로 역 알파벳을 저장합니다 $z(기본적으로 NULL문자열과 연결될 때 빈 문자열처럼 작동합니다 $s$q)에서도 마찬가지 입니다. 공백이 누적되고 $s전체 문자열이 변수에 거꾸로 누적 $q됩니다. 즉, 끝에 공백 을 에코해야합니다.

Titus 에게 곱슬 중괄호를 벗고와 같은 인라인 평가 플래그에 대해 벌금을 부과 할 필요가 없다고 말한 덕분 -r입니다.


1
리눅스 줄 바꿈을 사용한다면 57 바이트입니다. -r무료입니다. 2 바이트 더 짧음 :for($c=A;$c!=AA;$q="$s$z\n$q",$s.=" ")$z=$c++.$z;echo$q;
Titus

@Titus 덕분에 답을 얻었습니다.
CR Drost

nm. 그냥 점에 유의 -R하고 -F있습니다 하지 무료. 참조 codegolf.meta.stackexchange.com/questions/2424/...
디도

사용하면 바이트를 절약 할 수 있다고 생각합니다 $c<AA.
Ismael Miguel

1
@IsmaelMiguel 죄송합니다, 너무 간결했습니다. "내가 바이트를 얻지 않고 주변을 뒤섞어 A 사례가 먼저 발생하고 AA 대 B를 감지 할 수있는 방법이있을 수 있지만 생각하기에 충분히 똑똑하지 않다고 생각했습니다. " 나는 플립 팬트를 의미하지 않았으며 앞으로는 조심할 것입니다.
CR Drost



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