Skriv ett program eller en funktion som skriver ut eller returnerar en sträng av de alfanumeriska tecknen plus understrykning, i valfri ordning . För att vara exakt måste följande tecken matas ut, och inte mer :

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_ 

När du skriver ut till stdout är en valfri efterföljande ny linje tillåten.

Inbyggda konstanter som innehåller 9 eller fler av ovanstående tecken tillåts inte.


Kortaste kod i byte vinner.

Detta är en väldigt enkel utmaning, vilket jag tror kommer att generera några intressanta svar ändå.


Leaderboards

Här är en Stack Snippet för att generera både en vanlig leaderboard och en översikt av vinnare efter språk.

För att säkerställa att ditt svar dyker upp, bör du svara med en rubrik med följande Markdown-mall:

# Language Name, N bytes 

där N är storleken på ditt bidrag. Om du förbättrar din poäng kan du behålla gamla poäng i rubriken genom att slå igenom dem. Till exempel:

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

Om du vill inkludera flera nummer i rubriken (t.ex. för att din poäng är summan av två filer eller om du vill lista tolk flagga straffar separat), se till att den faktiska poängen är sista numret i rubriken:

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

Du kan också göra språknamn en länk som sedan kommer att visas i leaderboard-kodavsnittet:

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

Konvex, 9 byte

Ny metod! Jag insåg också att det är ganska mycket exakt samma som Luis ”svar men i konvex, men jag kom fram till detta självständigt.

"{,®\W"Oò 

Prova online!

Förklaring:

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

Gammal lösning, 10 byte :

A,"[,_¬^"_ 

Prova online!

Förklaring:

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

Kommentarer

  • @ mbomb007 Ja det motsvarar CJam-koden A,'[,_el^'_
  • Vilken kodning är det här?
  • @ CᴏɴᴏʀO ’ Bʀɪᴇɴ CP-1252 eller Windows-1252

Svar

Ruby, 26 byte

Tecken kan skrivas ut i valfri ordning? tänk om jag gör det!

Prova det online!

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

Svar

Perl, 20 byte

Kräver -E utan extra kostnad .

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

Så mitt ursprungliga svar (nedan) var lite för tråkigt . Det enda jag har lyckats komma med är ovanstående, det är exakt detsamma, men ser lite mer förvirrande ut … Det motsvarar ungefär exakt följande:

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

Jag gillar @ msh210 ”s förslag i kommentarerna, men de ”är bara lite för långa!

Kommentarer

  • +1. Något mer intressant men längre är något av dessa , alla 27 byte: say grep/\w/,map chr,1..122 || say map{chr=~/\w/;$&}1..122 || say map{chr=~s/\W//r}1..122
  • @ msh210 Fortfarande kan ’ inte krympa detta mer … Hanterade en 25 men: say chr=~/\w/g for 1..255

Svar

Cheddar, 31 27 byte

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

Detta visar @" väl

Avslutar inte eftersom jag äntligen blev stolt över att fixa @" operatör. Felet var det det genererade ett Cheddar-intervall, inte ett JS-intervall, så det kunde inte fungera ordentligt


Förklaring

@" designad av @ CᴏɴᴏʀO ”Bʀɪᴇɴ, och vad den gör är att generera ett strängområde från LHS till RHS.När den används som en enhetlig operatör returnerar den char vid den angivna kodpunkten (som python ”s chr)

Ungolfed

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

Svar

brainfuck, 58 bytes

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

Prova online .

Initierar tejpa till 3 · 2 n och fungerar därifrå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 | ^  

Svar

JavaScript (ES6), 62 byte

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

Returnerar 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz, så bara 6 byte kortare än en funktion som returnerar strängen bokstavligt. Ja, det suger.

Kommentarer

  • Du kan försöka hitta en sträng för vilken btoa returnerar den önskade utgången.
  • @gcampbell 60! (60 faktiska) strängar kan ta lite tid att söka …
  • Du kan bara använda atob.
  • @gcampbell Jag måste utesluter på något sätt orepresenterbara strängar.
  • @gcampbell Det visar sig att btoa-versionen ändå tar 62 byte: 45 för att koda 60 alfanumeriker, 3 okodade tecken (inklusive _) och 14 för _=>atob("")+"".

Svar

Haskell, 38 byte

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

Inget att förklara här.

Kommentarer

  • fråga: vad ’ är skillnaden mellan : och ++?
  • @Downgoat: ++ tar två strängar och sammanfogar dem. : tar en karaktär och en sträng och sätter karaktären framför strängen. "_"++['a'..'z']... fungerar också men är en byte längre.

Svar

PowerShell v3 +, 35 33 byte

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

Konstruerar en dynamisk matris 1..127 , kastar den som en char -matris. Det ”matas till -match -operatören som arbetar på regex \w, vilket returnerar alla element som matchar (dvs. exakt alfanumeriskt och understryker ). Vi kapslar in dessa arrayelement i en -join för att buntas upp som en sträng. Det som är kvar på pipeline och output är implicit.

Kommentarer

  • Hej, det ’ är inte rättvist. Min egen lösning är identisk förutom att jag började på 0
  • @Joey Gotta go fast. : D
  • Speciellt för de triviala och uppenbara lösningarna antar jag 😉

Svar

V, 27 byte

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

Prova online!

Detta svar är hemskt invecklat. Jag lägger upp en förklaring senare.

Hexdump:

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

Förklaring:

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 är knuten till en golfspel!

Svar

J, 30 29 28 byte

Sparade en byte tack vare randomra!

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

Output:

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

Förklaring

Jag ger inte en förklaring i sig men kommer att ge mellanresultat.

 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]  

Uttrycket zip "aA0_" "zZ9_" ger en lista över slutpunkter [("a","z"),("A","Z"),("0","9"),("_","_")]. div id = ”77c0d2706f”>

notation tar varje (x,y) till det inkluderande \(x,y)->[x..y] och sammanfogar resultatet s. Tack till Anders Kaseorg för två byte med do istället för >>=.

Jämför med alternativ:

 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 sparar två byte: do(x,y)<-zip"aA0_""zZ9_";[x..y]

Svar

C, 50 byte

Ring f() utan några argument.

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

Skriver ut

zyxwvutsrqponmlkjihgfedcba_ZYXWVUTSRQPONMLKJIHGFEDCBA9876543210 

Kommentarer

  • isalnum(n)|n==95&&putchar(n)
  • Där ’ s UB där. Du

skickade inte de nödvändiga argumenten.

  • @orlp – Du använde putc istället för putchar. putc förväntar sig också att en ström ska skrivas till, vilket du inte ’ passerade.Funktionen i sig fungerar bra (försök ta bort din putc helt och det fungerar).
  • @owacoder Oj!
  • @QPaysTaxes that ’ är fel. 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

    • Hur är det giltiga svaret? Ser ut som att det ’ bryter mot reglerna.
    • @nicael vilken regel?
    • ” Inbyggda konstanter som innehåller 9 eller fler av ovanstående tecken tillåts inte. ” … Saknar jag något uppenbart, @Leaky?
    • Ja, att detta ’ inte använde några inbyggda konstanter.
    • Okej, men det här är åtminstone konstigt. Definitivt OP frågar inte ’ dig att kopiera och klistra in sekvensen så att ’ inte är intressant.

    Svar

    Python 3, 58 byte

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

    Ett fullständigt program som skrivs ut till STDOUT.

    Utgången är: _0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

    Så fungerar 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 

    Prova på Ideone

    Om strängkonstanter tillåts, skulle följande ha varit 45 byte:

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

    Kommentarer

    • print('_'+*filter(str.isalnum,map(chr,range(123))))
    • @LeakyNun Det ger ett syntaxfel. Jag tänkte göra något liknande med print('_',*filter(str.isalnum,map(chr,range(123)))), men det skriver ut separata mellanslag; OP sa i kommentarerna att ’ … inga mellanslag är tillåtna i utgången alls ’.
    • Python 2 kan spara en byte med denna metod: print''.join(filter(str.isalnum,map(chr,range(123)))),'_'

    Svar

    Mitt första försö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+"":"");} 

    Tack så mycket till aloisdg, AstroDan, Leaky Nun och Kevin Lau – inte Kenny för all hjälp i kommentarer.

    Kommentarer

    • Välkommen till PPCG! Ta gärna bort allt utrymme! Kolla även Tips för golf i C # för några tips.
    • Bra – sparade mig 2 byte mer. Jag ’ börjar verkligen gilla den här kodegolfen 🙂
    • AFAIK, \w regex-klassen täcker alfanumeriken och även _, vilket skulle göra "\\w" tillräckligt giltigt för din regex-matchningsfunktion.
    • Din kod ska vara en funktion eller ett fullständigt program inte ett uttalande. Använd också .NetFiddle för att dela en demonstration av din kod 🙂
    • ” C # isn ’ t det bästa att codegolf ” Jag tycker att C # är tillräckligt kul för att koda golf. Jag tycker att det är ett fantastiskt vanligt språk att leka med. Om du är här för att vinna kommer du att förlora. Definiera ditt mål som att lära dig och ha en bra tid så vinner du alla gånger.

    Svar

    Ren bash, 32

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

    Ideone .

    Svar

    Objekt Pascal, 85 83 73 byte

    Enkelt objekt pascal med en uppsättning tecken. Att skriva ett fullständigt program istället för en procedur rakar två byte. Att ta bort programnyckelordet rakar ytterligare 10 byte.

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

    Kommentarer

    • Jag har alltid varit och kommer förmodligen att göra det alltid förväxlas av den exakta klassificeringen av Object Pascal. Turbo / Borland Pascal och FreePascal är verkligen glada utan det värdelösa program nyckelordet.
    • @manatwork Jag ’ t vet att. Konstigt nog gör det nu pascal konkurrenskraftigt här …
    • Språket jag växte upp med. Jag vet att det ännu inte är dött …
    • @rexkogitans Ja, jag lärde mig det i skolan, men kan ’ inte komma ihåg någonting från den tiden … Jag ’ spelar med lite programmering igen nu

    Svar

    bash – 47 37 byte

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

    Utdata på mitt system är:

    _0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ 

    Tack till Digital Trauma för hjälpsamma förslag.

    På vissa system kan du kanske använda ascii istället för man sh för att spara en byte.

    Kommentarer

    • man sh|egrep -io _\|\\w|sort -u|tr -d \\n
    • @DigitalTrauma Tack!Experimenterade och fick reda på att \w matchar _ och är redan skiftlägeskänslig, så det kan förkortas ännu mer.
    • env istället för man sh borde fungera i de flesta miljöer. Det gör det på mitt. $ env|egrep -o \\w|sort -u|tr -d \\n – > 0123456789ABCDEFGHIKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz.
    • Där ’ s no J. My bad.

    Svar

    PHP, 40 byte

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

    Online-demo .

    Kommentarer

    • +1 för excellens. Sidanot: PHP 7.2 ger varningar som nämner att framtida versioner kommer att kasta fel för odefinierade konstanter. 🙁

    Svar

    Retina , 30 19 16 15 12 byte

    Jag ändrade min originalalfabetförsök för den senaste versionen. Varje tecken skrivs ut i en slinga.

    Den första raden är tom.

     ; +T\`;w`w_

    Prova online

    Utgång:

    _0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 

    Tack till Leaky Nun för att ha spelat 4 byte i mitt senaste försök.

    Kommentarer

    • I ’ d säger att w räknas som en konstant som innehåller 9 eller fler av de tecken som krävs. Du ’ kommer förmodligen att expandera höger sida och ersätta w till vänster mot o. Även om du en spara en byte genom att använda EO istället för d eftersom de bara innehåller 5 tecken vardera.
    • @ mbomb007 w inuti transliterationsfasen har inget att göra regex. Det ’ är en stenografi som expanderar till en lista över de 63 tecken som krävs. Åtminstone frågar jag ’ orlp om detta fall specifikt, eftersom det ’ skiljer sig ganska från att använda \w i en regex.

    Svar

    MATL , 11 byte

    7W:"\W"[]YX 

    Prova 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 kortare: 8W:'\w'XX
    • @DrGreenEggsandIronMan Tack! Men jag tror att nya rader inte är tillåtna som separatorer. Utmaningen säger ” en sträng av de alfanumeriska tecknen plus understrykning … och inte mer ”
    • Så varför kunde inte ’ du gör 8W:'\w'XX! som jag försökte men fungerar inte ’ t
    • @ DrGreenEggsandIronMan Mycket bra fråga! Låt mig svara dig i chatten så att jag kan använda lite fler tecken

    Svara

    Brachylog , 25 byte

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

    Detta skriver ut följande till STDOUT:

    _9876543210abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 

    Förklaring

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

    • @user Inbyggda konstanter som innehåller 9 eller fler av ovanstående tecken tillåts inte.

    Svar

    Pyth, 13 12 byte

    s:#"\w"0rk\| 

    Prova online!

    Hitta alla tecken i U + 0000 till U + 007B som matchar regex /\w/.

    O matar ut 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz.

    alternativ strategi: 15 byte

    ssrMc4"0:A[a{_` 

    Testa det online!

    genererar i princip de halva inkluderande områden som krävs: 0-:, A-[, a-{, _-`.

    Svar

    CJam , 15 14 11 byte

    4 byte av tack vare @FryAmTheEggman och @Dennis!

    A,"[,_el^"_ 

    Prova 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

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

    Prova här

    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 

    Om jag kunde ha kommenterat måste jag förbättra andras svar. Men eftersom jag inte kan, kan jag lika gärna lägga upp min egen. När jag började skriva var den lägsta BF en 96 lång.

    Svar

    F #, 50 59 byte

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

    Utdata:

    _0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 

    Redigera: missade siffrorna första gången

    Edit2, inspirerad av denna Haskell-lösning , detta F # utdrag är 67 byte.

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

    Utdata:

    abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_ 

    Svar

    Hexagony, 33

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

    Utökat:

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

    Output:

    aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ1203568479_ 

    Prova online!

    Observera att det finns ett otryckbart tecken 0x1A som första byte i programmet. Detta gör också att den första raden i den utökade Hexagon ser lite av. Stort tack till Martin för visar mig detta trick, liksom för att föreslå algoritmen för utskrift t alfabetet!

    Detta skriver ut alfabetet genom att lagra a och A på två kanter av en sexkant och siffran 26 på kanten av hexagonen som berör fogen mellan bokstäverna. Detta ser ungefär så här ut:

    A \ / a | 26 

    Sedan går det in i öglor som skriver ut bokstäverna och sedan ökar dem och sedan minskar antalet. Efter en iteration skulle vi ha:

    B \ / b | 25 

    Och så vidare. Den linjära koden för initialiseringen är: 0x1A " A } a. Linjärkoden för slingorna utanför kontrollflödesändringarna är: ; ) " ; ) { ( " =.

    När räknaren når noll följer vi en annan väg för att skriva ut siffrorna och en understryka. Linjärt skrivs ut är detta: x 3 5 6 8 4 7 9 ! ; { @. Detta ersätter det aktuella minneskantens värde med siffran 1203568479 (notera att x ”s ASCII-kod är 120), som innehåller alla decimalsiffrorna. Vi skriver ut detta nummer och sedan använder vi en snygg funktion i Hexagony: vi skriver ut numret mod 256 som ett ASCII-tecken. Det här är bara 95 eller understryker.

    Svar

    Brainfuck, 114 103 98 90 76 71 byte

    Ytterligare en trivial (nu ej -trivial) -lösning, men den här gången är BF!

    Sparade 14 (!) byte tack vare @primo.

    Sparade ytterligare 4 byte tack vare @primos förslag att generera räckvidd bakåt, och jag sparade ytterligare en genom att öka innan jag skrev ut för små bokstäver.

    Ny (upprepning 4, 71):

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

    Gammal (värden, 114):

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

    Gammal (upprepning 1, 103):

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

    Gammal (upprepning 2, 90):

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

    Gammal (upprepning 3, 76):

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

    Antar 8-bitars omslagsceller och omslagsminne. Jag använde Prova online .

    Alla skriv ut _AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789

    Först initialiserar denna del

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

    bandet med dessa värden

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

    Detta fungerar eftersom den återkommande relation som jag modellerade i grund och botten är f(x) = 7 * (3 * x + 1), bakåt. Se @primo ”s Hello, World! Answer för en förklaring av vad en återkommande relation är.

    Då är det ganska enkelt för att ändra dessa värden till användbara. (och skriv ut understrykningen)

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

    De enkla slingorna använder sedan värdena för att skriva ut resten av tecknen. Jag sparar 1 byte genom att ha ett steg innan utskriften.

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

    Jag måste verkligen hitta en kortare sekvensgeneration.

    Jag hittade en återkommande relation som verkar fungera bra, men det kan finnas en kortare w / mindre jakt och plockning.

    Jag använde en linjär regressionsräknare för att hitta vad som borde vara den kortast möjliga linjära upprepningsrelationen, så jag borde antagligen hitta någon annan formel om jag vill förbättra.

    @primo förbättrade verkligen upprepningsrelationen mycket, tack.

    Kommentarer

    • Vad sägs om en bakåtkonstruktion? +[--[<+++++++>->+<]>-]
    • @primo Wow! Hur fungerar det?
    • 3 är ojämn så det går hela 256 gånger. Genom att sluta med >-] kan du vara säker på att den sista termen blir 1 (x7). Egentligen bör du förmodligen börja med -, det slutar mycket snabbare.

    Svar

    Sesos , 17 byte

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

    Utdata

    0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz_ 

    Prova online! Kontrollera Felsök för att se den genererade binära koden.

    Hur det fungerar

    Den binära filen ovan har genererats genom att samla följande SASM-kod.

     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, jag var på väg att lägga upp en lösning som liknar din .
    • Både sinnen tycker bra !!! Båda programmen är 17 byte långa nu.
    • @Dennis Ah, TIO-cachen kan ibland vara förvirrande ibland.

    Lämna ett svar

    Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *