Skriv et program eller en funktion, der udskriver eller returnerer en streng af de alfanumeriske tegn plus understregning, i en hvilken som helst rækkefølge . For at være præcis skal følgende tegn udføres, og ikke mere :

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_ 

Når du udskriver til stdout, er en valgfri efterfølgende ny linje tilladt efter din output.

Indbyggede konstanter, der indeholder 9 eller flere af ovenstående tegn er ikke tilladt.


Den korteste kode i byte vinder.

Dette er en meget enkel udfordring, som jeg tror alligevel vil generere nogle interessante svar.


Leaderboards

Her er et Stack Snippet, der genererer både et almindeligt leaderboard og et overblik af vindere efter sprog.

For at sikre, at dit svar vises, skal du starte dit svar med en overskrift ved hjælp af følgende Markdown-skabelon:

# Language Name, N bytes 

hvor N er størrelsen på din indsendelse. Hvis du forbedrer din score, kan du kunne holde gamle scores i overskriften ved at slå dem igennem. For eksempel:

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

Hvis der, vil du medtage flere numre i din overskrift (f.eks. Fordi din score er summen af to filer, eller du vil liste tolk flag sanktioner separat), skal du sørge for, at den faktiske score er det sidste nummer i overskriften:

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

Du kan også lave sprognavn et link, som derefter vises i leaderboard-kodestykket:

# [><>](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> 

Kommentarer

Svar

Konveks, 9 byte

Ny metode! Også, jeg indså, at det er stort set nøjagtigt det samme som Luis “svar, men i konveks, men jeg kom på dette uafhængigt.

"{,®\W"Oò 

Prøv det online!

Forklaring:

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

Gammel løsning, 10 byte :

A,"[,_¬^"_ 

Prøv det online!

Forklaring:

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

Kommentarer

  • @ mbomb007 Ja, det svarer til CJam-koden A,'[,_el^'_
  • Hvilken kodning er dette?
  • @ CᴏɴᴏʀO ' Bʀɪᴇɴ CP-1252 eller Windows-1252

Svar

Ruby, 26 byte

Tegn kan udskrives i en hvilken som helst rækkefølge? husk, hvis jeg gør det!

Prøv det online!

$><<(?0..?z).grep(/\w/)*"" 

Svar

Perl, 20 byte

Kræver -E uden ekstra omkostninger .

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

Så mit originale svar (nedenfor) var lidt for kedeligt . Det eneste, jeg har formået at komme med, er ovenstående, at det er nøjagtigt det samme, men ser lidt mere forvirrende ud … Det svarer stort set nøjagtigt til nedenstående:

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

Jeg kan godt lide @ msh210 “s forslag i kommentarerne, men de “er bare lidt for lange!

Kommentarer

  • +1. Lidt mere interessant, men længere er nogen af disse , alle 27 bytes: say grep/\w/,map chr,1..122 || say map{chr=~/\w/;$&}1..122 || say map{chr=~s/\W//r}1..122
  • @ msh210 Stadig kan ' ikke formindske dette mere … Administrerede dog en 25: say chr=~/\w/g for 1..255

Svar

Cheddar, 31 27 bytes

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

Dette viser @" operatøren godt

Ikke-komplet, fordi jeg endelig blev stolt af at rette @" operatør. Fejlen var det det genererede et Cheddar-interval ikke et JS-interval, så det kunne ikke fungere korrekt


Forklaring

@" -operatøren var designet af @ CᴏɴᴏʀO “Bʀɪᴇɴ, og hvad det gør er at generere et strengområde fra LHS til RHS.Når den bruges som en unormal operator, returnerer den tegnet ved det givne kodepunkt (som python “s chr)

Ungolfed

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

Svar

brainfuck, 58 bytes

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

Prøv det online .

Initialiserer bånd til 3 · 2 n og fungerer derfra.

 +++[[<+>->++<]>] 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 | ^  

Svar

JavaScript (ES6), 62 bytes

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

Returnerer 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz, så kun 6 byte kortere end en funktion, der returnerer strengen bogstavelig. Ja, det suger.

Kommentarer

  • Du kan prøve at finde en streng, for hvilken btoa returnerer den krævede output.
  • @gcampbell 60! (60 faktorielle) strenge kan tage lidt tid at søge …
  • Du kan bare bruge atob.
  • @gcampbell Jeg skal ekskluder ikke-repræsentative strenge på en eller anden måde.
  • @gcampbell Det viser sig, at btoa-versionen alligevel tager 62 bytes: 45 for at kode 60 alfanumerik, 3 ukodede tegn (inklusive _) og 14 for _=>atob("")+"".

Svar

Haskell, 38 bytes

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

Intet at forklare her.

Kommentarer

  • spørgsmål: hvad ' er forskellen mellem : og ++?
  • @Downgoat: ++ tager to strenge og sammenkæder dem. : tager en char og en streng og lægger char foran strengen. "_"++['a'..'z']... fungerer også, men er en byte længere.

Svar

PowerShell v3 +, 35 33 byte

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

Konstruerer et dynamisk array 1..127 , kaster det som et char array. At “s tilføres til -match operatøren, der arbejder på regex \w, som returnerer alle de elementer, der matcher ). Vi indkapsler disse matrixelementer i en -join for at samle den som en streng. Det er tilbage på pipeline og output er implicit.

Kommentarer

  • Hej, det ' er ikke retfærdigt. Min egen løsning er identisk, medmindre jeg startede ved 0
  • @Joey Gotta go fast. : D
  • Især til de trivielle og indlysende løsninger, antager jeg 😉

Svar

V, 27 byte

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

Prøv det online!

Dette svar er forfærdeligt indviklet. Jeg sender en forklaring senere.

Hexdump:

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

Forklaring:

Læsbar:

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. 

Kommentarer

  • : D: D: D Cheddar er bundet med et golfspil!

Svar

J, 30 29 28 bytes

Gemte en byte takket være randomra!

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

Output:

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

Forklaring

Jeg vil ikke give en forklaring per se , men vil give mellemliggende resultater.

 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 

Svar

Haskell, 31 byte

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

Udtrykket zip "aA0_" "zZ9_" giver listen over slutpunkter [("a","z"),("A","Z"),("0","9"),("_","_")]. div id = “77c0d2706f”>

notation tager hver (x,y) til den inklusive \(x,y)->[x..y] og sammenkæder resultatet s. Tak til Anders Kaseorg for to byte med do i stedet for >>=.

Sammenlign med alternativer:

 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 __"  

Kommentarer

  • do notation gemmer to bytes: do(x,y)<-zip"aA0_""zZ9_";[x..y]

Svar

C, 50 byte

Ring til f() uden nogen argumenter.

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

Udskriver

zyxwvutsrqponmlkjihgfedcba_ZYXWVUTSRQPONMLKJIHGFEDCBA9876543210 

Kommentarer

  • isalnum(n)|n==95&&putchar(n)
  • Der ' er UB der. Du sendte ikke ' ikke de krævede argumenter.
  • @orlp – Du brugte putc i stedet for putchar. putc forventer, at en strøm også skal skrives til, som du ikke ' passerede.Selve funktionen fungerer fint (prøv at fjerne din putc helt, og den fungerer).
  • @owacoder Ups!
  • @QPaysTaxes that ' er forkert. If the number of arguments does not equal the number of parameters, the behavior is undefined. 6.5.2.2/6, se N1570 .

Svar

/// , 63 byte

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_ 

Kommentarer

  • Hvordan er det gyldige svar? Ser ud til at det ' overtræder reglerne.
  • @nicael hvilken regel?
  • " Indbyggede konstanter, der indeholder 9 eller flere af ovenstående tegn, er ikke tilladt. " … Mangler jeg noget indlysende, @Lækagtigt?
  • Ja, at dette ikke ' ikke brugte indbyggede konstanter.
  • Ok, men det er i det mindste underligt. Absolut OP beder ' dig ikke om at kopiere og indsætte sekvensen, så ' ikke er interessant.

Svar

Python 3, 58 byte

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

Et komplet program der udskrives til STDOUT.

Outputtet er: _0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

Sådan fungerer det

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 

Prøv det på Ideone

Hvis strengkonstanter var tilladt, ville følgende have været 45 byte:

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

Kommentarer

  • print('_'+*filter(str.isalnum,map(chr,range(123))))
  • @LeakyNun Det giver en syntaksfejl. Jeg tænkte på at gøre noget lignende med print('_',*filter(str.isalnum,map(chr,range(123)))), men det udskriver adskillende mellemrum; OP sagde i kommentarerne, at ' … der er slet ikke tilladt mellemrum i output '.
  • Python 2 kan gemme en byte med denne tilgang: print''.join(filter(str.isalnum,map(chr,range(123)))),'_'

Svar

Mit første forsøg på codegolf!

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+"":"");} 

Mange tak til aloisdg, AstroDan, Leaky Nun og Kevin Lau – ikke Kenny for al hjælp i kommentarer.

Kommentarer

  • Velkommen til PPCG! Du er velkommen til at fjerne al plads! Tjek også Tips til golf i C # for nogle tip.
  • Fremragende – sparede mig 2 byte mere. Jeg ' Jeg begynder virkelig at kunne lide denne codegolf 🙂
  • AFAIK, \w regex-klassen dækker alfanumerik og også _, hvilket skulle gøre "\\w" gyldig nok til din regex-matchfunktion.
  • Din kode skal være en funktion eller et komplet program ikke en erklæring. Brug også .NetFiddle til at dele en demonstration af din kode 🙂
  • " C # isn ' t bedst at codegolf " Jeg finder C # sjovt nok til at kode golf. Jeg synes, det er et godt almindeligt sprog at lege med. Hvis du er her for at vinde, mister du. Definer dit mål som at lære og have det sjovt, så vinder du hele tiden.

Svar

Ren bash, 32

 printf %s {a..z} {A..Z} {0..9} _  

Ideone .

Svar

Objekt Pascal, 85 83 73 byte

Enkel objektpascal ved hjælp af et sæt tegn. At skrive et komplet program i stedet for en procedure barberer 2 byte. Fjernelse af programmets nøgleord barberer yderligere 10 byte.

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

Kommentarer

  • Jeg har altid været og vil sandsynligvis også altid forveksles med den nøjagtige klassificering af Object Pascal. Turbo / Borland Pascal og FreePascal er bestemt glade uden det ubrugelige program søgeord.
  • @manatwork Jeg gjorde ikke ' t ved det. Mærkeligt nok gør det nu pascal konkurrencedygtigt her …
  • Det sprog, jeg voksede op med. Jeg ved, at det endnu ikke er død …
  • @rexkogitans Ja, jeg lærte det i skolen, men kan ' ikke huske noget fra dengang … Jeg ' spiller nu med noget programmering igen

Svar

bash – 47 37 byte

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

Output på mit system er:

_0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ 

Tak til Digital Trauma for nyttige forslag.

På nogle systemer kan du muligvis bruge ascii i stedet for man sh for at gemme en byte.

Kommentarer

  • man sh|egrep -io _\|\\w|sort -u|tr -d \\n
  • @DigitalTrauma Tak!Eksperimenterede og fandt ud af, at \w matcher _ og er allerede store og små bogstaver, så det kunne forkorte endnu mere.
  • env i stedet for man sh skal fungere i de fleste miljøer. Det gør det på min. $ env|egrep -o \\w|sort -u|tr -d \\n – > 0123456789ABCDEFGHIKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz.
  • Der ' er nej J. My bad.

Svar

PHP, 40 byte

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

Online demo .

Kommentarer

  • +1 for fremragende kvalitet. Sidebemærkning: PHP 7.2 giver advarsler om, at fremtidige versioner vil kaste fejl for udefinerede konstanter. 🙁

Svar

Retina , 30 19 16 15 12 byte

Jeg ændrede min originalt alfabetforsøg til denne seneste version. Hvert tegn udskrives i en løkke.

Den første linje er tom.

 ; +T\`;w`w_

Prøv det online

Output:

_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 

Tak til Leaky Nun for golf 4 bytes fra mit seneste forsøg.

Kommentarer

  • I ' siger, at w tæller som en konstant, der indeholder 9 eller flere af de krævede tegn. Du ' skal sandsynligvis udvide højre side og erstatte w til venstre med o. Selvom du en gem en byte ved at bruge EO i stedet for d, da de kun indeholder 5 tegn hver.
  • @ mbomb007 w inde i translitterationstrinnet har intet at gøre regex. Det ' er en stenografi, der udvides til en liste med de krævede 63 tegn. I det mindste spørger jeg ' specifikt om denne sag, da den ' er ret forskellig fra at bruge \w i en regex.

Svar

MATL , 11 byte

7W:"\W"[]YX 

Prøv det online!

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 

Kommentarer

  • 2 byte kortere: 8W:'\w'XX
  • @DrGreenEggsandIronMan Tak! Men jeg tror, at nye linjer ikke er tilladt som separatorer. Udfordringen siger " en streng af de alfanumeriske tegn plus understregning … og ikke mere "
  • Så hvorfor kunne ikke ' t gør du 8W:'\w'XX! som jeg prøvede, men ' t fungerer
  • @ DrGreenEggsandIronMan Meget godt spørgsmål! Lad mig svare dig i chat , så jeg kan bruge lidt flere tegn

Svar

Brachylog , 25 byte

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

Dette udskriver følgende til STDOUT:

_9876543210abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 

Forklaring

"_"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 

Svar

Dyalog APL , 18 byte

∊"\w"⎕S"&"⎕UCS⍳255 

udskrifter:

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz 

Kommentarer

  • @bruger Indbyggede konstanter, der indeholder 9 eller flere af ovenstående tegn, er ikke tilladt.

Svar

Pyth, 13 12 byte

s:#"\w"0rk\| 

Prøv det online!

Finder alle tegn i U + 0000 til U + 007B, der matcher regex /\w/.

O udgiver 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz.

alternativ tilgang: 15 byte

ssrMc4"0:A[a{_` 

Prøv det online!

genererer grundlæggende de krævede områder, der inkluderer halvdelen: 0-:, A-[, a-{, _-`.

Svar

CJam , 15 14 11 byte

4 byte fra takket være @FryAmTheEggman og @Dennis!

A,"[,_el^"_ 

Prøv det online!

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 

Svar

Brainfuck, 89 byte

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

Prøv det her

Detaljer:

+++++++++[>+++++>+<<-]>+++. 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 

Hvis jeg kunne have kommenteret, skulle jeg forbedre andres svar. Men da jeg ikke kan t, kan jeg lige så godt sende min egen. Da jeg begyndte at skrive dette, var den laveste BF en 96 lang.

Svar

F #, 50 59 byte

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

Output:

_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 

Rediger: savnede cifrene første gang

Edit2, inspireret af denne Haskell-løsning , dette F # uddrag er 67 bytes.

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

Output:

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_ 

Svar

Hexagony, 33

"A}_8_47<=">({a/[email protected]!\356);"); 

Udvidet:

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

Output:

aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ1203568479_ 

Prøv det online!

Bemærk, at der er et tegn, der ikke kan udskrives 0x1A som programmets første byte. Dette får også den første række i den udvidede sekskant til at ligne off. Mange tak til Martin for viser mig dette trick såvel som for at foreslå algoritmen til udskrivning af t han alfabet!

Dette udskriver alfabetet ved at gemme a og A på to kanter af en sekskant og tallet 26 på kanten af sekskanten, der berører leddet mellem bogstaverne. Dette ser sådan ud:

A \ / a | 26 

Derefter indtaster det en sløjfe, der udskriver bogstaverne og derefter forøger dem og derefter reducerer antallet. Efter en iteration ville vi have:

B \ / b | 25 

Og så videre. Den lineære kode til initialiseringen er: 0x1A " A } a. Den lineære kode for sløjferne uden for ændringer i kontrolflowet er: ; ) " ; ) { ( " =.

Når tælleren når nul, følger vi en anden sti for at udskrive tallene og en understreg. Linjært er dette: x 3 5 6 8 4 7 9 ! ; { @. Dette erstatter den nuværende hukommelseskants værdi med tallet 1203568479 (bemærk, at x “s ASCII-kode er 120), som indeholder alle decimalcifrene. Vi udskriver dette nummer, og derefter bruger vi et pænt træk ved Hexagony: vi udskriver nummeret mod 256 som et ASCII-tegn. Dette er bare tilfældet med 95 eller understreger.

Svar

Brainfuck, 114 103 98 90 76 71 byte

En anden triviel (nu ikke -trivial) løsning, men denne gang er BF!

Gemt 14 (!) bytes takket være @primo.

Gemt 4 bytes mere takket være @primos forslag om at generere rækkevidde baglæns, og jeg gemte en anden ved at øge, inden jeg udskriver til små bogstaver.

Ny (gentagelse 4, 71):

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

Gammel (værdier, 114):

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

Gammel (gentagelse 1, 103):

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

Gammel (gentagelse 2, 90):

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

Gammel (gentagelse 3, 76):

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

Antager 8 bit indpakningsceller og indpakningshukommelse. Jeg brugte Prøv det online .

Alle udskrives _AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789

Først initialiserer denne del

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

båndet med disse værdier

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

Dette fungerer, fordi den gentagelsesrelation, jeg grundlæggende modellerede, er f(x) = 7 * (3 * x + 1), baglæns. Se @primo “s Hello, World! Answer for en forklaring på, hvad en gentagelsesrelation er.

Derefter er det ret simpelt at ændre disse værdier til nyttige. (og udskriv understregningen)

Code: +++<--<-<-----<++++.+ Tape: [96, 65, 48, 26, 10] ^ 

Derefter bruger de enkle sløjfer værdierne til at udskrive resten af tegn. Jeg gemmer 1 byte ved at have en forøgelse inden udskriften.

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

Jeg er virkelig nødt til at finde en kortere sekvensgeneration.

Jeg fandt en gentagelsesforhold, der ser ud til at fungere godt, men der kan være en kortere med w / mindre jagt og hakke.

Jeg brugte en lineær regressionsberegner for at finde ud af, hvad der skal være den kortest mulige lineære gentagelsesrelation, så jeg burde sandsynligvis finde en anden formel, hvis jeg vil forbedre.

@primo forbedrede virkelig gentagelsesrelationen meget, tak.

Kommentarer

  • Hvad med en bagudkonstruktion? +[--[<+++++++>->+<]>-]
  • @primo Wow! Hvordan fungerer det?
  • 3 er ujævn, så det løber hele 256 gange. Ved at slutte med >-], kan du være sikker på, at den sidste term bliver 1 (x7). Faktisk skal du sandsynligvis starte med -, det slutter meget hurtigere.

Svar

Sesos , 17 byte

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

Output

0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz_ 

Prøv det online! Kontroller Fejlfinding for at se den genererede binære kode.

Sådan fungerer det

Den binære fil ovenfor er genereret ved at samle følgende SASM-kode.

 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.  

Kommentarer

  • Wow, jeg var ved at sende en løsning, der ligner din .
  • Lige sind synes godt !
  • @LeakyNun Hm, lidt sent, men det ser ud til, at din er 3 byte kortere …
  • @EriktheOutgolfer Sesos blev tidligere kodet på en mindre effektiv måde. Begge programmer er 17 bytes lange nu.
  • @Dennis Ah, ja, TIO-cachen kan til tider være forvirrende.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *