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
- Kommentare sind nicht für eine ausführliche Diskussion gedacht. Diese Konversation wurde in den Chat verschoben .
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ò
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,"[,_¬^"_
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!
$><<(?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
+++[[<+>->++<]>]<<[-<->]<<-.+<<++[->>+.>+.<<<]<--[->>.+<<]
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@"Í×
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 vonputchar
.putc
erwartet, dass auch ein Stream geschrieben wird, den Sie ' nicht bestanden haben.Die Funktion selbst funktioniert einwandfrei (versuchen Sie, Ihreputc
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
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
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 vonman 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;
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_
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 diew
auf der linken Seite durcho
ersetzen. Obwohl Sie c Speichern Sie ein Byte, indem SieEO
anstelle vond
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
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\|
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{_`
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^"_
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
+++++++++[>+++++>+<<-]>+++.>[<+.>-]<+++++++>>+++++++++++++[<+<+.+.>>-]<<+++++.+>[<+.+.>-]
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_
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.