각 문자의 4 개 사본으로 알파벳 생성


27

이것은 알파벳을 네 번 인쇄하는 것과는 다릅니다 .

이 작업은 표준 출력에서 ​​영어 알파벳의 각 문자의 4 개 사본 (한 줄에 하나씩)을 생성하는 프로그램을 작성하는 것입니다.

A
A
A
A
B
B
B
B

기타

출력에는 각 문자 다음에 줄 바꿈이 포함되어야합니다.

추가 출력이없는 대문자가 선호됩니다. 그러나 대문자 / 줄 바꿈으로 솔루션이 길어지면 소문자 및 / 또는 추가 공백이 허용됩니다.

추가 편집 : 솔루션이 실행하기에 충분해야합니다. 추가 코드를 입력하지 않고도 언어 구현을 호출하고 답변에서 코드를 붙여넣고 결과를 얻을 수 있어야합니다.

위의 완전성 문제는 C 솔루션의 맥락에서 나타났습니다. 코드 골프장에 대한 규칙이나 규칙이 반드시 있어야합니까? 그렇다면 커뮤니티 가이드에 기꺼이 양보하겠습니다. 그러나 이것은 나의 테이크입니다.

  1. 특히 C와 관련 하여 코드 주위에 main(){... 을 포함하고 계산해야합니다 }. 그렇지 않으면 컴파일되지 않기 때문입니다. #include <stdio.h>코드가 여전히 컴파일되는 한 괜찮지 않기 때문에 경고 . 일반적으로 컴파일 된 언어에는 컴파일 가능한 단위가 필요합니다.

  2. 식을 직접 실행할 수있는 방법이 있다면 원하는 결과를 얻는 맨손식이 허용됩니다. 예를 들어, 언어에 REPL이있는 경우. 당신은없이 하스켈을 제출할 수 있도록 main=길이에 기록 된대로 실제로 작동 한 ghci 프롬프트. 그러나 let그것은 당신의 선언 을 의미한다는 것을 의미 하기 때문에 runhaskell형식 을 고수하는 것이 순 승리 일 수 있습니다 .

  3. 마찬가지로, 입력을 처리하지 않기 때문에 awk스크립트는 BEGIN(또는 ENDstdin이 첨부되었다는 가정하에 /dev/null) 블록 에 있어야 합니다.

기타


4
약간 혼란 스러워요. 여기서 각 문자를 네 번 반복하여 알파벳을 출력하는 것이 어려운가요? 아니면 출력도 실제로 파일에 저장해야합니까?
Iszi

그리고 알파벳 출력해야 합니까?
저스틴

@MarkReed 사이에 개행 문자로 인쇄해야합니까? 왜 그것을 인쇄하지 말고 개행을 선택 사항입니까?
저스틴

3
또한, 도전에 대한 답을 더 많이 제시하여 답변을 발명 한 방법에 대한 이야기를하는 것이 좋습니다.
저스틴

마지막 비트는 공백 규칙에 약간의 영향을 미칩니다. 명확하게 설명해 주시겠습니까? 특히 여분의 공백은 괜찮지 만 줄 바꿈을 생략하는 것은 아니라고 해석하는 것이 옳 습니까?
Iszi

답변:


16

APL (5)

⍪4/⎕A

알파벳 ( ) 의 4 개 복제 ( 4/)의 행렬 형식 ( )⎕A


1
구타되지 않을 것 같습니다. :)
Mark Reed


APL은 사용하는 각 문자를 1 바이트로 매핑하는 코드 페이지를 사용합니다. 이 코드 페이지를 찾을 수 있습니다 , 여기에 IBM의 웹 사이트에.
Steven H.

@StevenH. 링크는 죽었다
Stan Strum

@StanStrum 나는 더 이상 사용되지 않아 링크가 죽었다고 생각하지만 코드 골프를 위해이 메타 답변 이 작동해야합니다.
Steven H.

11

파이썬-37

for i in range(104):print chr(i/4+65)

i0에서 104로 간다. 4로 나누어지고에 대한 ASCII 값에 추가되고 A결과 문자가 인쇄됩니다.


파이썬이 기본적으로 정수 나누기를 사용한다고 생각합니까? PowerShell이 ​​지금 당장라면 좋을 것입니다. 그대로, 정수 나누기로 강제하는 데 필요한 코드가 너무 길어서이 트릭으로 인해 스크립트에 내용을 저장할 수 없습니다.
Iszi

@lszi-파이썬은 피연산자 유형에서 신호를받습니다. 3/40 3.0/4.0은 0.7이고; range()정수를 생성합니다.
Mark Reed

1
최신 버전의 파이썬에서는 작동하지 않습니다. 첫째, 인쇄 기능은 괄호로 호출 할 수 있어야하고, / 더 이상 // '의 작업에 한번입니다 기본 (두 숫자가 정수 경우에도)으로 나누기 정수 수행합니다for i in range(104):print(chr(i//4+65))

3
@ 의식 나는 그것을 알고있다. 골프를 잘 칠 수 있도록 고의로 구 버전을 사용하기로했습니다. Ideone.com에서이 프로그램을 실행하려면 "Python 3"대신 "Python"을 선택하십시오
Justin

3
@Consciousness- "최신 버전의 Python"은 현재 "Python 3"을 참조합니다. 필자는 일반적으로 지정된 버전이없는 "Python"이라고 주장하는 것은 달리 입증 될 때까지 Python 2.x라고 가정합니다. 파이썬 3 코드는 명시 적으로 레이블이 붙어있는 경향이 있습니다.
Mark Reed

8

R, 30 28 27

write(rep(LETTERS,e=4),1,1)

30 바이트의 이전 버전 :

cat(rep(LETTERS,e=4),sep="\n")

나는 문자 줄 바꿈 : 바이트 짧은 생각
주세페

@Giuseppe이 아이디어를 지정할 수 있습니까?
스벤 호헨 슈타인


@Giuseppe 정말 좋은 생각입니다! 지적 해 주셔서 감사합니다.
스벤 호헨 슈타인

1대신 ""stdout을 지정하여 write다른 바이트를 저장 하는 대신 사용할 수 있습니다 .
Giuseppe

7

C, 59

나는 C 제출을 아직 보지 못했기 때문에 경쟁적으로 긴 대답을 제출합니다. 그리고 그것은 나를 슬프게한다. :-/

LATER : @moala에 "/ 4"int 버전을 사용하여 13자를 절약합니다!

float i;main(){while(i<26)printf("%c\n",65+(int)i),i+=.25;}

내 답변을 편집하여 이제 2 문자를 더 절약했습니다!
moala

그리고 또 하나!
moala

6

J : 18 13

4#u:65+i.26 1

나는 여전히 J와 꽤 흔들리고 있습니다. 그래서 이것은 아마 향상 될 수 있습니다


3
다음 #과 같이 나누기 대신 replicate ( )을 사용할 수 있습니다 4#u:65+i.26 1. 또한 ~함수의 인수를 교환하므로 자신이하는 것을 발견 (expression) F value하면이를 대체 value F~ expression하여 문자를 저장할 수 있습니다 .
marinus

@marinus 팁 주셔서 감사합니다. 나는 여전히 J를 배우고 있으며 그러한 종류의 트릭으로 좋은 정보를 찾기가 어렵습니다.
pswg

1
4#65{26,.\a.12 바이트
FrownyFrog

5

루비, 23

puts ([*?A..?Z]*4).sort

@manatwork에 대한 모든 크레딧-이 아니라 그의 의견을 찬성합니다. :)


거대한. @manatwork, 나는 편집을 할 것이지만 분명히 나는 ​​어떤 신용도받을 자격이 없다!
Darren Stone

5
puts [*?A..?Z].map{|i|[i]*4}또는을 더 잘 만들면 puts ([*?A..?Z]*4).sort예제와 같이 문자가 정렬됩니다.
manatwork

2
@manatwork : puts (?A..?Z).map{|i|[i]*4}문자가 짧습니다. mapRange에서 직접 전화 할 수 있으므로이 경우 스 플랫이 필요하지 않습니다.
Mark Reed

5

PowerShell : 32 23

골프 코드 :

[char[]](65..90*4)|Sort

연습 :

[char[]](... )객체 배열을 가져 와서 ASCII 문자로 변환합니다.
65..90AZ의 ASCII 코드입니다.
*4시리즈를 4 번 반복합니다.
|Sort출력을 정렬합니다.

노트 :

이것을 파일에 쓰 >려면 마지막에 파일 이름 뒤에을 던지십시오 .


5

하스켈, 46

x a=a++a
main=putStr$['A'..'Z']>>=x.x.(:"\n")

1
putStr$['A'..'Z']>>=("golf">>).(:"\n")8 비트 저장
Angs

5

빌 펀지 98-18

1+::'g`#@_4/'A+,a,

숫자를 저장하고 104에 도달하면 끝납니다. 숫자를 4로 나눈 문자의 해당 문자를 개행 문자로 인쇄합니다. 그러나 각 문자 뒤에 줄 바꿈을 추가 할 필요가 없으면 16 자입니다.

1+::'g`#@_4/'A+,

더 많은 문자를 인쇄 할 수 있다면 (즉, 모두 4 번) 줄일 수 있습니다 ( 7 6 자, 심지어 Befunge 93에서도 작동).

1+:4/,

줄 바꿈으로 :

1+:4/,a,


4

펄 5, 21

map{print"$_
"x4}A..Z

2
Perl의 큰 따옴표로 묶은 문자열 안에 리터럴 개행 문자를 넣는 것은 결코 없었습니다. +1.
Mark Reed

@manatwork는 내 대답에 대해 언급했지만 붙어 있습니다!
Dom Hastings

4

C, 46 44 43

46 :

i;main(){while(i<104)printf("%c\n",65+i++/4);}

44 :

i=260;main(j){for(;(j=i++>>2)<91;puts(&j));}

44도 :

i=260;main(j){while(j=i++>>2,j<91)puts(&j);}

@marinus, 43 덕분에 :

i=260;main(j){while(j=i++/4,j<91)puts(&j);}

42 세가되면 현상금을 추가해야하나요? :)


6
50 회 댓글을 달려면이 글을 작성해야합니다.
syb0rg

큰! 감사! 답변이 수정되었습니다!
moala

1
당신은 대체 할 수 있습니다 >>2/4.
marinus

4

자바 : 56

for(int i=0;i<104;)System.out.println((char)(i++/4+65));

편집 : 'print'에서 'println'으로 변경되었습니다.


출력에는 각 문자 다음에 줄 바꿈이 포함되어야합니다.
Pierre Arlaud

지적 해 주셔서 감사합니다. 매번 새로운 줄을 인쇄해야합니다
reblerebel

2
The solution must be complete enough to execute. I should be able to invoke an implementation of the language, paste the code from the answer, and get results, without typing any additional code. 귀하의 솔루션이이 조건을 위반하는 것 같습니다
user902383

2
@ user902383 JShell (Java 9의 Java REPL)에 붙여 넣으면 작동하며 최종 세미콜론도 필요하지 않습니다.
David Conrad

@DavidConrad 그렇다면 굉장합니다. REPL / JShell을 사용하기 시작할 것 같습니다.
user902383


4

실제로 6 바이트

4ú*SÖi

여기 사용해보십시오!

설명

4ú*SÖi

4 *         Do 4 times
 ú          Create string of alphabet in lowercase
   S        Sort it
    Ö       Switch Case
     i      Push each character of string

소문자가 있고 개행 문자가없는 4 바이트 :

4ú*S

1
PPCG에 오신 것을 환영합니다!
Outgolfer Erik

4

16 비트 x86 머신 코드 MS-DOS COM, 25 바이트

16 진수로 :

B409BA160189D7B96800F6C1037502FE05CD21E2F5C3400A24

이것은 완전한 MS-DOS .COM 프로그램입니다. 바이트 시퀀스를 .com 확장자를 가진 파일로 복사하고 DOSBox에서 실행하십시오.

분해 :

00: B4 09        mov    ah,0x09         ;INT 21h "Write string to STDOUT" function
02: BA 16 01     mov    dx,0x116        ;Address of the string s ('$'-terminated)
05: 89 D7        mov    di,dx           ;Because there's no way to dereference address in DX
07: B9 68 00     mov    cx,104          ;CX=26*4
_0000000A:
0A: F6 C1 03     test   cl,0x03         ;When lower two bits are zero...
0D: 75 02        jne    _00000011       ;...do not skip the next instruction
0F: FE 05        inc    b,[di]          ;*s++
_00000011:
11: CD 21        int    21              ;Print the string
13: E2 F5        loop   _0000000A       ;Until --CX==0
15: C3           retn
16: 40           db     0x40            ;s[0], starts with 'A'-1
17: 0A           db     0x0A            ;'\n'
18: 24           db     '$'             ;Terminator required by the print function

3

BrainF * , 79 60

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

4
+++++++++++++[>+>+++++>++<<<-]>--->>[<.<.>.<.>.<.>.<.>+>-]
alephalpha

3

AWK, 48

AWK로 시도해보십시오 ...

END{s=65;for(i=104;i--;s+=0==i%4)printf"%c\n",s}

manatwork에서 제안한대로 2 개의 문자를 제거 할 수 있습니다.

AWK, 46 (편집)

END{for(i=104;i--;s+=0==i%4)printf"%c\n",s+65}

AWK, 40 ( MarkReed 코드 편집 )

END{for(;i<104;){printf"%c\n",i++/4+65}}

변수 s의 초기화를 제거하면 2자를 절약 할 수 있습니다 END{for(i=104;i--;s+=0==i%4)printf"%c\n",s+65}..
manatwork

1
코드를 END블록 에 넣으면 입력 스트림 /dev/null이 작동 하더라도 입력 스트림이 필요하다는 것을 의미합니다 . 그 문자 수를 수정합니까? 어쨌든 BEGIN{for(;++i<104;){printf"%c\n",i/4+65}}5 문자가 짧습니다.
Mark Reed

@MarkReed 코드가 작동하지 않습니다. 이것을
Wasi

도 너무 가까이! :) 그러나 여전히 END입력 스트림에 대한 패턴의 요구 사항이 마음에 들지 않습니다 ...
Mark Reed

3

PowerShell, 21

65..90|%{,[char]$_*4}

Iszi에 대한 약간 다른 접근법. 그리고 더 짧은 :-)


3

C # LINQ 115 바이트 110 바이트

Enumerable.Range(65, 26).SelectMany(i => Enumerable.Repeat(i,4))
.ToList().ForEach(i=> Console.WriteLine((char)i));

1
PPCG에 오신 것을 환영합니다! 좋은 첫 포스트!
Rɪᴋᴇʀ



3

펄 6, 32

.say for (('A'..'Z') »xx»4)[*;*]

Perl 6이 내가 처음으로 생각한 솔루션 인 것은 이번이 처음이라고 생각하지만, 하이퍼 오퍼레이터는 자연스럽게 적합했습니다.
Mark Reed

3

캔버스 , 5 바이트

Z41*⟳

여기 사용해보십시오!

설명:
Code        | Explanation                                  | Stack
------------+----------------------------------------------+------------------------------
Z          | The uppercase alphabet                       | "ABC..."
  41*     | Stretched by 4 horizontally and 1 vertically | "AAAABBBBCCCC..."
        ⟳  | Rotated clockwise                            | "A¶A¶A¶A¶B¶B¶B¶B¶C¶C¶C¶C¶..."
            | Print ToS (implicit)                         |

대체 \n인쇄시.



3

brainfuck , 48 바이트

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

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

캐리지 리턴으로 구분하여 소문자로 인쇄합니다. 8 비트 셀과 원점에서 남은 셀을 래핑하는 데 사용하지만 >후자를 카운터하기 위해 a 를 붙일 수 있습니다 .


나는 새로운 것을 게시하려고했지만, 당신은 최선을 다했을 때 ++++++ [-> ++> ++++> ++++++++로 71 바이트를 얻었습니다. ++ <<<] ++++> +> ++> +++++ <[->. <<. >>. <<. >>. <<. >>. + <<.>]
KrystosTheOverlord



2

스칼라, 42

('A'to'Z')map(x=>List.fill(4)(println(x)))

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