Schrijf een programma of functie die een reeks alfanumerieke tekens plus onderstrepingsteken afdrukt of retourneert, in willekeurige volgorde . Om precies te zijn, de volgende tekens moeten worden uitgevoerd, en niet meer :

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_ 

Wanneer u naar stdout afdrukt, is een optionele nieuwe regel na uw uitvoer toegestaan.

Ingebouwde constanten die 9 bevatten of meer van de bovenstaande karakters zijn niet toegestaan.


De kortste code in bytes wint.

Dit is een zeer eenvoudige uitdaging, die naar mijn mening toch enkele interessante antwoorden zal opleveren.


Leaderboards

Hier is een Stack-fragment om zowel een regulier scorebord als een overzicht te genereren van winnaars per taal.

Om ervoor te zorgen dat uw antwoord wordt weergegeven, begint u uw antwoord met een kop, met behulp van het volgende Markdown-sjabloon:

# Language Name, N bytes 

waarbij N de grootte is van uw inzending. Als u uw score verbetert, kunt u oude scores in de kop houden door ze door te halen. Bijvoorbeeld:

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

Als u daar meerdere getallen in uw koptekst wilt opnemen (bijvoorbeeld omdat uw score de som is van twee bestanden of u wilt een lijst met tolk markeer sancties afzonderlijk), zorg ervoor dat de werkelijke score het laatste nummer in de koptekst is:

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

Je kunt ook de taal geef een link een naam die vervolgens in het scorebordfragment verschijnt:

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

Opmerkingen

Antwoord

Convex, 9 bytes

Nieuwe methode! Ik realiseerde me ook dat het vrijwel precies hetzelfde is als Luis “antwoord, maar dan in Convex, maar ik bedacht dit onafhankelijk.

"{,®\W"Oò 

Probeer het online!

Uitleg:

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

Oude oplossing, 10 bytes :

A,"[,_¬^"_ 

Probeer het online!

Uitleg:

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

Reacties

  • @ mbomb007 Ja, het is gelijk aan de CJam-code A,'[,_el^'_
  • Welke codering is dit?
  • @ CᴏɴᴏʀO ' Bʀɪᴇɴ CP-1252 of Windows-1252

Antwoord

Ruby, 26 bytes

Tekens kunnen in willekeurige volgorde worden afgedrukt? vind het erg als ik dat doe!

Probeer het online!

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

Antwoord

Perl, 20 bytes

-E vereist zonder extra kosten .

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

Dus mijn oorspronkelijke antwoord (hieronder) was een beetje te saai . Het enige dat ik heb kunnen bedenken is het bovenstaande, dat is precies hetzelfde, maar ziet er wat verwarrend uit … Het is vrijwel precies gelijk aan het onderstaande:

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

Ik vind @ msh210 “s leuk suggesties in de reacties, maar ze “zijn gewoon iets te lang!

Reacties

  • +1. Iets interessanter, maar langer is een van deze , 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 Kan nog steeds ' dit nog meer verkleinen … Beheerde een 25 echter: say chr=~/\w/g for 1..255

Antwoord

Cheddar, 31 27 bytes

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

Dit toont de @" operator goed

Voltooit niet omdat ik eindelijk begon met het repareren van de @" operator. De bug was dat het genereerde een Cheddar-bereik, geen JS-bereik, dus het kon “niet goed werken


Uitleg

De @" operator was ontworpen door @ CᴏɴᴏʀO “Bʀɪᴇɴ, en wat het doet is een reeks reeksen genereren van LHS tot RHS.Bij gebruik als een unaire operator, retourneert het het teken op het gegeven codepunt (zoals python “s chr)

Ungolfed

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

Antwoord

hersenkraker, 58 bytes

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

Probeer het online .

Initialiseert de tape naar 3 · 2 n , en werkt vanaf daar.

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

Antwoord

JavaScript (ES6), 62 bytes

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

Geeft als resultaat 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz, dus slechts 6 bytes korter dan een functie die de letterlijke tekenreeks retourneert. Ja, het is stom.

Opmerkingen

  • Je zou kunnen proberen een string te vinden waarvoor btoa geeft de vereiste uitvoer terug.
  • @gcampbell 60! (60 faculteit) strings kunnen even zoeken …
  • Je kunt gewoon atob gebruiken.
  • @gcampbell Ik moet sluit op de een of andere manier niet-representatieve strings uit.
  • @gcampbell Het blijkt dat de btoa-versie toch 62 bytes nodig heeft: 45 om 60 alfanumerieke tekens te coderen, 3 niet-gecodeerde tekens (inclusief _) en 14 voor _=>atob("")+"".

Antwoord

Haskell, 38 bytes

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

Niets om hier uit te leggen.

Opmerkingen

  • vraag: wat is ' is het verschil tussen : en ++?
  • @Downgoat: ++ neemt twee strings en voegt ze samen. : neemt een teken en een tekenreeks en plaatst het teken vóór de tekenreeks. "_"++['a'..'z']... werkt ook, maar is één byte langer.

Antwoord

PowerShell v3 +, 35 33 bytes

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

Construeert een dynamische array 1..127 , cast het als een char array. Dat wordt toegevoerd aan de -match operator die werkt aan de regex \w, die alle elementen retourneert die overeenkomen (dwz exact alfanumeriek en onderstrepingsteken ). We kapselen die array-elementen in een -join om het te bundelen als één string. Dat blijft over op de pijplijn en de uitvoer is impliciet.

Opmerkingen

  • Hé, dat ' is niet eerlijk. Mijn eigen oplossing is identiek, behalve dat ik begon bij 0
  • @Joey Moet snel gaan. : D
  • Vooral voor de triviale en voor de hand liggende oplossingen, denk ik 😉

Antwoord

V, 27 bytes

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

Probeer het online!

Dit antwoord is vreselijk ingewikkeld. Ik zal later een uitleg plaatsen.

Hexdump:

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

Uitleg:

Leesbaar:

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. 

Reacties

  • : D: D: D Cheddar is verbonden met een golftang!

Antwoord

J, 30 29 28 bytes

Een byte opgeslagen dankzij randomra!

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

Uitvoer:

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

Uitleg

Ik zal per se geen uitleg geven, maar zal tussentijdse resultaten geven.

 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 

Answer

Haskell, 31 bytes

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

De uitdrukking zip "aA0_" "zZ9_" geeft de lijst met eindpunten [("a","z"),("A","Z"),("0","9"),("_","_")]. De do -notatie neemt elke (x,y) naar de inclusief \(x,y)->[x..y] en voegt het resultaat samen s. Met dank aan Anders Kaseorg voor twee bytes met do in plaats van >>=.

Vergelijk met alternatieven:

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

Reacties

  • do notatie bewaart twee bytes: do(x,y)<-zip"aA0_""zZ9_";[x..y]

Antwoord

C, 50 bytes

Bel f() zonder argumenten.

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

Afdrukken

zyxwvutsrqponmlkjihgfedcba_ZYXWVUTSRQPONMLKJIHGFEDCBA9876543210 

Reacties

  • isalnum(n)|n==95&&putchar(n)
  • Daar ' s UB daar. Je hebt ' niet de vereiste argumenten doorgegeven.
  • @orlp – Je hebt putc gebruikt in plaats van putchar. putc verwacht ook een stream om naar te schrijven, wat je ' niet hebt doorgegeven.De functie zelf werkt prima (probeer je putc helemaal te verwijderen, en het werkt).
  • @owacoder Oeps!
  • @QPaysTaxes die ' s fout. If the number of arguments does not equal the number of parameters, the behavior is undefined. 6.5.2.2/6, zie N1570 .

Antwoord

/// , 63 bytes

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_ 

Reacties

  • Hoe is dit het geldige antwoord? Het lijkt erop dat ' de regels overtreedt.
  • @nicael welke regel?
  • " Ingebouwde constanten die 9 of meer van de bovenstaande tekens bevatten, zijn niet toegestaan. " … Mis ik iets voor de hand liggend, @Leaky?
  • Ja, dat dit ' geen ingebouwde constanten gebruikte.
  • Ok, maar dit is in ieder geval raar. OP vraagt beslist niet ' om de reeks te kopiëren en plakken, dat ' niet interessant is.

Answer

Python 3, 58 bytes

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

Een volledig programma dat wordt afgedrukt naar STDOUT.

De uitvoer is: _0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

Hoe het werkt

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 

Probeer het op Ideone

Als stringconstanten waren toegestaan, zou het volgende 45 bytes zijn geweest:

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

Opmerkingen

  • print('_'+*filter(str.isalnum,map(chr,range(123))))
  • @LeakyNun Dat geeft een syntaxisfout. Ik dacht erover om iets soortgelijks te doen met print('_',*filter(str.isalnum,map(chr,range(123)))), maar dat drukt scheidingsspaties af; het OP zei in de commentaren dat ' … helemaal geen spaties in de uitvoer zijn toegestaan '.
  • Python 2 kan één byte besparen met deze benadering: print''.join(filter(str.isalnum,map(chr,range(123)))),'_'

Answer

Mijn eerste poging tot 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+"":"");} 

Heel erg bedankt aan aloisdg, AstroDan, Leaky Nun en Kevin Lau – niet Kenny voor alle hulp in reacties.

Opmerkingen

  • Welkom bij PPCG! Voel je vrij om alle ruimte te verwijderen! Bekijk ook Tips voor golfen in C # voor enkele tips.
  • Geweldig – heeft me 2 bytes meer bespaard. Ik ' begin deze codegolf echt leuk te vinden 🙂
  • AFAIK, de \w regex-klasse omvat de alfanumerieke en ook _, wat "\\w" voldoende geldig zou moeten maken voor uw regex-matchfunctie.
  • Uw code zou een be-functie moeten zijn of een volledig programma, geen verklaring. Gebruik .NetFiddle ook om een demonstratie van uw code te delen 🙂
  • " C # isn ' t het beste om codegolf " Ik vind C # leuk genoeg om golf te coderen. Ik denk dat het een geweldige reguliere taal is om mee te spelen. Als je hier bent om te winnen, verlies je. Definieer uw doel als leren en plezier hebben en u zult altijd winnen.

Antwoord

Puur bash, 32

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

Ideone .

Antwoord

Object Pascal, 85 83 73 bytes

Gewoon object pascal met behulp van een set tekens. Het schrijven van een volledig programma in plaats van een procedure scheert 2 bytes af. Door het programmazoekwoord te verwijderen, scheert u 10 bytes meer.

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

Reacties

  • Ik was en zal dat waarschijnlijk ook doen wees altijd in de war door de exacte classificatie van Object Pascal. Turbo / Borland Pascal en FreePascal zijn zeker tevreden zonder het nutteloze program sleutelwoord.
  • @manatwork Ik heb ' t weet dat. Vreemd genoeg maakt het pascal nu competitief hier …
  • De taal waarmee ik ben opgegroeid. Ik weet dat het nog niet dood is …
  • @rexkogitans Ja, ik heb het op school geleerd, maar ' kan me niets herinneren van toen … Ik ' speel nu weer met wat programmeren

Antwoord

bash – 47 37 bytes

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

Uitvoer op mijn systeem is:

_0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ 

Met dank aan Digital Trauma voor nuttige suggesties.

Op sommige systemen kunt u ascii gebruiken in plaats van man sh om een byte op te slaan.

Reacties

  • man sh|egrep -io _\|\\w|sort -u|tr -d \\n
  • @DigitalTrauma Bedankt!Geëxperimenteerd en gevonden \w komt overeen met _ en is al hoofdletterongevoelig, dus kan nog meer bekorten.
  • env in plaats van man sh zou in de meeste omgevingen moeten werken. Het doet het op de mijne. $ env|egrep -o \\w|sort -u|tr -d \\n – > 0123456789ABCDEFGHIKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz.
  • Daar ' s nee J. Mijn fout.

Antwoord

PHP, 40 bytes

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

Online demo .

Opmerkingen

  • +1 voor uitmuntendheid. Kanttekening: PHP 7.2 geeft waarschuwingen die vermelden dat toekomstige versies fouten zullen genereren voor ongedefinieerde constanten. 🙁

Antwoord

Retina , 30 19 16 15 12 bytes

Ik heb mijn oorspronkelijke alfabetpoging voor deze nieuwste versie. Elk teken wordt in een lus afgedrukt.

De eerste regel is leeg.

 ; +T\`;w`w_

Probeer het online

Uitvoer:

_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 

Met dank aan Leaky Nun voor het golfen van 4 bytes van mijn laatste poging.

Reacties

  • I ' d zeg dat w telt als een constante die 9 of meer van de vereiste tekens bevat. U ' ll moet waarschijnlijk de rechterkant uitvouwen en de w aan de linkerkant vervangen door o. en sla een byte op door EO te gebruiken in plaats van d aangezien ze elk slechts 5 karakters bevatten.
  • @ mbomb007 w binnen de transliteratiefase heeft niets te maken met regex. Het ' is een afkorting die wordt uitgebreid tot een lijst met de vereiste 63 tekens. Ik ' zou orlp specifiek naar deze zaak vragen, aangezien het ' heel anders is dan het gebruik van \w in een reguliere expressie.

Antwoord

MATL , 11 bytes

7W:"\W"[]YX 

Probeer het 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 

Reacties

  • 2 bytes korter: 8W:'\w'XX
  • @DrGreenEggsandIronMan Bedankt! Maar ik denk dat nieuwe regels niet zijn toegestaan als scheidingstekens. De uitdaging zegt " een reeks alfanumerieke tekens plus onderstrepingsteken … en niet meer "
  • Dus waarom kon niet ' t je doet 8W:'\w'XX! wat ik heb geprobeerd maar niet ' werkt
  • @DrGreenEggsandIronMan Zeer goede vraag! Laat me je beantwoorden in de chat zodat ik wat meer tekens kan gebruiken

Antwoord

Brachylog , 25 bytes

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

Dit drukt het volgende af naar STDOUT:

_9876543210abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 

Uitleg

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

Antwoord

Dyalog APL , 18 bytes

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

afdrukken:

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz 

Opmerkingen

  • @user Ingebouwde constanten die 9 of meer van de bovenstaande tekens bevatten, zijn niet toegestaan.

Antwoord

Pyth, 13 12 bytes

s:#"\w"0rk\| 

Probeer het online!

Vindt alle tekens in U + 0000 tot U + 007B die overeenkomen met de regex /\w/.

O utputs 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz.

alternatieve benadering: 15 bytes

ssrMc4"0:A[a{_` 

Probeer het online!

genereert in feite de vereiste half-inclusieve bereiken: 0-:, A-[, a-{, _-`.

Antwoord

CJam , 15 14 11 bytes

4 bytes korting dankzij @FryAmTheEggman en @Dennis!

A,"[,_el^"_ 

Probeer het 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 

Antwoord

Brainfuck, 89 bytes

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

Probeer het hier

Details:

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

Als ik had kunnen reageren, zou ik de antwoorden van anderen moeten verbeteren. Maar aangezien ik het niet kan, kan ik net zo goed mijn eigen posten. Toen ik dit begon te schrijven, was de laagste BF 96 lang.

Antwoord

F #, 50 59 bytes

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

Uitvoer:

_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 

Bewerken: de eerste keer de cijfers gemist

Bewerken2, geïnspireerd door deze Haskell-oplossing dit F # -fragment is 67 bytes.

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

Uitvoer:

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_ 

Antwoord

Hexagony, 33

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

Uitgebreid:

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

Uitvoer:

aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ1203568479_ 

Probeer het online!

Merk op dat er een niet-afdrukbaar teken 0x1A is als de eerste byte van het programma. Hierdoor ziet de eerste rij van de uitgevouwen hexagon er ook een beetje uit. Hartelijk dank aan Martin voor laat me deze truc zien, evenals voor het suggereren van het algoritme voor het afdrukken van t het alfabet!

Dit drukt het alfabet af door a en A op te slaan op twee randen van een zeshoek en het nummer 26 op de rand van de zeshoek die de verbinding tussen de letters raakt. Dit ziet er ongeveer zo uit:

A \ / a | 26 

Vervolgens gaat het een lus binnen die de letters afdrukt en ze vervolgens verhoogt en vervolgens het aantal verlaagt. Na één iteratie zouden we hebben:

B \ / b | 25 

Enzovoort. De lineaire code voor de initialisatie is: 0x1A " A } a. De lineaire code voor de lussen buiten de controlestroomwijzigingen is: ; ) " ; ) { ( " =.

Zodra de teller nul bereikt, volgen we een ander pad om de getallen af te drukken en een laag streepje. Lineair uitgeschreven is dit: x 3 5 6 8 4 7 9 ! ; { @. Dit vervangt de huidige waarde van de geheugenrand door het nummer 1203568479 (merk op dat de ASCII-code van x “120 is), die alle decimale cijfers bevat. We printen dit nummer uit en dan gebruiken we een handige feature van Hexagony: we printen het nummer mod 256 als een ASCII-teken. Dit is toevallig 95 of een onderstrepingsteken.

Antwoord

Brainfuck, 114 103 98 90 76 71 bytes

Nog een triviaal (nu niet -trivial) oplossing, maar deze keer is het BF!

14 (!) bytes bespaard dankzij @primo.

4 extra bytes bespaard dankzij @primos suggestie om de bereik achteruit, en ik heb een ander opgeslagen door te verhogen voordat ik afdrukte voor de kleine letters.

Nieuw (herhaling 4, 71):

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

Oud (waarden, 114):

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

Oud (herhaling 1, 103):

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

Oud (herhaling 2, 90):

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

Oud (herhaling 3, 76):

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

Gaat uit van 8 bit inpakcellen en inpakgeheugen. Ik gebruikte Probeer het online .

Alles wordt afgedrukt _AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789

Allereerst initialiseert dit deel

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

de tape met deze waarden

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

Dit werkt omdat de herhalingsrelatie die ik heb gemodelleerd in feite f(x) = 7 * (3 * x + 1) is, achteruit. Zie @primo “s Hallo, Wereld! Antwoord voor een uitleg van wat een herhalingsrelatie is.

Dan is het vrij eenvoudig om deze waarden in bruikbare waarden te veranderen. (en druk het onderstrepingsteken af)

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

Vervolgens gebruiken de eenvoudige lussen de waarden om de rest van de tekens af te drukken. Ik bespaar 1 byte door een increment voor de afdruk te plaatsen.

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

Ik moet echt een kortere reeksgeneratie vinden.

Ik heb een herhalingsrelatie gevonden die goed lijkt te werken, maar er kan een kortere zijn met minder jagen en pikken.

Ik heb een lineaire regressiecalculator gebruikt om te vinden wat de kortst mogelijke lineaire herhalingsrelatie zou moeten zijn, dus ik zou waarschijnlijk een andere formule moeten vinden als ik wil verbeteren.

@primo heeft de herhalingsrelatie echt enorm verbeterd, bedankt.

Opmerkingen

  • Hoe zit het met een achterwaartse constructie? +[--[<+++++++>->+<]>-]
  • @primo Wauw! Hoe werkt dat?
  • 3 is ongelijk, dus het zal 256 keer herhalen. Door te eindigen met >-], weet je zeker dat de laatste term 1 (x7) zal zijn. Eigenlijk zou je waarschijnlijk moeten beginnen met -, het eindigt veel sneller.

Antwoord

Sesos , 17 bytes

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

Uitvoer

0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz_ 

Probeer het online! Controleer Debug om de gegenereerde binaire code te zien.

Hoe het werkt

Het bovenstaande binaire bestand is gegenereerd door de volgende SASM-code samen te stellen.

 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.  

Reacties

  • Wauw, ik stond op het punt om een oplossing te posten die erg lijkt op die van jou .
  • Gelijke geesten vinden het geweldig !
  • @LeakyNun Hm, een beetje laat, maar het lijkt erop dat die van jou 3 bytes korter is …
  • @EriktheOutgolfer Sesos werden vroeger op een minder efficiënte manier gecodeerd. Beide programmas zijn nu 17 bytes lang.
  • @Dennis Ach, de TIO-cache kan soms verwarrend zijn.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *