Schreiben Sie ein Programm oder eine Funktion, die eine Zeichenfolge der alphanumerischen Zeichen plus Unterstrich in beliebiger Reihenfolge . Um genau zu sein, müssen die folgenden Zeichen ausgegeben werden: und nicht mehr :

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_ 

Beim Drucken nach stdout ist eine optionale nachfolgende Zeilenumbruch nach Ihrer Ausgabe zulässig.

Integrierte Konstanten, die 9 enthalten oder mehr der oben genannten Zeichen sind nicht zulässig.


Der kürzeste Code in Byte gewinnt.

Dies ist ein Sehr einfache Herausforderung, von der ich glaube, dass sie dennoch einige interessante Antworten liefert.


Bestenlisten

Hier ist ein Stapel-Snippet, um sowohl eine reguläre Bestenliste als auch eine Übersicht zu erstellen

Um sicherzustellen, dass Ihre Antwort angezeigt wird, beginnen Sie Ihre Antwort mit einer Überschrift unter Verwendung der folgenden Markdown-Vorlage:

# Language Name, N bytes 

wobei N die Größe Ihrer Einreichung ist. Wenn Sie Ihre Punktzahl verbessern, können Sie alte alte Punktzahlen in der Überschrift behalten, indem Sie sie durchstreichen. Zum Beispiel:

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

Wenn Sie mehrere Zahlen in Ihren Header aufnehmen möchten (z. B. weil Ihre Punktzahl die Summe zweier Dateien ist oder Sie den Interpreter auflisten möchten Strafen separat kennzeichnen), stellen Sie sicher, dass die tatsächliche Punktzahl die letzte Nummer in der Kopfzeile ist:

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

Sie können auch die Sprachname ein Link, der dann im Leaderboard-Snippet angezeigt wird:

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

Kommentare

Antwort

Konvex, 9 Bytes

Neue Methode! Außerdem wurde mir klar, dass es ziemlich genau das gleiche ist wie die Antwort von Luis, aber in Convex, aber ich habe dies unabhängig gefunden.

"{,®\W"Oò 

Probieren Sie es online aus!

Erläuterung:

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

Alte Lösung, 10 Byte :

A,"[,_¬^"_ 

Probieren Sie es online aus!

Erläuterung:

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

Kommentare

  • @ mbomb007 Ja, dies entspricht dem CJam-Code A,'[,_el^'_
  • Welche Codierung ist das?
  • @ CᴏɴᴏʀO ' Bʀɪᴇɴ CP-1252 oder Windows-1252

Antwort

Ruby, 26 Bytes

Zeichen können in beliebiger Reihenfolge gedruckt werden? dagegen, wenn ich es tue!

Probieren Sie es online aus!

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

Antwort

Perl, 20 Byte

Erfordert -E ohne zusätzliche Kosten

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

Meine ursprüngliche Antwort (unten) war also etwas zu langweilig . Das einzige, was ich mir ausgedacht habe, ist das Obige, das genau das gleiche ist, aber etwas verwirrender aussieht … Es entspricht ziemlich genau dem Folgenden:

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

Ich mag @ msh210 „s Vorschläge in den Kommentaren, aber sie sind „nur ein bisschen zu lang!

Kommentare

  • +1. Etwas interessanter, aber länger ist eine davon , 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 ' kann dies nicht mehr verkleinern … Verwaltete jedoch eine 25: say chr=~/\w/g for 1..255

Antwort

Cheddar, 31 27 Bytes

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

Dies zeigt den Operator @" gut

Nicht abgeschlossen, da ich endlich die @" Operator. Der Fehler war das Es wurde ein Cheddar-Bereich generiert, kein JS-Bereich, sodass es nicht richtig funktionieren konnte.


Erläuterung

Der Operator @" war entworfen von @ CᴏɴᴏʀO „Bʀɪᴇɴ, und es erzeugt einen String-Bereich von LHS bis RHS.Bei Verwendung als unärer Operator wird das Zeichen am angegebenen Codepunkt zurückgegeben (wie bei Python chr)

Ungolfed

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

Antwort

Brainfuck, 58 Bytes

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

Probieren Sie es online aus .

Initialisiert das Band auf 3 · 2 n und funktioniert von dort aus.

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

Antwort

JavaScript (ES6), 62 Byte

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

Gibt 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz zurück, also nur 6 Byte kürzer als eine Funktion, die das Zeichenfolgenliteral zurückgibt. Ja, es saugt.

Kommentare

  • Sie könnten versuchen, eine Zeichenfolge zu finden, für die btoa gibt die erforderliche Ausgabe zurück.
  • @gcampbell 60! Die Suche nach (60 faktoriellen) Zeichenfolgen kann einige Zeit dauern …
  • Sie können einfach atob verwenden.
  • @gcampbell Ich muss Nicht darstellbare Zeichenfolgen irgendwie ausschließen.
  • @gcampbell Es stellt sich heraus, dass die btoa-Version ohnehin 62 Bytes benötigt: 45 zum Codieren von 60 alphanumerischen Zeichen, 3 nicht codierten Zeichen (einschließlich _) und 14 für _=>atob("")+"".

Antwort

Haskell, 38 Bytes

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

Hier gibt es nichts zu erklären.

Kommentare

  • Frage: Was ist ' der Unterschied zwischen : und ++?
  • @Downgoat: ++ nimmt zwei Zeichenfolgen und verkettet sie. : nimmt ein Zeichen und eine Zeichenfolge und setzt das Zeichen vor die Zeichenfolge. "_"++['a'..'z']... funktioniert ebenfalls, ist jedoch ein Byte länger.

Antwort

PowerShell v3 +, 35 33 Byte

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

Erstellt ein dynamisches Array 1..127 , wandelt es als char -Array um. Dies wird dem Operator -match zugeführt, der am regulären Ausdruck \w arbeitet, der alle übereinstimmenden Elemente zurückgibt (dh genau alphanumerisch und unterstrichen) ). Wir kapseln diese Array-Elemente in eine -join, um sie als eine Zeichenfolge zu bündeln. Diese verbleiben in der Pipeline und die Ausgabe ist implizit.

Kommentare

  • Hey, das ' ist nicht fair. Meine eigene Lösung ist identisch, außer dass ich bei 0
  • @Joey angefangen habe. Ich muss schnell gehen. : D
  • Speziell für die trivialen und offensichtlichen Lösungen, denke ich 😉

Antwort

V, 27 Bytes

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

Probieren Sie es online aus!

Diese Antwort ist schrecklich verwickelt. Ich werde später eine Erklärung veröffentlichen.

Hexdump:

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

Erläuterung:

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. 

Kommentare

  • : D: D: D Cheddar ist mit einer Golfsprache verbunden!

Antwort

J, 30 29 28 Bytes

Dank randomra ein Byte gespeichert!

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

Ausgabe:

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

Erläuterung

Ich werde keine Erklärung per se liefern, aber Zwischenergebnisse liefern.

 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 

Antwort

Haskell, 31 Byte

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

Der Ausdruck zip "aA0_" "zZ9_" gibt die Liste der Endpunkte an [("a","z"),("A","Z"),("0","9"),("_","_")] div id = „77c0d2706f“>

Notation führt jede (x,y) zum inklusive \(x,y)->[x..y] und verkettet das Ergebnis s. Vielen Dank an Anders Kaseorg für zwei Bytes mit do anstelle von >>=.

Vergleichen Sie mit Alternativen:

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

Kommentare

  • do Notation speichert zwei Bytes: do(x,y)<-zip"aA0_""zZ9_";[x..y]

Antwort

C, 50 Byte

Rufen Sie f() ohne Argumente auf.

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

druckt

zyxwvutsrqponmlkjihgfedcba_ZYXWVUTSRQPONMLKJIHGFEDCBA9876543210 

Kommentare

  • isalnum(n)|n==95&&putchar(n)
  • Dort ' ist dort UB. Sie haben ' die erforderlichen Argumente nicht übergeben.
  • @orlp – Sie haben putc anstelle von putchar. putc erwartet, dass auch ein Stream geschrieben wird, den Sie ' nicht bestanden haben.Die Funktion selbst funktioniert einwandfrei (versuchen Sie, Ihre putc vollständig zu entfernen, und sie funktioniert).
  • @owacoder Ups!
  • @QPaysTaxes that ' ist falsch. If the number of arguments does not equal the number of parameters, the behavior is undefined. 6.5.2.2/6, siehe N1570 .

Antwort

/// , 63 Bytes

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_ 

Kommentare

  • Wie ist die gültige Antwort? Es sieht so aus, als ob ' gegen die Regeln verstößt.
  • @nicael welche Regel?
  • " Integrierte Konstanten, die 9 oder mehr der oben genannten Zeichen enthalten, sind nicht zulässig. " … Fehlt mir etwas Offensichtliches, @Leaky?
  • Ja, dass dies ' keine eingebauten Konstanten verwendet hat.
  • Ok, aber das ist zumindest seltsam. Auf jeden Fall fordert OP ' Sie nicht auf, die Sequenz zu kopieren und einzufügen, da ' nicht interessant ist.

Antwort

Python 3, 58 Byte

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

Ein vollständiges Programm Das wird in STDOUT gedruckt.

Die Ausgabe lautet: _0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

Funktionsweise

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 

Probieren Sie es auf Ideone

Wenn Zeichenfolgenkonstanten zulässig wären, wären die folgenden 45 Byte gewesen:

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

Kommentare

  • print('_'+*filter(str.isalnum,map(chr,range(123))))
  • @LeakyNun Dies löst einen Syntaxfehler aus. Ich habe darüber nachgedacht, mit print('_',*filter(str.isalnum,map(chr,range(123)))) etwas Ähnliches zu tun, aber das gibt Trennzeichen aus. Das OP sagte in den Kommentaren, dass ' … in der Ausgabe überhaupt keine Leerzeichen zulässig sind '.
  • Python 2 kann mit diesem Ansatz ein Byte speichern: print''.join(filter(str.isalnum,map(chr,range(123)))),'_'

Antwort

Mein erster Versuch mit 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+"":"");} 

Vielen Dank an Aloisdg, AstroDan, Leaky Nun und Kevin Lau – nicht an Kenny für die Hilfe in den Kommentaren.

Kommentare

  • Willkommen bei PPCG! Fühlen Sie sich frei, den gesamten Raum zu entfernen! Überprüfen Sie auch Tipps zum Golfen in C # für einige Tipps.
  • Großartig – hat mir 2 Bytes mehr gespart. Ich ' fange wirklich an, diesen Codegolf zu mögen 🙂
  • AFAIK, die \w Regex-Klasse deckt die alphanumerischen Zeichen und ab auch _, wodurch "\\w" für Ihre Regex-Match-Funktion gültig genug sein sollte.
  • Ihr Code sollte eine be-Funktion sein oder ein vollständiges Programm, keine Aussage. Verwenden Sie auch .NetFiddle, um eine Demonstration Ihres Codes zu teilen 🙂
  • " C # ist nicht ' das Beste codegolf " Ich finde C # lustig genug, um Golf zu codieren. Ich denke, es ist eine großartige Mainstream-Sprache zum Spielen. Wenn Sie hier sind, um zu gewinnen, verlieren Sie. Definieren Sie Ihr Ziel als Lernen und Spaß haben und Sie werden alle Zeiten gewinnen.

Antwort

Rein bash, 32

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

Ideone .

Antwort

Objekt Pascal, 85 83 73 Bytes

Einfacher Objekt-Pascal mit einer Reihe von Zeichen. Das Schreiben eines vollständigen Programms anstelle einer Prozedur spart 2 Bytes. Durch das Entfernen des Programmschlüsselworts werden 10 weitere Bytes gespart.

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

Kommentare

  • Ich war und werde es immer tun Seien Sie immer durch die genaue Klassifizierung von Object Pascal verwirrt. Turbo / Borland Pascal und FreePascal sind ohne das nutzlose Schlüsselwort program sicherlich glücklich.
  • @manatwork Ich habe ' t nicht getan weiß das. Seltsamerweise macht es Pascal jetzt hier wettbewerbsfähig …
  • Die Sprache, mit der ich aufgewachsen bin. Ich weiß, dass es noch nicht tot ist …
  • @rexkogitans Ja, ich habe es in der Schule gelernt, kann mich aber ' an nichts von damals erinnern … Ich ' spiele jetzt wieder mit etwas Programmierung

Antwort

bash – 47 37 Bytes

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

Die Ausgabe auf meinem System lautet:

_0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ 

Vielen Dank an Digital Trauma für hilfreiche Vorschläge.

Auf einigen Systemen können Sie möglicherweise ascii anstelle von zum Speichern eines Bytes.

Kommentare

  • man sh|egrep -io _\|\\w|sort -u|tr -d \\n
  • @DigitalTrauma Danke!Experimentiert und herausgefunden, dass \w mit _ übereinstimmt und die Groß- und Kleinschreibung nicht berücksichtigt wird, sodass sie noch weiter verkürzt werden kann.
  • env anstelle von man sh sollte in den meisten Umgebungen funktionieren. Das tut es bei mir. $ env|egrep -o \\w|sort -u|tr -d \\n – > 0123456789ABCDEFGHIKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz.
  • Dort ' s no J. Mein schlechtes.

Antwort

PHP, 40 Bytes

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

Online-Demo .

Kommentare

  • +1 für hervorragende Leistungen. Randnotiz: PHP 7.2 gibt Warnungen aus, die darauf hinweisen, dass zukünftige Versionen Fehler für undefinierte Konstanten auslösen werden. 🙁

Antwort

Retina , 30 19 16 15 12 Bytes

Ich habe meine Originalalphabetversuch für diese neueste Version. Jedes Zeichen wird in einer Schleife gedruckt.

Die erste Zeile ist leer.

 ; +T\`;w`w_

Probieren Sie es online aus

Ausgabe:

_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 

Vielen Dank an Leaky Nun für das Golfen von 4 Bytes bei meinem letzten Versuch.

Kommentare

  • I ' d würde sagen, dass w als Konstante zählt, die 9 oder mehr der erforderlichen Zeichen enthält. Sie ' muss wahrscheinlich die rechte Seite erweitern und die w auf der linken Seite durch o ersetzen. Obwohl Sie c Speichern Sie ein Byte, indem Sie EO anstelle von d verwenden, da sie jeweils nur 5 Zeichen enthalten.
  • @ mbomb007 w in der Transliterationsphase hat nichts mit Regex zu tun. ' ist eine Abkürzung, die zu einer Liste der erforderlichen 63 Zeichen erweitert wird. Zumindest würde ich ' orlp speziell nach diesem Fall fragen, da es ' ganz anders ist als die Verwendung von \w in einem regulären Ausdruck.

Antwort

MATL , 11 Byte

7W:"\W"[]YX 

Probieren Sie es online aus!

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 

Kommentare

  • 2 Bytes kürzer: 8W:'\w'XX
  • @DrGreenEggsandIronMan Danke! Aber ich denke, Zeilenumbrüche sind als Trennzeichen nicht erlaubt. Die Herausforderung lautet " eine Zeichenfolge aus alphanumerischen Zeichen plus Unterstrich … und nicht mehr "
  • Warum also? ' konnte nicht 8W:'\w'XX! ausgeführt werden, was ich versucht habe, aber ' funktioniert nicht
  • @DrGreenEggsandIronMan Sehr gute Frage! Lassen Sie mich Ihnen im Chat antworten , damit ich etwas mehr Zeichen verwenden kann

Antwort

Brachylog , 25 Byte

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

Dies gibt Folgendes an STDOUT aus:

_9876543210abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 

Erläuterung

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

Antwort

Dyalog APL , 18 Bytes

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

druckt:

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz 

Kommentare

  • @user Integrierte Konstanten, die 9 oder mehr der oben genannten Zeichen enthalten, sind nicht zulässig.

Antwort

Pyth, 13 12 Bytes

s:#"\w"0rk\| 

Probieren Sie es online aus!

Findet alle Zeichen in U + 0000 bis U + 007B, die dem regulären Ausdruck /\w/.

O. utputs 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz.

alternativer Ansatz: 15 Byte

ssrMc4"0:A[a{_` 

Probieren Sie es online aus!

generiert grundsätzlich die erforderlichen Bereiche mit halber Inklusion: 0-:, A-[, a-{, _-`.

Antwort

CJam , 15 14 11 Bytes

4 Bytes dank @FryAmTheEggman und @Dennis!

A,"[,_el^"_ 

Probieren Sie es online aus!

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 

Antwort

Brainfuck, 89 Bytes

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

Probieren Sie es hier aus

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 

Wenn ich einen Kommentar hätte abgeben können, müsste ich die Antworten anderer verbessern. Aber da ich nicht kann, könnte ich genauso gut meine eigenen posten. Als ich anfing, dies zu schreiben, war die niedrigste BF 96 lang.

Antwort

F #, 50 59 Bytes

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

Ausgabe:

_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 

Bearbeiten: Beim ersten Mal wurden die Ziffern übersehen.

Bearbeiten2, inspiriert von dieser Haskell-Lösung Dieses F # -Schnipsel ist 67 Bytes.

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

Ausgabe:

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_ 

Antwort

Hexagony, 33

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

Erweitert:

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

Ausgabe:

aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ1203568479_ 

Probieren Sie es online aus!

Beachten Sie, dass es ein nicht druckbares Zeichen 0x1A als erstes Byte des Programms gibt. Dadurch sieht auch die erste Zeile des erweiterten Hexagons irgendwie aus. Vielen Dank an Martin für zeigt mir diesen Trick und schlägt den Algorithmus zum Drucken von t vor Das Alphabet!

Hiermit wird das Alphabet gedruckt, indem a und A an zwei Kanten eines Sechsecks und der Zahl gespeichert werden 26 am Rand des Sechsecks, das die Verbindung zwischen den Buchstaben berührt. Das sieht ungefähr so aus:

A \ / a | 26 

Dann wird eine Schleife eingegeben, die die Buchstaben druckt und dann inkrementiert und dann die Zahl dekrementiert. Nach einer Iteration hätten wir:

B \ / b | 25 

Und so weiter. Der lineare Code für die Initialisierung lautet: 0x1A " A } a. Der lineare Code für die Schleifen außerhalb von Änderungen des Kontrollflusses lautet: ; ) " ; ) { ( " =.

Sobald der Zähler Null erreicht, folgen wir einem anderen Pfad, um die Zahlen und eine zu drucken unterstreichen. Linear geschrieben lautet dies: x 3 5 6 8 4 7 9 ! ; { @. Dies ersetzt den Wert der aktuellen Speicherkante durch die Nummer 1203568479 (beachten Sie, dass der ASCII-Code von x „120 ist), der alle Dezimalstellen enthält. Wir drucken diese Nummer aus und verwenden dann eine nette Funktion von Hexagony: Wir drucken die Nummer mod 256 als ASCII-Zeichen aus. Dies ist zufällig 95 oder ein Unterstrich.

Antwort

Brainfuck, 114 103 98 90 76 71 Bytes

Ein weiteres triviales (jetzt nicht) -triviale) Lösung, aber diesmal ist BF!

Gespeichert 14 (!) Bytes dank @primo.

Gespeichert 4 weitere Bytes dank @primos Vorschlag, das zu generieren Bereich rückwärts, und ich habe einen anderen durch Inkrementieren gespeichert, bevor ich für die Kleinbuchstaben druckte.

Neu (Wiederholung 4, 71):

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

Alt (Werte, 114):

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

Alt (Wiederholung 1, 103):

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

Alt (Wiederholung 2, 90):

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

Alt (Wiederholung 3, 76):

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

Nimmt 8-Bit-Wrapping-Zellen und Wrapping-Speicher an. Ich habe Online ausprobiert .

Alle drucken _AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789

Zunächst initialisiert dieser Teil

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

das Band mit diesen Werte

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

Dies funktioniert, weil die von mir modellierte Wiederholungsrelation im Grunde genommen f(x) = 7 * (3 * x + 1) ist. Unter @primos Hallo, Welt! Antwort finden Sie eine Erklärung, was eine Wiederholungsbeziehung ist.

Dann ist es ziemlich einfach um diese Werte in nützliche zu ändern. (und drucken Sie den Unterstrich)

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

Dann verwenden die einfachen Schleifen die Werte, um den Rest der Zeichen zu drucken. Ich spare 1 Byte, indem ich vor dem Druck ein Inkrement habe.

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

Ich muss wirklich eine kürzere Sequenzgenerierung finden.

Ich habe eine Wiederholungsrelation gefunden, die gut zu funktionieren scheint, aber es könnte eine kürzere mit weniger Jagd und Picken geben.

Ich habe einen linearen Regressionsrechner verwendet Um herauszufinden, was die kürzestmögliche lineare Wiederholungsrelation sein sollte, sollte ich wahrscheinlich eine andere Formel finden, wenn ich mich verbessern möchte.

@primo hat die Wiederholungsrelation wirklich sehr verbessert, danke.

Kommentare

  • Wie wäre es mit einer Rückwärtskonstruktion? +[--[<+++++++>->+<]>-]
  • @primo Wow! Wie funktioniert das?
  • 3 ist ungleichmäßig und wird 256 Mal wiederholt. Wenn Sie mit >-] enden, können Sie sicher sein, dass der endgültige Term 1 (x7) ist. Eigentlich sollten Sie wahrscheinlich mit - beginnen, es endet viel schneller.

Antwort

Sesos , 17 Bytes

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

Ausgabe

0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz_ 

Probieren Sie es online aus! Aktivieren Sie Debug , um den generierten Binärcode anzuzeigen.

Funktionsweise

Die obige Binärdatei wurde generiert durch Zusammenstellen des folgenden SASM-Codes.

 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.  

Kommentare

  • Wow, ich wollte gerade eine Lösung veröffentlichen, die Ihrer sehr ähnlich ist .
  • Gleichgesinnte denken großartig !
  • @LeakyNun Hm, etwas spät, aber es sieht so aus, als ob Ihre 3 Bytes kürzer ist …
  • @EriktheOutgolfer Sesos wurden früher weniger effizient codiert. Beide Programme sind jetzt 17 Byte lang.
  • @Dennis Ah, der TIO-Cache kann manchmal verwirrend sein.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.