Skriv et program eller en funksjon som skriver ut eller returnerer en streng av de alfanumeriske tegnene pluss understrek, i hvilken som helst rekkefølge . For å være presis, må følgende tegn skrives ut, og ikke mer :

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_ 

Når du skriver ut til stdout, er en valgfri etterfølgende ny linje tillatt etter utgangen din.

Innebygde konstanter som inneholder 9 eller flere av de ovennevnte tegnene er ikke tillatt.


Den korteste koden i byte vinner.

Dette er en veldig enkel utfordring, som jeg tror vil generere noen interessante svar likevel.


Leaderboards

Her er en Stack Snippet for å generere både en vanlig leaderboard og en oversikt av vinnere etter språk.

For å sikre at svaret ditt vises, kan du starte svaret ditt med en overskrift ved å bruke følgende Markdown-mal:

# Language Name, N bytes 

der N er størrelsen på innsendingen din. Hvis du forbedrer poengsummen din, kan du beholde gamle poengsummer i overskriften, ved å slå dem gjennom. For eksempel:

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

Hvis du vil inkludere flere tall i overskriften (f.eks. Fordi poengsummen din er summen av to filer, eller du vil liste tolk flagg straffer hver for seg), sørg for at den faktiske poengsummen er siste tallet i overskriften:

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

Du kan også lage språk navngi en lenke som deretter vises i ledertavlen:

# [><>](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å skjønte jeg at det er ganske nøyaktig det samme som Luis «svar, men i konveks, men jeg kom på dette uavhengig.

"{,®\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 tilsvarer CJam-koden A,'[,_el^'_
  • Hvilken koding er dette?
  • @ CᴏɴᴏʀO ' Bʀɪᴇɴ CP-1252 eller Windows-1252

Svar

Rubin, 26 byte

Tegn kan skrives ut i hvilken som helst rekkefølge? Ikke t tankene hvis jeg gjør det!

Prøv det online!

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

Svar

Perl, 20 byte

Krever -E uten ekstra kostnad .

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

Så, det opprinnelige svaret mitt (nedenfor) var litt for kjedelig . Det eneste jeg har klart å komme på, er det ovennevnte, det er nøyaktig det samme, men ser litt mer forvirrende ut … Det tilsvarer omtrent nøyaktig det følgende:

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

Jeg liker @ msh210 «s forslag i kommentarene, men de «er bare litt for lange!

Kommentarer

  • +1. Litt mer interessant, men lenger er noen av disse , alle 27 byte: say grep/\w/,map chr,1..122 || say map{chr=~/\w/;$&}1..122 || say map{chr=~s/\W//r}1..122
  • @ msh210 Fortsatt kan ' ikke krympe dette mer … Klarte en 25 skjønt: say chr=~/\w/g for 1..255

Svar

Cheddar, 31 27 byte

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

Dette viser @" operatøren godt

Ikke fullført fordi jeg endelig ble stolt av å fikse @" operatør. Feilen var det det genererte et Cheddar-område, ikke et JS-område, så det kunne ikke fungere ordentlig


Forklaring

@" -operatøren var designet av @ CᴏɴᴏʀO «Bʀɪᴇɴ, og hva den gjør er å generere et strengområde fra LHS til RHS.Når den brukes som en enhetlig operatør, returnerer den ruten ved det gitte kodepunktet (som python «s chr)

Ungolfed

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

Svar

brainfuck, 58 byte

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

Prøv det online .

Initialiserer tape 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 byte

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

Returnerer 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz, så bare 6 byte kortere enn en funksjon som returnerer strengen bokstavelig. Ja, den suger.

Kommentarer

  • Du kan prøve å finne en streng som returnerer ønsket utdata.
  • @gcampbell 60! (60 faktoriale) strenger kan ta litt tid å søke …
  • Du kan bare bruke atob.
  • @gcampbell Jeg må ekskluder ikke-representerbare strenger på en eller annen måte.
  • @gcampbell Det viser seg at btoa-versjonen uansett tar 62 byte: 45 for å kode 60 alfanumerikk, 3 ukodede tegn (inkludert _) og 14 for _=>atob("")+"".

Svar

Haskell, 38 byte

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

Ingenting å forklare her.

Kommentarer

  • spørsmål: hva ' er forskjellen mellom : og ++?
  • @Downgoat: ++ tar to strenger og sammenkobler dem. : tar en røye og en streng og setter røya foran strengen. "_"++['a'..'z']... fungerer også, men er en byte lenger.

Svar

PowerShell v3 +, 35 33 byte

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

Konstruerer en dynamisk matrise 1..127 , kaster den som en char matrise. At «s mates til -match operatøren som jobber med regex \w, som vil returnere alle elementene som samsvarer (dvs. nøyaktig alfanumerisk og understrek Vi innkapsler disse matriseelementene i en -join for å pakke den sammen som en streng. Det som er igjen på rørledningen og utdata er implisitt.

Kommentarer

  • Hei, det ' er ikke rettferdig. Min egen løsning er identisk, bortsett fra at jeg startet på 0
  • @Joey Gotta go fort. : D
  • Spesielt for de trivielle og åpenbare løsningene, antar jeg 😉

Svar

V, 27 byte

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

Prøv det online!

Dette svaret er fryktelig innviklet. Jeg legger ut 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:

Lesbar:

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 en golf-lang!

Svar

J, 30 29 28 byte

Lagret en byte takket være randomra!

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

Utgang:

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

Forklaring

Jeg vil ikke gi en forklaring per se , men vil gi mellomliggende 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]  

Uttrykket zip "aA0_" "zZ9_" gir listen over sluttpunkter [("a","z"),("A","Z"),("0","9"),("_","_")]. div id = «77c0d2706f»>

notasjon tar hver (x,y) til den inkluderende \(x,y)->[x..y] og sammenkobler resultatet s. Takk 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 notasjon lagrer to byte: do(x,y)<-zip"aA0_""zZ9_";[x..y]

Svar

C, 50 byte

Ring f() uten noen argumenter.

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

Skriver

zyxwvutsrqponmlkjihgfedcba_ZYXWVUTSRQPONMLKJIHGFEDCBA9876543210 

Kommentarer

  • isalnum(n)|n==95&&putchar(n)
  • Der ' s UB der. Du klarte ikke ' ikke de nødvendige argumentene.
  • @orlp – Du brukte putc i stedet for putchar. putc forventer en strøm å skrive til også, som du ikke ' ikke passerte.Selve funksjonen fungerer bra (prøv å fjerne putc helt, og det fungerer).
  • @owacoder Beklager!
  • @QPaysTaxes at ' er feil. 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 svaret? Ser ut som det ' bryter reglene.
  • @nicael hvilken regel?
  • " Innebygde konstanter som inneholder 9 eller flere av de ovennevnte tegnene er ikke tillatt. " … Mangler jeg noe tydelig, @Leaky?
  • Ja, at dette ikke ' ikke brukte noen innebygde konstanter.
  • Ok, men dette er i det minste rart. Definitivt ber OP ikke ' deg om å kopiere og lime inn sekvensen, så ' er ikke interessant.

Svar

Python 3, 58 byte

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

Et fullstendig program som skrives ut til STDOUT.

Resultatet er: _0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

Slik 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 tillatt, ville følgende ha vært 45 byte:

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

Kommentarer

  • print('_'+*filter(str.isalnum,map(chr,range(123))))
  • @LeakyNun Det gir en syntaksfeil. Jeg tenkte å gjøre noe lignende med print('_',*filter(str.isalnum,map(chr,range(123)))), men det skriver ut skille mellomrom; OP sa i kommentarene at ' … ingen mellomrom er tillatt i utgangen i det hele tatt '.
  • Python 2 kan lagre en byte med denne tilnærmingen: print''.join(filter(str.isalnum,map(chr,range(123)))),'_'

Svar

Mitt første forsøk på codegolf!

C #, 168 152 150 147 130 127 117 116 115 109 106 byte

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

Tusen takk til aloisdg, AstroDan, Leaky Nun og Kevin Lau – ikke Kenny for all hjelpen i kommentarene.

Kommentarer

  • Velkommen til PPCG! Fjern gjerne all plassen! Sjekk også Tips for golf i C # for noen tips.
  • Flott – sparte meg 2 byte mer. Jeg ' begynner virkelig å like denne kodegolfen 🙂
  • AFAIK, \w regex-klassen dekker alfanumerikk og også _, noe som skal gjøre "\\w" gyldig nok for din regex-matchfunksjon.
  • Koden din skal være en funksjon eller et komplett program ikke en uttalelse. Bruk også .NetFiddle til å dele en demonstrasjon av koden din 🙂
  • " C # isn ' t det beste å codegolf " Jeg synes C # er morsom nok til å kode golf. Jeg synes det er et flott ordinært språk å leke med. Hvis du er her for å vinne, vil du miste. Definer målet ditt som å lære og ha det bra, så vil du vinne hele tiden.

Svar

Ren bash, 32

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

Ideone .

Svar

Objekt Pascal, 85 83 73 byte

Bare vanlig objektpascal ved hjelp av et sett med tegn. Å skrive et komplett program i stedet for en prosedyre barberer 2 byte. Når du fjerner programnøkkelordet, barberes det 10 byte til.

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

Kommentarer

  • Jeg har alltid vært og vil sannsynligvis gjøre det forveksles alltid av den nøyaktige klassifiseringen av Object Pascal. Turbo / Borland Pascal og FreePascal er absolutt glade uten det ubrukelige program søkeordet.
  • @manatwork Jeg gjorde ikke ' t vet at. Merkelig nok gjør det nå pascal konkurransedyktig her …
  • Språket jeg vokste opp med. Jeg vet at det ennå ikke er død …
  • @rexkogitans Ja, jeg lærte det på skolen, men kan ikke ' huske noe fra den gang … Jeg ' spiller med litt programmering igjen nå

Svar

bash – 47 37 byte

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

Utdata på systemet mitt er:

_0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ 

Takk til Digital Trauma for nyttige forslag.

På noen systemer kan du kanskje bruke ascii i stedet for man sh for å lagre en byte.

Kommentarer

  • man sh|egrep -io _\|\\w|sort -u|tr -d \\n
  • @DigitalTrauma Takk!Eksperimenterte og fant ut at \w samsvarer med _ og er allerede uten sak, så det kan forkorte enda mer.
  • env i stedet for man sh skal fungere i de fleste miljøer. Det gjør det på meg. $ env|egrep -o \\w|sort -u|tr -d \\n – > 0123456789ABCDEFGHIKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz.
  • Der ' s no J. My bad.

Svar

PHP, 40 byte

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

Online demo .

Kommentarer

  • +1 for fremragende. Sideanmerkning: PHP 7.2 gir advarsler om at fremtidige versjoner vil kaste feil for udefinerte konstanter. 🙁

Svar

Retina , 30 19 16 15 12 byte

Jeg endret originalt alfabetforsøk for denne siste versjonen. Hvert tegn skrives ut i løkke.

Den første linjen er tom.

 ; +T\`;w`w_

Prøv det online

Utgang:

_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 

Takk til Leaky Nun for golf 4 byte av mitt siste forsøk.

Kommentarer

  • I ' d si at w teller som en konstant som inneholder 9 eller flere av de nødvendige tegnene. Du ' vil sannsynligvis måtte utvide høyre side og erstatte w til venstre med o. Selv om du en lagre en byte ved å bruke EO i stedet for d siden de bare inneholder 5 tegn hver.
  • @ mbomb007 w inne i translitterasjonstrinnet har ingenting å gjøre regex. Det ' er en forkortelse som utvides til en liste over de nødvendige 63 tegnene. I det minste spør jeg ' orlp om denne saken, siden den ' er ganske forskjellig fra å bruke \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 Takk! Men jeg tror ikke nye linjer er tillatt som separatorer. Utfordringen sier " en streng av de alfanumeriske tegnene pluss understrek … og ikke mer "
  • Så hvorfor kunne ikke ' t du gjør 8W:'\w'XX! som jeg prøvde, men ' t fungerer
  • @ DrGreenEggsandIronMan Veldig bra spørsmål! La meg svare deg i chatten slik at jeg kan bruke litt flere tegn

Svar

Brachylog , 25 byte

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

Dette skriver ut 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 

utskrifter:

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz 

Kommentarer

  • @bruker Innebygde konstanter som inneholder 9 eller flere av de ovennevnte tegnene, er ikke tillatt.

Svar

Pyth, 13 12 byte

s:#"\w"0rk\| 

Prøv det online!

Finner alle tegn i U + 0000 til U + 007B som samsvarer med regex /\w/.

O gir ut 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz.

alternativ tilnærming: 15 byte

ssrMc4"0:A[a{_` 

Prøv det online!

genererer i utgangspunktet de nødvendige halv-inkluderende områdene: 0-:, A-[, a-{, _-`.

Svar

CJam , 15 14 11 byte

4 byte av 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 ha kommentert, måtte jeg forbedre andres svar. Men siden jeg ikke kan, kan jeg like godt legge ut min egen. Da jeg begynte å 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]) 

Utgang:

_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 

Rediger: savnet sifrene første gang

Edit2, inspirert av denne Haskell-løsningen , dette F # -utdraget er 67 byte.

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

Utgang:

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_ 

Svar

Hexagony, 33

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

Utvidet:

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

Utgang:

aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ1203568479_ 

Prøv det online!

Merk at det er et tegn som ikke kan skrives ut 0x1A som første byte i programmet. Dette får også den første raden i den utvidede sekskanten til å se litt av. Tusen takk til Martin for viser meg dette trikset, samt for å foreslå algoritmen for utskrift t han alfabetet!

Dette skriver ut alfabetet ved å lagre a og A på to kanter av en sekskant og tallet 26 på kanten av sekskanten som berører skjøten mellom bokstavene. Dette ser omtrent slik ut:

A \ / a | 26 

Deretter går det inn i sløyfer som skriver ut bokstavene og deretter øker dem, og deretter reduserer tallet. Etter en iterasjon ville vi ha:

B \ / b | 25 

Og så videre. Den lineære koden for initialiseringen er: 0x1A " A } a. Den lineære koden for løkkene utenfor endringene i kontrollflyten er: ; ) " ; ) { ( " =.

Når telleren når null, følger vi en annen vei for å skrive ut tallene og en understrek. Skrevet lineært er dette: x 3 5 6 8 4 7 9 ! ; { @. Dette erstatter den nåværende minnekantverdien med tallet 1203568479 (merk at x «s ASCII-kode er 120), som inneholder alle desimaltegnene. Vi skriver ut dette nummeret, og deretter bruker vi en fin funksjon av Hexagony: vi skriver ut nummeret mod 256 som et ASCII-tegn. Dette er bare 95, eller understreker.

Svar

Brainfuck, 114 103 98 90 76 71 byte

Nok en triviell (nå ikke -trivial) løsning, men denne gangen er BF!

Lagret 14 (!) byte takket være @primo.

Lagret 4 byte til takket være @primos forslag om å generere rekkevidde bakover, og jeg lagret en annen ved å øke den før jeg skrev ut for små bokstaver.

Ny (gjentakelse 4, 71):

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

Gammelt (verdier, 114):

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

Gammelt (gjentakelse 1, 103):

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

Gammel (gjentakelse 2, 90):

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

Gammel (gjentakelse 3, 76):

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

Forutsetter 8-biters innpakningsceller og innpakningsminne. Jeg brukte Prøv det online .

Alt skrives ut _AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789

Først initialiserer denne delen

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

båndet med disse verdier

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

Dette fungerer fordi gjentakelsesforholdet jeg modellerte i utgangspunktet er f(x) = 7 * (3 * x + 1), bakover. Se @primo «s Hello, World! Answer for en forklaring på hva en gjentakelsesrelasjon er.

Så er det ganske enkelt å endre disse verdiene til nyttige. (og skriv ut understrek)

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

Deretter bruker de enkle løkkene verdiene til å skrive ut resten av tegnene. Jeg sparer 1 byte ved å ha en økning før utskriften.

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

Jeg trenger virkelig å finne en kortere sekvensgenerering.

Jeg fant et gjentakelsesforhold som ser ut til å fungere bra, men det kan være en kortere en med mindre jakt og hakke.

Jeg brukte en lineær regresjonskalkulator for å finne det som skal være kortest mulig lineær gjentakelsesrelasjon, så jeg burde nok finne en annen formel hvis jeg vil forbedre meg.

@primo forbedret virkelig gjentakelsesrelasjonen mye, takk.

Kommentarer

  • Hva med en bakoverkonstruksjon? +[--[<+++++++>->+<]>-]
  • @primo Wow! Hvordan fungerer det?
  • 3 er ujevn, så det går hele 256 ganger. Ved å avslutte med >-], kan du være sikker på at den siste terminen blir 1 (x7). Egentlig bør du sannsynligvis starte med -, det avsluttes mye raskere.

Svar

Sesos , 17 byte

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

Utgang

0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz_ 

Prøv det online! Sjekk Feilsøking for å se den genererte binære koden.

Slik fungerer den

Den binære filen ovenfor er generert ved å 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 i ferd med å legge ut en løsning som ligner veldig på din .
  • Alike sinn synes bra !
  • @LeakyNun Hm, ganske sent, men det ser ut til at din er 3 byte kortere …
  • @EriktheOutgolfer Sesos pleide å være kodet på en mindre effektiv måte. Begge programmene er 17 byte lange nå.
  • @Dennis Ah, vel, TIO-cachen kan til tider være forvirrende.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *