모든 영숫자 문자와 밑줄을 인쇄합니다


37

영숫자 문자열과 밑줄을 순서대로 인쇄하거나 반환하는 프로그램이나 함수를 작성하십시오 . 정확히 말하면, 다음과 같은 문자가 출력 될 필요가 없습니다 더 이상하고 :

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_

stdout으로 인쇄 할 때 출력 후 선택적인 후행 줄 바꿈이 허용됩니다.

위의 문자 중 9 개 이상을 포함하는 내장 상수는 허용되지 않습니다.


바이트 단위의 최단 코드가 이깁니다.

그럼에도 불구하고 이것은 매우 간단한 도전이며, 그럼에도 불구하고 흥미로운 답변을 만들어 낼 것입니다.


리더 보드

다음은 일반 리더 보드와 언어 별 수상자 개요를 생성하는 스택 스 니펫입니다.

답변이 표시되도록하려면 다음 마크 다운 템플릿을 사용하여 헤드 라인으로 답변을 시작하십시오.

# Language Name, N bytes

N제출물의 크기는 어디에 있습니까 ? 당신이 당신의 점수를 향상시킬 경우에, 당신은 할 수 있습니다 를 통해 눈에 띄는에 의해, 헤드 라인에 오래된 점수를 유지한다. 예를 들어 :

# Ruby, <s>104</s> <s>101</s> 96 bytes

헤더에 여러 숫자를 포함하려는 경우 (예 : 점수가 두 파일의 합계이거나 인터프리터 플래그 페널티를 별도로 나열하려는 경우) 실제 점수가 헤더 의 마지막 숫자 인지 확인하십시오 .

# Perl, 43 + 2 (-p flag) = 45 bytes

언어 이름을 링크로 만들어 리더 보드 스 니펫에 표시 될 수도 있습니다.

# [><>](http://esolangs.org/wiki/Fish), 121 bytes


2
의견은 긴 토론을위한 것이 아닙니다. 이 대화는 채팅 으로 이동 되었습니다 .
Dennis

답변:


11

볼록, 9 바이트

새로운 방법! 또한 나는 그것이 Luis의 대답과 거의 동일하지만 볼록한 것을 깨달았습니다. 그러나 나는 이것을 독립적으로 생각해 냈습니다.

'{,®\W"Oò

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

설명:

'{,           Array of chars from NUL to 'z
   ®\W"       Regex to match non-word characters
       Oò     Replace all matches with emtpy string

이전 솔루션, 10 바이트 :

A,'[,_¬^'_

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

설명:

A,          0-9
'[,_¬^      A-Za-z
'_          _

1
@ mbomb007 예 CJam 코드와 동일합니다A,'[,_el^'_
GamrCorps

어떤 인코딩입니까?
코너 오브라이언

@ CᴏɴᴏʀO'Bʀɪᴇɴ CP-1252 또는 Windows-1252
GamrCorps


12

펄, 20 바이트

-E추가 비용없이 필요합니다 .

say+a.._,A.._,_..9,_

그래서 내 원래의 대답 (아래)은 약간 지루했습니다. 내가 생각해 낸 유일한 것은 위의 것입니다. 정확하게 동일하지만 조금 더 혼란스러워 보입니다 ... 아래와 거의 동일합니다.

say a..z,A..Z,0..9,_

같은 I @ msh210 의 코멘트에 제안,하지만 그들은 조금 너무 오래있어!


1
+1. 약간 더 흥미롭지 만 더 길지만 27 바이트 모두입니다. say grep/\w/,map chr,1..122|| say map{chr=~/\w/;$&}1..122|| say map{chr=~s/\W//r}1..122
msh210

1
@ msh210 아직도 이걸 더 축소 할 수는 없지만 ... 25 개 관리 : say chr=~/\w/g for 1..255...
Dom Hastings

10

체다, 31 27 바이트

->97@"123+65@"91+48@"58+"_"

이것은 @"운영자를 잘 보여줍니다.

마침내 @"운영자 를 고칠 수 없기 때문에 비 완료 . 버그는 JS 범위가 아닌 체다 범위를 생성하여 제대로 작동하지 않았다는 것입니다.


설명

@"연산자는 CᴏɴᴏʀO'Bʀɪᴇɴ @에 의해 설계되었으며, 무엇을하는 일은 좌에서 우에 문자열 범위를 생성하였습니다. 단항 연산자로 사용하면 (파이썬의 같은 주어진 코드 포인트의 문자를 반환 chr)

언 골프

->
  97 @" 123 +
  65 @" 91  +
  48 @" 58  +
  "_"

10

brainfuck, 58 바이트

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

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

테이프를 3 · 2 n으로 초기화하고 거기서부터 작동합니다.

+++[[<+>->++<]>]    initialize the tape
                    |   0 |   3 |   6 |  12 |  24 |  48 |  96 | 192 | 128 |   0 |   0 |
                                                                                    ^
<<[-<->]            subract 128 from 192
                    |   0 |   3 |   6 |  12 |  24 |  48 |  96 |  64 |   0 |   0 |   0 |
                                                                        ^
<<-.+<<++           ouput '_'; increment 24 twice
                    |   0 |   3 |   6 |  12 |  26 |  48 |  96 |  64 |   0 |   0 |   0 |
                                                ^
[->>+.>+.<<<]       output aAbBcC ~ zZ
                    |   0 |   3 |   6 |  12 |   0 |  48 | 122 |  90 |   0 |   0 |   0 |
                                                ^
<--[->>.+<<]        decrement 12 twice; output 0 ~ 9
                    |   0 |   3 |   6 |   0 |   0 |  58 | 122 |  90 |   0 |   0 |   0 |
                                          ^

9

자바 스크립트 (ES6), 62 바이트

_=>String.fromCharCode(...Array(123).keys()).replace(/\W/g,'')

를 반환 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz하므로 문자열 리터럴을 반환하는 함수보다 6 바이트 만 짧습니다. 그렇습니다.


btoa필요한 출력 을 반환 하는 문자열을 찾을 수 있습니다.
gcampbell

@gcampbell 60! (60 factorial) 문자열을 검색하는 데 시간이 다소 걸릴 수 있습니다 ...
Neil

당신은 그냥 사용할 수 있습니다 atob.
gcampbell

@ gcampbell 나는 표현 할 수없는 문자열을 어떻게 든 제외해야합니다.
Neil

@gcampbell btoa 버전은 어쨌든 62 바이트를 사용합니다 : 45는 60 개의 영숫자를 인코딩하려면 3 개의 인코딩되지 않은 문자 (포함 _)와 14는 14입니다 _=>atob("")+"".
Neil

9

하스켈, 38 바이트

'_':['a'..'z']++['A'..'Z']++['0'..'9']

여기서 설명 할 것이 없습니다.


2
질문 : :과 의 차이점은 무엇 ++입니까?
Downgoat

3
@Downgoat : ++두 개의 문자열을 취해 연결합니다. :문자와 문자열을 받아서 문자열 앞에 문자를 넣습니다. "_"++['a'..'z']...작동하지만 1 바이트 더 깁니다.
nimi

8

PowerShell v3 +, 35 33 바이트

-join([char[]](1..127)-match'\w')

동적 배열을 구성하고 배열 1..127로 캐스트합니다 char. 그것은 -match정규 표현식을 작업 하는 연산자 에게 공급되며, \w일치하는 모든 요소 (즉, 정확히 영숫자 및 밑줄)를 반환합니다. 배열 요소를 a -join로 캡슐화하여 하나의 문자열로 묶습니다. 그것은 파이프 라인에 남아 있으며 출력은 암시 적입니다.


1
이봐, 그건 불공평 해 내 자신의 솔루션은 내가 시작한 것을 제외하고는 동일합니다 0...
Joey

@Joey는 빨리 가야한다. : D
AdmBorkBork

특히 사소하고 명백한 해결책에 대해서는 ;-)
Joey

7

V, 27 바이트

i1122ñYpñvHgJ|éidd@"Í×

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

이 대답은 엄청나게 복잡합니다. 나중에 설명을 게시하겠습니다.

16 진 덤프 :

00000000: 6916 1631 1b31 3232 f159 7001 f176 4867  i..1.122.Yp..vHg
00000010: 4a7c e969 6464 4022 1bcd d7              J|.idd@"...

설명:

읽을 수있는 :

i<C-v><C-v>1<esc>                                   "Insert the text "<C-v>1"
                                                    "<C-v> means "literal"
                 122ñ       ñ                       "122 times,
                     Yp                             "Duplicate this line
                       <C-a>                        "And increment the first number on this line
                             vHgJ                   "Join every line together
                                 |éi                "Insert an 'i' at the beginning of this line
                                    dd              "Delete this line
                                      @"<esc>       "And execute it as V code.
                                                    "That will generate every ascii value from 1-123
                                             Í×     "Now remove every non-word character.

5
: D : D : D 체다는 골프장과 연결되어 있습니다!
Downgoat

7

J, 30 29 28 바이트

randomra 덕분에 바이트를 절약했습니다!

~.u:95,;48 65 97+i."*10,,~26

산출:

   ~.u:95,;48 65 97+i."*10,,~26
_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

설명

설명 자체 는 제공하지 않지만 중간 결과를 제공합니다.

   10,,~26
10 26 26
   i. b. 0
1 _ _
   *  b. 0
0 0 0
   i."* b. 0
   i."*2 3 4
0 1 0 0
0 1 2 0
0 1 2 3
   i. 2
0 1
   i. 3
0 1 2
   i. 4
0 1 2 3
   i."*10,,~26
0 1 2 3 4 5 6 7 8 9  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
   0 1 2 + i."*10,,~26
0 1 2 3 4 5 6 7  8  9  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
1 2 3 4 5 6 7 8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
   48 65 97+i."*10,,~26
48 49 50  51  52  53  54  55  56  57  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48  48
65 66 67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
   ;48 65 97+i."*10,,~26
48 49 50 51 52 53 54 55 56 57 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
   95,;48 65 97+i."*10,,~26
95 48 49 50 51 52 53 54 55 56 57 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 ...
   u:95,;48 65 97+i."*10,,~26
_01234567890000000000000000ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
   ~.u:95,;48 65 97+i."*10,,~26
_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

6

하스켈, 31 바이트

do(x,y)<-zip"aA0_""zZ9_";[x..y]

이 표현식 zip "aA0_" "zZ9_"은 엔드 포인트 목록을 제공합니다 [('a','z'),('A','Z'),('0','9'),('_','_')]. do표기는 각 소요 (x,y)포괄적으로 \(x,y)->[x..y]결과를 연결합니다. do대신 2 바이트의 Anders Kaseorg에게 감사드립니다 >>=.

대안과 비교 :

do(x,y)<-zip"aA0_""zZ9_";[x..y]

zip"aA0_""zZ9_">>= \(x,y)->[x..y]
f(x,y)=[x..y];f=<<zip"aA0_""zZ9_"
id=<<zipWith enumFromTo"aA0_""zZ9_"
[c|(a,b)<-zip"aA0_""zZ9_",c<-[a..b]]
f[x,y]=[x..y];f=<<words"az AZ 09 __"

2
do표기법은 2 바이트를 절약합니다.do(x,y)<-zip"aA0_""zZ9_";[x..y]
Anders Kaseorg

4

C, 50 바이트

f()인수없이 전화 하십시오.

f(n){for(n=128;--n;)isalnum(n)|n==95&&putchar(n);}

인쇄물

zyxwvutsrqponmlkjihgfedcba_ZYXWVUTSRQPONMLKJIHGFEDCBA9876543210

1
isalnum(n)|n==95&&putchar(n)
orlp

거기에 UB가 있습니다. 필요한 인수를 전달하지 않았습니다.
Ven

@orlp- putc대신 사용 했습니다 putchar. putc전달하지 않은 스트림도 쓸 것으로 예상합니다. 함수 자체가 잘 작동합니다 ( putc모두 제거해보십시오 ).
owacoder

트윗 담아 가기
orlp

1
@QPaysTaxes 잘못되었습니다. If the number of arguments does not equal the number of parameters, the behavior is undefined.6.5.2.2/6은 참조 N1570을 .
Ven

4

/// , 63 바이트

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_

올바른 답변은 어떻습니까? 규칙을 위반 한 것 같습니다.
nicael

@nicael 어느 규칙?
Leaky Nun

"위의 문자 중 9 개 이상을 포함하는 내장 상수는 허용되지 않습니다."
nicael

4
예, 이것은 내장 상수를 사용하지 않았습니다.
Leaky Nun

좋아, 그러나 이것은 이상하다. 확실히 OP는 시퀀스를 복사하여 붙여 넣기를 요구하지 않습니다. 흥미롭지 않습니다.
nicael

4

파이썬 3, 58 바이트

print('_',*filter(str.isalnum,map(chr,range(123))),sep='')

STDOUT으로 인쇄하는 전체 프로그램.

출력은 다음과 같습니다. _0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

작동 원리

map(chr,range(123))       Yield an iterator containing all ascii characters with
                          code-points in [0,122]...
*filter(str.isalnum,...)  ...keep characters if alphanumeric and unpack into tuple...
print('_',...,sep='')     ...add underscore and print all characters with no separating
                          space

Ideone에서 사용해보십시오

문자열 상수가 허용 된 경우 다음은 45 바이트입니다.

from string import*
print('_'+printable[:62])

1
print('_'+*filter(str.isalnum,map(chr,range(123))))
Leaky Nun

@LeakyNun 구문 오류가 발생합니다. 나는 비슷한 작업을 생각 print('_',*filter(str.isalnum,map(chr,range(123))))했지만 공백을 구분합니다. OP는 의견에서 '... 출력에 공백이 전혀 허용되지 않는다'고 말했다.
TheBikingViking

파이썬 2는이 접근법으로 1 바이트를 절약 할 수 있습니다 :print''.join(filter(str.isalnum,map(chr,range(123)))),'_'
atlasologist

4

codegolf에서의 첫 시도!

C #을 168 152 150 147 130 127 117 116 115 109 106 바이트

for(var a='0';a<'~';a++){Console.Write(System.Text.RegularExpressions.Regex.IsMatch(a+"","\\w")?a+"":"");}

댓글에 대한 모든 도움을 주신 Kenny가 아닌 aloisdg, AstroDan, Leaky Nun 및 Kevin Lau에게 감사드립니다.


2
PPCG에 오신 것을 환영합니다! 모든 공간을 자유롭게 제거하십시오! 또한 C #에서 골프 팁을 확인하십시오 .
aloisdg는 Reinstate Monica

1
훌륭합니다-2 바이트 더 절약했습니다. 나는이 코드 골프를 정말로 좋아하기 시작했다 :)
Daniel

1
AFAIK, \w정규식 클래스는 영숫자 및 정규식 일치 함수에 대해 충분히 유효 _해야하는을 다룹니다 "\\w".
밸류 잉크

1
코드는 함수가 아니거나 명령문이 아닌 전체 프로그램이어야합니다. 또한 .NetFiddle을 사용하여 코드의 데모를 공유하십시오.
aloisdg는 Reinstate Monica

2
"C #은 코드 골프에 가장 적합하지 않습니다"C #이 골프를 코딩하기에 충분히 재미 있다는 것을 알았습니다. 나는 이것이 주류 언어라고 생각합니다. 당신이이기려면 여기가 느슨해집니다. 목표는 학습과 즐거운 시간으로 정의하면 항상 이길 것입니다.
aloisdg는 Reinstate Monica


4

오브젝트 파스칼, 85 83 73 바이트

일련의 문자를 사용하여 일반 오브젝트 파스칼. 프로 시저 대신 전체 프로그램을 작성하면 2 바이트가 줄어 듭니다. program 키워드를 제거하면 10 바이트가 더 필요합니다.

var c:char;begin for c in['a'..'z','A'..'Z','0'..'9','_']do write(c);end.

나는 항상 오브젝트 파스칼의 정확한 분류로 혼란 스러웠을 것입니다. 쓸모없는 program키워드가 없으면 Turbo / Borland Pascal과 FreePascal은 확실히 행복 합니다.
manatwork

@manatwork 나는 그것을 몰랐다. 이상하게도 파스칼의 경쟁력이
높아졌습니다

내가 자란 언어. 나는 그것이 아직 죽지 않았다는 것을 알고있다.
rexkogitans

@rexkogitans 그래, 나는 학교에서 그것을 배웠지 만 그때부터 아무것도 기억할 수 없다 ... 나는 지금 다시 프로그래밍을하고있다
hdrz

4

bash – 47 37 바이트

man sh|egrep -o \\w|sort -u|tr -d \\n

내 시스템의 출력은 다음과 같습니다

_0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ

유용한 제안에 대해 Digital Trauma에게 감사드립니다.

일부 시스템 에서는 바이트를 저장하는 ascii대신 사용할 수 있습니다 man sh.


1
man sh|egrep -io _\|\\w|sort -u|tr -d \\n
디지털 외상

1
@DigitalTrauma 감사합니다! \w일치하는 항목을 실험하고 찾아 _냈으며 이미 대소 문자를 구분하지 않으므로 더 단축 할 수 있습니다.

env대신 man sh대부분의 환경에서 작동해야합니다. 그것은 내 것입니다. $ env|egrep -o \\w|sort -u|tr -d \\n-> 0123456789ABCDEFGHIKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz.
YSC

없습니다 J. 내 잘못이야.
YSC

4

PHP, 40 바이트

_0<?for(;$a++^9?$a^q:$a=A;)echo" $a"|$a;

온라인 데모 .


1
우수성 +1 참고 사항 : PHP 7.2는 향후 버전에서 정의되지 않은 상수에 대한 오류가 발생한다는 경고를 표시합니다. :-(
Titus

4

망막 , 30 19 16 15 12 바이트

이 최신 버전의 원래 알파벳 시도 를 수정했습니다 . 각 문자는 루프로 인쇄됩니다.

첫 번째 줄은 비어 있습니다.


;
+T\`;w`w_

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

산출:

_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

내 최근 시도에서 4 바이트를 골라 낸 Leaky Nun에게 감사드립니다.


필자 w는 9 개 이상의 필수 문자를 포함하는 상수로 계산합니다. 오른쪽을 펼치고 w왼쪽 의을로 바꿔야 할 것 입니다 o. 각각 5 문자 만 포함하므로 EO대신 대신 사용하여 바이트를 저장할 수 있습니다 d.
Martin Ender

w음역 단계 안의 @ mbomb007 은 정규식을 수행 할 작업이 없습니다. 필요한 63 자 목록으로 확장되는 축약 형입니다. 적어도 orlp 에게이 경우에 대해 구체적으로 물어보십시오 \w. 정규식 에서 사용 하는 것과는 상당히 다릅니다 .
Martin Ender

3

MATL , 11 바이트

7W:'\W'[]YX

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

7W     % Push  2 raised to 7, i.e. 128
:      % Range [1 2 ... 128]
'\W'   % Push string to be used as regex pattern
[]     % Push empty array
YX     % Regex replace. Uses (and consumes) three inputs: source text, regex pattern, 
       % target text. The first input (source text) is implicitly converted to char.
       % So this replaces non-word characters by nothing.
       % Implicitly display

2 바이트 더 짧음 :8W:'\w'XX
DJMcMayhem

2
@DrGreenEggsandIronMan 감사합니다! 그러나 줄 바꿈은 구분 기호로 사용할 수 없다고 생각합니다. 도전 과제는 "영숫자 문자열과 밑줄 그리고 더 이상은 없다"라고 말합니다
Luis Mendo

1
그래서 8W:'\w'XX!내가 시도했지만 작동하지 않는 이유는 무엇입니까
DJMcMayhem

@DrGreenEggsandIronMan 아주 좋은 질문입니다! 좀 더 문자를 사용할 수 있도록 채팅으로 답장 하겠습니다
Luis Mendo

3

Brachylog , 25 바이트

"_"w9yrcw"A":"Z"ycL@l:Lcw

이것은 다음을 인쇄합니다 STDOUT.

_9876543210abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

설명

"_"w               Write "_"
9y                 Get the list [0:1:2:3:4:5:6:7:8:9]
  rcw              Reverse it, concatenate into one number, write
"A":"Z"y           Get the list of all uppercase letters
        cL         Concatenate into a single string L
          @l:Lcw   Concatenate L to itself lowercased and write


3

CJam , 15 14 11 바이트

@FryAmTheEggman 및 @Dennis 덕분에 4 바이트가 줄었습니다!

A,'[,_el^'_

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

A,    e# Push range [0 1 ... 9]
'[,   e# Push range of chars from 0 to "Z" ("[" minus 1)
_el   e# Duplicate and convert to lowercase
^     e# Symmetric difference. This keeps letters only, both upper- and lower-case
'_    e# Push "_".
      e# Implicitly display stack contents, without separators

3

Brainfuck, 89 바이트

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

여기 사용해보십시오

세부:

+++++++++[>+++++>+<<-]>+++.  Goes to '0' while remembering a 9 for the 9 other numbers
[<+.>-]                      Simply prints for the next 9 characters
<+++++++>                    Moves it 7 space to the letters
>+++++++++++++               Saves a 13
[<+<+.+.>>-]                 Prints 2 char at a time while making a second '13' space
<<+++++.+>                   Moves 5, prints '_' and moves to the lowercases
[<+.+.>-]                    And again the double print

댓글을 달 수 있다면 다른 답변을 개선해야 할 것입니다. 그러나 할 수 없으므로 내 글을 올릴 수도 있습니다. 이 글을 쓰기 시작했을 때 가장 낮은 BF는 96입니다.


3

F #, 50 59 바이트

Seq.iter(printf"%c"<<char)(95::[48..57]@[65..90]@[97..122])

산출:

_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

편집 : 처음으로 숫자를 놓쳤다

이 Haskell 솔루션 에서 영감을 얻은 Edit2 는 F # 스 니펫이 67 바이트입니다.

Seq.zip"aA0_""zZ9_"|>Seq.iter(fun(x,y)->Seq.iter(printf"%c")[x..y])

산출:

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_

3

헥사 고니, 33

"A}_8_47<='>({a/_x.@.9!\356);');

넓히는:

    " A }
  _ 8 _ 4 7
 < = ' > ( {
a / _ x . @ .
 9 ! \ 3 5 6
  ) ; ' ) ;
   . . . .

산출:

aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ1203568479_

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

0x1A프로그램의 첫 번째 바이트로 인쇄 할 수없는 문자 가 있습니다. 또한 확장 된 육각형의 첫 번째 행이 일종의 모양이됩니다. 알파벳을 인쇄하기위한 알고리즘을 제안 할뿐만 아니라이 트릭을 보여준 Martin에게 감사합니다!

이것은 저장하여 문자를 인쇄 a하고 A육각형의 두 에지와 글자 사이에 공동 접촉 육각형의 가장자리에있는 번호 26. 이것은 다음과 같습니다.

A \ / a
   |
   26

그런 다음 문자를 인쇄하고 증가시킨 다음 숫자를 줄이는 루프를 시작합니다. 한 번의 반복 후에 우리는 다음을 가질 것입니다.

B \ / b
   |
   25

등등. 초기화를위한 선형 코드는 다음과 같습니다 0x1A " A } a. 제어 흐름 변경 외부의 루프에 대한 선형 코드는 다음과 같습니다 ; ) ' ; ) { ( ' =.

카운터가 0에 도달하면 다른 경로를 따라 숫자와 밑줄을 인쇄합니다. 이 글은 다음과 같습니다 : x 3 5 6 8 4 7 9 ! ; { @. 이것은 현재 메모리 에지의 값을 x모든 십진수를 포함 하는 숫자 1203568479 ( ASCII 코드는 120 임)로 대체합니다 . 이 숫자를 인쇄 한 다음 Hexagony의 깔끔한 기능을 사용합니다. 숫자 256을 ASCII 문자로 인쇄합니다. 이것은 단지 95 또는 밑줄입니다.


3

브레인 퍽, 114 (103) 98 90 76 71 바이트

또 다른 사소한 (현재는 사소한) 솔루션이지만 이번에는 BF입니다!

@primo 덕분에 14 (!) 바이트를 절약했습니다.

@primo의 제안으로 인해 범위를 거꾸로 생성하여 4 바이트를 더 절약했으며 소문자로 인쇄하기 전에 증분하여 다른 바이트를 저장했습니다.

새로운 기능 (반복 4, 71) :

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

이전 (값, 114) :

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

구식 (재발 1, 103) :

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

이전 (재귀 2, 90) :

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

구식 (재발 성 3, 76) :

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

8 비트 랩핑 셀과 랩핑 메모리를 가정합니다. 내가 사용 온라인으로보십시오 .

모두 출력 _AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789

먼저이 부분

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

이 값으로 테이프를 초기화합니다

[91, 70, 49, 21, 7]
                 ^

이것은 기본적으로 모델링 한 되풀이 관계가 f(x) = 7 * (3 * x + 1)거꾸로 있기 때문에 작동 합니다. 참조 프리모의 안녕, 세계 @! 답변 재발 관계가 무엇인지에 대한 설명.

그런 다음이 값을 유용한 값으로 변경하는 것은 매우 간단합니다. (그리고 밑줄을 인쇄하십시오)

Code: +++<--<-<-----<++++.+

Tape: [96, 65, 48, 26, 10]
       ^

그런 다음 단순 루프는 값을 사용하여 나머지 문자를 인쇄합니다. 인쇄하기 전에 1 씩 증가시켜 1 바이트를 저장합니다.

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

더 짧은 시퀀스 생성을 찾아야합니다.

나는 잘 작동하는 것으로 보이는 재발 관계를 찾았지만, 사냥과 펙이 적은 짧은 것이있을 수 있습니다.

선형 회귀 계산기를 사용하여 가능한 가장 짧은 선형 재발 관계를 찾아야하므로 개선하고 싶다면 다른 수식을 찾아야합니다.

@primo는 정말 재발 관계를 많이 개선했습니다.


거꾸로 건설은 어떻습니까? +[--[<+++++++>->+<]>-]
primo

@primo 와우! 어떻게 작동합니까?
Blue

3은 고르지 않으므로 256 회 전체를 반복합니다. 로 끝나는 >-]최종 용어는 1 (x7)입니다. 실제로, 당신은 아마로 시작해야하며 -, 훨씬 빨리 끝납니다.
primo

3

Sesos , 17 바이트

00000000: a854be 2cbc9e 71d597 14bc56 1ad99e 713b           .T.,..q....V...q;

산출

0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz_

온라인으로 사용해보십시오! 확인 디버그를 생성 된 바이너리 코드를 볼 수 있습니다.

작동 원리

위의 바이너리 파일은 다음 SASM 코드를 조합하여 생성되었습니다.

add 48     ; Set cell 0 to 48 ('0').
fwd 1      ; Advance to cell 1.
add 10     ; Set cell 1 to 10.
jmp        ; Set an entry marker and jump to the jnz instruction.
    rwd 1  ;   Retrocede to cell 0.
    put    ;   Print its content (initially '0').
    add 1  ;   Increment cell 0 ('0' -> '1', etc.).
    fwd 1  ;   Advance to cell 1.
    sub 1  ;   Decrement cell 1.
jnz        ; While cell 1 in non-zero, jump to 'rwd 1'.
           ; This loop will print "0123456789".
rwd 1      ; Retrocede to cell 0, which holds 48 + 10 = 58.
add 7      ; Set cell 0 to 65 ('A').
fwd 1      ; Advance to cell 1.
add 26     ; Set cell 1 to 26.
jmp        ; Set an entry marker and jump to the jnz instruction.
    rwd 1  ; Retrocede to cell 0.
    put    ; Print its content (initially 'A').
    add 32 ; Add 32 to convert to lowercase ('A' -> 'a', etc.).
    put    ; Print the cell's content.
    sub 31 ; Subtract 31 to switch to the next uppercase letter ('a' -> 'B', etc.).
    fwd 1  ; Advance to cell 1.
    sub 1  ;   Decrement cell 1.
jnz        ; While cell 1 in non-zero, jump to 'rwd 1'.
           ; This loop will print "AaBb...YyZz".
rwd 1      ; Retrocede th cell 0, which holds 65 + 26 = 91.
add 4      ; Set cell 0 to 95 ('_').
put        ; Print its content.

와우, 나는 당신과 매우 비슷한 해결책 을 게시하려고했습니다 .
Leaky Nun

모두 같은 생각이 훌륭합니다!
Dennis

@LeakyNun 흠, 좀 늦었지만, 당신의 것보다 3 바이트 더 짧은 것 같습니다 ...
Outgolfer Erik

@EriktheOutgolfer Sesos는 덜 효율적인 방식으로 인코딩되었습니다. 두 프로그램 모두 17 바이트입니다.
Dennis

@Dennis Ah, TIO 캐시는 때때로 혼란 스러울 수 있습니다.
Outgolfer Erik

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