영숫자 문자와 밑줄 문자열을 인쇄하거나 반환하는 프로그램 또는 함수를 작성합니다. 모든 순서 . 정확히 말하면 다음 문자가 출력되어야합니다. 더 이상 :
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_
표준 출력으로 인쇄 할 때 출력 후 선택적 후행 줄 바꿈이 허용됩니다.
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
var QUESTION_ID=85666,OVERRIDE_USER=4162;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody> </tbody> </table> </div><div> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody> </tbody> </table> </div><table style="display: none"> <tbody> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
댓글
- 설명은 확장 된 논의를위한 것이 아닙니다. 이 대화는 채팅으로 이동 되었습니다.
답변
볼록, 9 바이트
새로운 방법! 또한 나는 그것이 Luis “대답과 거의 똑같지 만 Convex에서 거의 동일하다는 것을 깨달았지만 나는 이것을 독립적으로 생각 해냈다.
"{,®\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 "_ _
댓글
- @ mbomb007 예 CJam 코드
- 어떤 인코딩인가요?
- @ CᴏɴᴏʀO ‘ Bʀɪᴇɴ CP-1252 또는 Windows-1252
답변
답변
Perl, 20 바이트
추가 비용없이 -E
필요 .
say+a.._,A.._,_..9,_
그래서 제 원래 답변 (아래)은 너무 지루했습니다. . 내가 생각 해낸 유일한 것은 위의 것입니다. 정확히 똑같지 만 좀 더 혼란스러워 보입니다 … 아래 내용과 거의 동일합니다.
say a..z,A..Z,0..9,_
@ msh210 “을 좋아합니다. 댓글에 제안 사항이 있지만 “약간 너무 깁니다!
댓글
- +1. 약간 더 흥미롭지 만 더 긴 항목입니다. , 모두 27 바이트 :
say grep/\w/,map chr,1..122
||say map{chr=~/\w/;$&}1..122
||say map{chr=~s/\W//r}1..122
- @ msh210 여전히 ‘이를 더 축소 할 수 없습니다 …하지만 25 대 관리 :
say chr=~/\w/g for 1..255
…
Answer
Cheddar, 31 27 바이트
->97@"123+65@"91+48@"58+"_"
이것은 @"
연산자를 잘 보여줍니다.
드디어 @"
연산자입니다. 버그는 JS 범위가 아닌 체다 범위를 생성했기 때문에 제대로 작동하지 않습니다.
설명
@"
연산자는 @ CᴏɴᴏʀO “Bʀɪᴇɴ에 의해 설계되었으며 LHS에서 RHS까지의 문자열 범위를 생성합니다.단항 연산자로 사용하면 주어진 코드 포인트에서 문자를 반환합니다 (예 : python “s chr
)
Ungolfed
-> 97 @" 123 + 65 @" 91 + 48 @" 58 + "_"
Answer
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 | ^
Answer
JavaScript (ES6), 62 바이트
_=>String.fromCharCode(...Array(123).keys()).replace(/\W/g,"")
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
를 반환하므로 문자열 리터럴을 반환하는 함수보다 6 바이트 만 짧습니다. 예, 그렇습니다. 짜증납니다.
댓글
Answer
Haskell, 38 바이트
"_":["a".."z"]++["A".."Z"]++["0".."9"]
설명 할 내용이 없습니다.
댓글
- 질문 : ‘
:
와++
의 차이점은 무엇입니까? - @Downgoat :
++
는 두 개의 문자열을 가져 와서 연결합니다.:
는 문자와 문자열을 가져와 문자열 앞에 문자를 넣습니다."_"++['a'..'z']...
도 작동하지만 1 바이트 더 깁니다.
답변
PowerShell v3 +, 35 33 바이트
-join([char[]](1..127)-match"\w")
동적 배열 구성 1..127
, char
배열로 캐스트합니다. 이는 정규식 \w
에서 작업하는 -match
연산자에 전달되어 일치하는 모든 요소 (예 : 정확히 영숫자 및 밑줄)를 반환합니다. ). 이러한 배열 요소를 -join
에 캡슐화하여 하나의 문자열로 묶습니다. 이는 파이프 라인에 남아 있으며 출력은 암시 적입니다.
Comments
- 이봐, 그건 ‘ 불공평합니다. 내 자신의 솔루션은
0
… - @Joey Gotta에서 시작한 것을 제외하고 동일합니다. : D
- 특히 사소하고 명백한 솔루션의 경우;-)
답변
V, 27 바이트
i1122ñYpñvHgJ|éidd@"Í×
이 답변은 심각하게 복잡합니다. 나중에 설명을 게시하겠습니다.
Hexdump :
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.
댓글
- : D : D : D Cheddar는 골프 랭과 동점입니다!
답변
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
답변
Haskell, 31 바이트
do(x,y)<-zip"aA0_""zZ9_";[x..y]
zip "aA0_" "zZ9_"
표현식은 [("a","z"),("A","Z"),("0","9"),("_","_")]
엔드 포인트 목록을 제공합니다. div id = “77c0d2706f”>
표기법은 각 (x,y)
를 포괄적 인 \(x,y)->[x..y]
로 가져와 결과를 연결합니다. 에스. Anders Kaseorg에게 >>=
대신 do
를 사용하여 2 바이트를 제공했습니다.
대안 비교 :
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 __"
댓글
-
do
표기법은 2 바이트를 절약합니다.do(x,y)<-zip"aA0_""zZ9_";[x..y]
Answer
C, 50 바이트
인수없이 f()
를 호출합니다.
f(n){for(n=128;--n;)isalnum(n)|n==95&&putchar(n);}
인화
zyxwvutsrqponmlkjihgfedcba_ZYXWVUTSRQPONMLKJIHGFEDCBA9876543210
댓글
-
isalnum(n)|n==95&&putchar(n)
- 저기 ‘ UB가 있습니다. ‘ 필수 인수를 전달하지 않았습니다.
- @orlp-iv id = 대신
putc
를 사용했습니다. “637c69bd7c”>
. putc
는 스트림도 쓰기를 기대하지만 통과하지 못했습니다. ‘함수 자체는 잘 작동합니다 (putc
를 모두 제거하면 작동합니다).
If the number of arguments does not equal the number of parameters, the behavior is undefined.
6.5.2.2/6, N1570 참조 Answer
/// , 63 바이트
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_
댓글
- 유효한 답변은 무엇입니까? ‘ 규칙을 위반 한 것 같습니다.
- @nicael 어떤 규칙인가요?
- ” 위의 문자가 9 개 이상 포함 된 내장 상수는 허용되지 않습니다. ” … 뭔가 분명한 것이 누락 되었나요, @Leaky?
- 예, 이것이 ‘ 내장 상수를 사용하지 않는다는 것을 알았습니다.
- 좋습니다.하지만 적어도 이상합니다. 확실히 OP는 ‘ 시퀀스 복사-붙여 넣기를 요구하지 않습니다. ‘ 흥미롭지 않습니다.
답변
Python 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
문자열 상수가 허용 된 경우 다음은 45 바이트입니다.
from string import* print("_"+printable[:62])
댓글
-
print('_'+*filter(str.isalnum,map(chr,range(123))))
- @LeakyNun 구문 오류가 발생합니다.
print('_',*filter(str.isalnum,map(chr,range(123))))
와 비슷한 작업을 수행하려고 생각했지만 분리 된 공백이 인쇄됩니다. OP는 주석에서 ‘ … 출력에 공백이 전혀 허용되지 않는다고 말했습니다 ‘. - Python 2는 다음 접근 방식으로 1 바이트를 절약 할 수 있습니다.
print''.join(filter(str.isalnum,map(chr,range(123)))),'_'
Answer
코드 골프에서의 첫 시도!
C #, 168 152 150 147 130 127 117 116 115 109 106 bytes
for(var a="0";a<"~";a++){Console.Write(System.Text.RegularExpressions.Regex.IsMatch(a+"","\\w")?a+"":"");}
댓글에 대한 모든 도움을 주신 Kenny가 아닌 aloisdg, AstroDan, Leaky Nun 및 Kevin Lau에게 감사드립니다.
의견
- PPCG에 오신 것을 환영합니다! 모든 공간을 자유롭게 제거하십시오! 또한 C # 골프 팁 에서 몇 가지 팁을 확인하세요.
- 좋습니다. 2 바이트가 더 절약되었습니다. 저는 ‘이 codegolf를 정말 좋아하기 시작했습니다. 🙂
- AFAIK,
\w
정규식 클래스는 영숫자를 다루고 또한_
를 사용하면"\\w"
가 정규식 일치 함수에 대해 충분히 유효하게됩니다. - 코드는 be 함수 여야합니다. 또는 진술이 아닌 전체 프로그램. 또한 .NetFiddle을 사용하여 코드 데모를 공유하세요.
- ” C #은 ‘ codegolf ” 저는 C #이 골프를 코딩하기에 충분히 재미 있다고 생각합니다. 나는 그것이 놀기에 좋은 주류 언어라고 생각합니다. 당신이이기려고 여기에 있다면, 당신은 잃을 것입니다. 목표를 학습하고 즐거운 시간을 보내는 것으로 정의하면 항상 이길 것입니다.
답변
답변
Object Pascal, 85 83 73 바이트
문자 집합을 사용하는 단순한 객체 파스칼입니다. 프로 시저 대신 전체 프로그램을 작성하면 2 바이트가 줄어 듭니다. 프로그램 키워드를 제거하면 10 바이트가 더 절약됩니다.
var c:char;begin for c in["a".."z","A".."Z","0".."9","_"]do write(c);end.
댓글
- 언제나 그랬고 아마도 오브젝트 파스칼의 정확한 분류로 인해 항상 혼동됩니다. Turbo / Borland Pascal과 FreePascal은 쓸모없는
program
키워드 없이는 확실히 행복합니다. - @manatwork 제가 ‘ t 알고. 이상하게도 여기에서 파스칼이 경쟁력을 갖게되었습니다 …
- 내가 자랐던 언어입니다. 아직 죽지 않았다는 걸 알아요 …
- @rexkogitans 예, 학교에서 배웠지 만, ‘ 그때는 아무것도 기억하지 못합니다 … ‘ 지금 다시 프로그래밍을하고 있습니다
답변
bash – 47 37 바이트
man sh|egrep -o \\w|sort -u|tr -d \\n
내 시스템의 출력 :
_0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
유용한 제안을위한 Digital Trauma에 감사드립니다.
일부 시스템에서는 iv id = “대신 ascii
를 사용할 수 있습니다. 885696af20 “>
는 바이트를 저장합니다.
댓글
-
man sh|egrep -io _\|\\w|sort -u|tr -d \\n
- @DigitalTrauma 감사합니다!실험을 통해
\w
가_
와 일치하며 이미 대소 문자를 구분하지 않으므로 더 짧게 줄일 수 있음을 확인했습니다. - iv
man sh
대신 id = “caf9767759”> 는 대부분의 환경에서 작동합니다. 그것은 내 것입니다.$ env|egrep -o \\w|sort -u|tr -d \\n
->0123456789ABCDEFGHIKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
. - 저기 ‘는
J
이 아닙니다. 내 잘못이다.
답변
PHP, 40 바이트
_0<?for(;$a++^9?$a^q:$a=A;)echo" $a"|$a;
온라인 데모 .
댓글
- 우수성을위한 +1. 참고 : PHP 7.2는 향후 버전이 정의되지 않은 상수에 대해 오류를 발생시킬 것이라는 경고를 생성합니다. 🙁
답변
Retina , 30 19 16 15 12 바이트
원래 알파벳 시도 . 각 문자는 루프로 인쇄됩니다.
첫 번째 줄은 비어 있습니다.
; +T\`;w`w_
출력 :
_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
최근 시도에서 4 바이트를 골프를 치른 Leaky Nun에게 감사드립니다.
댓글
- I ‘ d는
w
가 9 개 이상의 필수 문자를 포함하는 상수로 계산한다고 말합니다. 사용자는 ‘ 오른쪽을 확장하고 왼쪽의w
를o
로 바꿔야합니다.d
대신EO
를 사용하여 바이트를 저장합니다. 각각 5 자만 포함되어 있기 때문입니다. - @ mbomb007
w
는 정규식과 관련이 없습니다. ‘는 필수 63 자 목록으로 확장되는 속기입니다. ‘ ‘는\w
이 사례에 대해 특별히 orlp에 묻습니다. (정규식)
답변
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
- @DrGreenEggsandIronMan 감사합니다! 그러나 나는 줄 바꿈이 구분 기호로 허용되지 않는다고 생각합니다. 문제는 ” 영숫자 문자열과 밑줄 … 그리고 더 이상 없음 ”
- 그렇다면 왜 ‘ 내가 시도했지만 ‘ 작동하지 않음
8W:'\w'XX!
을 수행 할 수 없습니다. >
답변
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
답변
Dyalog APL , 18 바이트
∊"\w"⎕S"&"⎕UCS⍳255
인쇄물 :
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
주석
- @user 위의 문자가 9 개 이상 포함 된 내장 상수는 허용되지 않습니다.
Answer
Pyth, 13 12 바이트
s:#"\w"0rk\|
정규식과 일치하는 U + 0000 ~ U + 007B의 모든 문자를 찾습니다. /\w/
.
O utputs 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
.
대체 접근 방식 : 15 바이트
ssrMc4"0:A[a{_`
기본적으로 필요한 반값 범위를 생성합니다 : 0-:, A-[, a-{, _-`
.
답변
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
답변
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이었습니다.
답변
F #, 50 59 바이트
Seq.iter(printf"%c"<<char)(95::[48..57]@[65..90]@[97..122])
출력 :
_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
편집 : 처음으로 숫자 누락
Edit2, 이 Haskell 솔루션 에서 영감을 얻은이 F # 스 니펫은 67입니다. 바이트.
Seq.zip"aA0_""zZ9_"|>Seq.iter(fun(x,y)->Seq.iter(printf"%c")[x..y])
출력 :
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_
답변
육각, 33
"A}_8_47<=">({a/[email protected]!\356);");
확장 :
" A } _ 8 _ 4 7 < = " > ( { a / _ x . @ . 9 ! \ 3 5 6 ) ; " ) ; . . . .
출력 :
aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ1203568479_
프로그램의 첫 번째 바이트로 인쇄 할 수없는 문자 0x1A
가 있습니다. 이로 인해 확장 된 Hexagon의 첫 번째 행이 다소 어색해 보입니다. 이 트릭을 보여주고 t를 인쇄하는 알고리즘을 제안했습니다. 그는 알파벳입니다!
이것은 육각형의 두 모서리와 숫자에 a
및 A
를 저장하여 알파벳을 인쇄합니다. 글자 사이의 조인트에 닿는 육각형의 가장자리에 26. 이것은 다음과 같습니다 :
A \ / a | 26
그런 다음 문자를 인쇄 한 다음 증가한 다음 숫자를 감소시키는 루프에 들어갑니다. 한 번 반복하면 다음과 같이됩니다.
B \ / b | 25
등. 초기화를위한 선형 코드는 0x1A " A } a
입니다. 제어 흐름 변경 외부의 루프에 대한 선형 코드는 ; ) " ; ) { ( " =
입니다.
카운터가 0에 도달하면 다른 경로를 따라 숫자를 인쇄하고 밑줄. 선형으로 작성하면 다음과 같습니다. x 3 5 6 8 4 7 9 ! ; { @
. 이렇게하면 현재 메모리 에지 값이 모든 10 진수를 포함하는 숫자 1203568479 (x
“의 ASCII 코드가 120 임)로 대체됩니다. 이 숫자를 출력 한 다음 Hexagony의 깔끔한 기능을 사용합니다. mod 256을 ASCII 문자로 출력합니다. 95 또는 밑줄입니다.
Answer
Brainfuck, 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)
이기 때문에 작동합니다. 반복 관계가 무엇인지에 대한 설명은 @primo “s Hello, World! Answer 를 참조하세요.
그런 다음 매우 간단합니다. 이 값을 유용한 값으로 변경합니다. (그리고 밑줄 인쇄)
Code: +++<--<-<-----<++++.+ Tape: [96, 65, 48, 26, 10] ^
그런 다음 간단한 루프는 값을 사용하여 나머지 문자를 인쇄합니다. 인쇄 전에 증분하여 1 바이트를 절약합니다.
>>>[-<<.+<+.>>>]>[-<<.+>>]
더 짧은 시퀀스 생성을 찾아야합니다.
잘 작동하는 것 같은 반복 관계를 찾았지만 사냥과 펙이 적은 더 짧은 관계가있을 수 있습니다.
선형 회귀 계산기를 사용했습니다. 가능한 가장 짧은 선형 반복 관계를 찾으려면 개선하려면 다른 공식을 찾아야합니다.
@primo는 반복 관계를 정말 많이 개선했습니다. 감사합니다.
코멘트
- 거꾸로 건설하는 것은 어떻습니까?
+[--[<+++++++>->+<]>-]
- @primo 와우! 어떻게 작동합니까?
- 3은 고르지 않기 때문에 256 번 반복됩니다.
>-]
로 끝내면 최종 용어가 1 (x7)이 될 것입니다. 실제로-
로 시작해야하며 훨씬 빠르게 완료됩니다.
답변
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.
댓글
- 와, 당신과 매우 유사한 솔루션 을 게시하려고합니다.
- 마음이 훌륭하다고 생각합니다. !
- @LeakyNun 흠, 좀 늦었지만, 3 바이트 더 짧은 것 같습니다 …
- @EriktheOutgolfer Sesos는 덜 효율적인 방식으로 인코딩되었습니다. 두 프로그램의 길이는 현재 17 바이트입니다.
- @Dennis 아, TIO 캐시는 때때로 혼란 스러울 수 있습니다.