Skriv et program eller en funktion, der udskriver eller returnerer en streng af de alfanumeriske tegn plus understregning, i en hvilken som helst rækkefølge . For at være præcis skal følgende tegn udføres, og ikke mere :
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_
Når du udskriver til stdout, er en valgfri efterfølgende ny linje tilladt efter din output.
Indbyggede konstanter, der indeholder 9 eller flere af ovenstående tegn er ikke tilladt.
Den korteste kode i byte vinder.
Dette er en meget enkel udfordring, som jeg tror alligevel vil generere nogle interessante svar.
Leaderboards
Her er et Stack Snippet, der genererer både et almindeligt leaderboard og et overblik af vindere efter sprog.
For at sikre, at dit svar vises, skal du starte dit svar med en overskrift ved hjælp af følgende Markdown-skabelon:
# Language Name, N bytes
hvor N
er størrelsen på din indsendelse. Hvis du forbedrer din score, kan du kunne holde gamle scores i overskriften ved at slå dem igennem. For eksempel:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Hvis der, vil du medtage flere numre i din overskrift (f.eks. Fordi din score er summen af to filer, eller du vil liste tolk flag sanktioner separat), skal du sørge for, at den faktiske score er det sidste nummer i overskriften:
# Perl, 43 + 2 (-p flag) = 45 bytes
Du kan også lave sprognavn et link, som derefter vises i leaderboard-kodestykket:
# [><>](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
- Kommentarer er ikke til udvidet diskussion; denne samtale er flyttet til chat .
Svar
Konveks, 9 byte
Ny metode! Også, jeg indså, at det er stort set nøjagtigt det samme som Luis “svar, men i konveks, men jeg kom på dette uafhængigt.
"{,®\W"Oò
Forklaring:
"{, Array of chars from NUL to "z ®\W" Regex to match non-word characters Oò Replace all matches with emtpy string
Gammel løsning, 10 byte :
A,"[,_¬^"_
Forklaring:
A, 0-9 "[,_¬^ A-Za-z "_ _
Kommentarer
Svar
Ruby, 26 byte
Tegn kan udskrives i en hvilken som helst rækkefølge? husk, hvis jeg gør det!
$><<(?0..?z).grep(/\w/)*""
Svar
Perl, 20 byte
Kræver -E
uden ekstra omkostninger .
say+a.._,A.._,_..9,_
Så mit originale svar (nedenfor) var lidt for kedeligt . Det eneste, jeg har formået at komme med, er ovenstående, at det er nøjagtigt det samme, men ser lidt mere forvirrende ud … Det svarer stort set nøjagtigt til nedenstående:
say a..z,A..Z,0..9,_
Jeg kan godt lide @ msh210 “s forslag i kommentarerne, men de “er bare lidt for lange!
Kommentarer
- +1. Lidt mere interessant, men længere er nogen af disse , 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 Stadig kan ' ikke formindske dette mere … Administrerede dog en 25:
say chr=~/\w/g for 1..255
…
Svar
Cheddar, 31 27 bytes
->97@"123+65@"91+48@"58+"_"
Dette viser @"
operatøren godt
Ikke-komplet, fordi jeg endelig blev stolt af at rette @"
operatør. Fejlen var det det genererede et Cheddar-interval ikke et JS-interval, så det kunne ikke fungere korrekt
Forklaring
@"
-operatøren var designet af @ CᴏɴᴏʀO “Bʀɪᴇɴ, og hvad det gør er at generere et strengområde fra LHS til RHS.Når den bruges som en unormal operator, returnerer den tegnet ved det givne kodepunkt (som python “s chr
)
Ungolfed
-> 97 @" 123 + 65 @" 91 + 48 @" 58 + "_"
Svar
brainfuck, 58 bytes
+++[[<+>->++<]>]<<[-<->]<<-.+<<++[->>+.>+.<<<]<--[->>.+<<]
Initialiserer bånd til 3 · 2 n og fungerer derfra.
+++[[<+>->++<]>] initialize the tape | 0 | 3 | 6 | 12 | 24 | 48 | 96 | 192 | 128 | 0 | 0 | ^ <<[-<->] subract 128 from 192 | 0 | 3 | 6 | 12 | 24 | 48 | 96 | 64 | 0 | 0 | 0 | ^ <<-.+<<++ ouput "_"; increment 24 twice | 0 | 3 | 6 | 12 | 26 | 48 | 96 | 64 | 0 | 0 | 0 | ^ [->>+.>+.<<<] output aAbBcC ~ zZ | 0 | 3 | 6 | 12 | 0 | 48 | 122 | 90 | 0 | 0 | 0 | ^ <--[->>.+<<] decrement 12 twice; output 0 ~ 9 | 0 | 3 | 6 | 0 | 0 | 58 | 122 | 90 | 0 | 0 | 0 | ^
Svar
JavaScript (ES6), 62 bytes
_=>String.fromCharCode(...Array(123).keys()).replace(/\W/g,"")
Returnerer 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
, så kun 6 byte kortere end en funktion, der returnerer strengen bogstavelig. Ja, det suger.
Kommentarer
- Du kan prøve at finde en streng, for hvilken
btoa
returnerer den krævede output. - @gcampbell 60! (60 faktorielle) strenge kan tage lidt tid at søge …
- Du kan bare bruge
atob
. - @gcampbell Jeg skal ekskluder ikke-repræsentative strenge på en eller anden måde.
- @gcampbell Det viser sig, at btoa-versionen alligevel tager 62 bytes: 45 for at kode 60 alfanumerik, 3 ukodede tegn (inklusive
_
) og 14 for_=>atob("")+""
.
Svar
Haskell, 38 bytes
"_":["a".."z"]++["A".."Z"]++["0".."9"]
Intet at forklare her.
Kommentarer
- spørgsmål: hvad ' er forskellen mellem
:
og++
? - @Downgoat:
++
tager to strenge og sammenkæder dem.:
tager en char og en streng og lægger char foran strengen."_"++['a'..'z']...
fungerer også, men er en byte længere.
Svar
PowerShell v3 +, 35 33 byte
-join([char[]](1..127)-match"\w")
Konstruerer et dynamisk array 1..127
, kaster det som et char
array. At “s tilføres til -match
operatøren, der arbejder på regex \w
, som returnerer alle de elementer, der matcher ). Vi indkapsler disse matrixelementer i en -join
for at samle den som en streng. Det er tilbage på pipeline og output er implicit.
Kommentarer
- Hej, det ' er ikke retfærdigt. Min egen løsning er identisk, medmindre jeg startede ved
0
… - @Joey Gotta go fast. : D
- Især til de trivielle og indlysende løsninger, antager jeg 😉
Svar
V, 27 byte
i1122ñYpñvHgJ|éidd@"Í×
Dette svar er forfærdeligt indviklet. Jeg sender en forklaring senere.
Hexdump:
00000000: 6916 1631 1b31 3232 f159 7001 f176 4867 i..1.122.Yp..vHg 00000010: 4a7c e969 6464 4022 1bcd d7 J|.idd@"...
Forklaring:
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 er bundet med et golfspil!
Svar
J, 30 29 28 bytes
Gemte en byte takket være randomra!
~.u:95,;48 65 97+i."*10,,~26
Output:
~.u:95,;48 65 97+i."*10,,~26 _0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Forklaring
Jeg vil ikke give en forklaring per se , men vil give mellemliggende resultater.
10,,~26 10 26 26 i. b. 0 1 _ _ * b. 0 0 0 0 i."* b. 0 i."*2 3 4 0 1 0 0 0 1 2 0 0 1 2 3 i. 2 0 1 i. 3 0 1 2 i. 4 0 1 2 3 i."*10,,~26 0 1 2 3 4 5 6 7 8 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 0 1 2 + i."*10,,~26 0 1 2 3 4 5 6 7 8 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 48 65 97+i."*10,,~26 48 49 50 51 52 53 54 55 56 57 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 ;48 65 97+i."*10,,~26 48 49 50 51 52 53 54 55 56 57 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 95,;48 65 97+i."*10,,~26 95 48 49 50 51 52 53 54 55 56 57 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 ... u:95,;48 65 97+i."*10,,~26 _01234567890000000000000000ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ~.u:95,;48 65 97+i."*10,,~26 _0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Svar
Haskell, 31 byte
do(x,y)<-zip"aA0_""zZ9_";[x..y]
Udtrykket zip "aA0_" "zZ9_"
giver listen over slutpunkter [("a","z"),("A","Z"),("0","9"),("_","_")]
. div id = “77c0d2706f”>
notation tager hver (x,y)
til den inklusive \(x,y)->[x..y]
og sammenkæder resultatet s. Tak til Anders Kaseorg for to byte med do
i stedet for >>=
.
Sammenlign med alternativer:
do(x,y)<-zip"aA0_""zZ9_";[x..y] zip"aA0_""zZ9_">>= \(x,y)->[x..y] f(x,y)=[x..y];f=<<zip"aA0_""zZ9_" id=<<zipWith enumFromTo"aA0_""zZ9_" [c|(a,b)<-zip"aA0_""zZ9_",c<-[a..b]] f[x,y]=[x..y];f=<<words"az AZ 09 __"
Kommentarer
-
do
notation gemmer to bytes:do(x,y)<-zip"aA0_""zZ9_";[x..y]
Svar
C, 50 byte
Ring til f()
uden nogen argumenter.
f(n){for(n=128;--n;)isalnum(n)|n==95&&putchar(n);}
Udskriver
zyxwvutsrqponmlkjihgfedcba_ZYXWVUTSRQPONMLKJIHGFEDCBA9876543210
Kommentarer
-
isalnum(n)|n==95&&putchar(n)
- Der ' er UB der. Du sendte ikke ' ikke de krævede argumenter.
- @orlp – Du brugte
putc
i stedet forputchar
.putc
forventer, at en strøm også skal skrives til, som du ikke ' passerede.Selve funktionen fungerer fint (prøv at fjerne dinputc
helt, og den fungerer). - @owacoder Ups!
- @QPaysTaxes that ' er forkert.
If the number of arguments does not equal the number of parameters, the behavior is undefined.
6.5.2.2/6, se N1570 .
Svar
/// , 63 byte
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_
Kommentarer
- Hvordan er det gyldige svar? Ser ud til at det ' overtræder reglerne.
- @nicael hvilken regel?
- " Indbyggede konstanter, der indeholder 9 eller flere af ovenstående tegn, er ikke tilladt. " … Mangler jeg noget indlysende, @Lækagtigt?
- Ja, at dette ikke ' ikke brugte indbyggede konstanter.
- Ok, men det er i det mindste underligt. Absolut OP beder ' dig ikke om at kopiere og indsætte sekvensen, så ' ikke er interessant.
Svar
Python 3, 58 byte
print("_",*filter(str.isalnum,map(chr,range(123))),sep="")
Et komplet program der udskrives til STDOUT.
Outputtet er: _0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Sådan fungerer det
map(chr,range(123)) Yield an iterator containing all ascii characters with code-points in [0,122]... *filter(str.isalnum,...) ...keep characters if alphanumeric and unpack into tuple... print("_",...,sep="") ...add underscore and print all characters with no separating space
Hvis strengkonstanter var tilladt, ville følgende have været 45 byte:
from string import* print("_"+printable[:62])
Kommentarer
-
print('_'+*filter(str.isalnum,map(chr,range(123))))
- @LeakyNun Det giver en syntaksfejl. Jeg tænkte på at gøre noget lignende med
print('_',*filter(str.isalnum,map(chr,range(123))))
, men det udskriver adskillende mellemrum; OP sagde i kommentarerne, at ' … der er slet ikke tilladt mellemrum i output '. - Python 2 kan gemme en byte med denne tilgang:
print''.join(filter(str.isalnum,map(chr,range(123)))),'_'
Svar
Mit første forsøg på 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+"":"");}
Mange tak til aloisdg, AstroDan, Leaky Nun og Kevin Lau – ikke Kenny for al hjælp i kommentarer.
Kommentarer
- Velkommen til PPCG! Du er velkommen til at fjerne al plads! Tjek også Tips til golf i C # for nogle tip.
- Fremragende – sparede mig 2 byte mere. Jeg ' Jeg begynder virkelig at kunne lide denne codegolf 🙂
- AFAIK,
\w
regex-klassen dækker alfanumerik og også_
, hvilket skulle gøre"\\w"
gyldig nok til din regex-matchfunktion. - Din kode skal være en funktion eller et komplet program ikke en erklæring. Brug også .NetFiddle til at dele en demonstration af din kode 🙂
- " C # isn ' t bedst at codegolf " Jeg finder C # sjovt nok til at kode golf. Jeg synes, det er et godt almindeligt sprog at lege med. Hvis du er her for at vinde, mister du. Definer dit mål som at lære og have det sjovt, så vinder du hele tiden.
Svar
Svar
Objekt Pascal, 85 83 73 byte
Enkel objektpascal ved hjælp af et sæt tegn. At skrive et komplet program i stedet for en procedure barberer 2 byte. Fjernelse af programmets nøgleord barberer yderligere 10 byte.
var c:char;begin for c in["a".."z","A".."Z","0".."9","_"]do write(c);end.
Kommentarer
- Jeg har altid været og vil sandsynligvis også altid forveksles med den nøjagtige klassificering af Object Pascal. Turbo / Borland Pascal og FreePascal er bestemt glade uden det ubrugelige
program
søgeord. - @manatwork Jeg gjorde ikke ' t ved det. Mærkeligt nok gør det nu pascal konkurrencedygtigt her …
- Det sprog, jeg voksede op med. Jeg ved, at det endnu ikke er død …
- @rexkogitans Ja, jeg lærte det i skolen, men kan ' ikke huske noget fra dengang … Jeg ' spiller nu med noget programmering igen
Svar
bash – 47 37 byte
man sh|egrep -o \\w|sort -u|tr -d \\n
Output på mit system er:
_0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
Tak til Digital Trauma for nyttige forslag.
På nogle systemer kan du muligvis bruge ascii
i stedet for man sh
for at gemme en byte.
Kommentarer
-
man sh|egrep -io _\|\\w|sort -u|tr -d \\n
- @DigitalTrauma Tak!Eksperimenterede og fandt ud af, at
\w
matcher_
og er allerede store og små bogstaver, så det kunne forkorte endnu mere. -
env
i stedet forman sh
skal fungere i de fleste miljøer. Det gør det på min.$ env|egrep -o \\w|sort -u|tr -d \\n
– >0123456789ABCDEFGHIKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
. - Der ' er nej
J
. My bad.
Svar
PHP, 40 byte
_0<?for(;$a++^9?$a^q:$a=A;)echo" $a"|$a;
Kommentarer
- +1 for fremragende kvalitet. Sidebemærkning: PHP 7.2 giver advarsler om, at fremtidige versioner vil kaste fejl for udefinerede konstanter. 🙁
Svar
Retina , 30 19 16 15 12 byte
Jeg ændrede min originalt alfabetforsøg til denne seneste version. Hvert tegn udskrives i en løkke.
Den første linje er tom.
; +T\`;w`w_
Output:
_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Tak til Leaky Nun for golf 4 bytes fra mit seneste forsøg.
Kommentarer
- I ' siger, at
w
tæller som en konstant, der indeholder 9 eller flere af de krævede tegn. Du ' skal sandsynligvis udvide højre side og erstattew
til venstre medo
. Selvom du en gem en byte ved at brugeEO
i stedet ford
, da de kun indeholder 5 tegn hver. - @ mbomb007
w
inde i translitterationstrinnet har intet at gøre regex. Det ' er en stenografi, der udvides til en liste med de krævede 63 tegn. I det mindste spørger jeg ' specifikt om denne sag, da den ' er ret forskellig fra at bruge\w
i en regex.
Svar
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
Kommentarer
- 2 byte kortere:
8W:'\w'XX
- @DrGreenEggsandIronMan Tak! Men jeg tror, at nye linjer ikke er tilladt som separatorer. Udfordringen siger " en streng af de alfanumeriske tegn plus understregning … og ikke mere "
- Så hvorfor kunne ikke ' t gør du
8W:'\w'XX!
som jeg prøvede, men ' t fungerer - @ DrGreenEggsandIronMan Meget godt spørgsmål! Lad mig svare dig i chat , så jeg kan bruge lidt flere tegn
Svar
Brachylog , 25 byte
"_"w9yrcw"A":"Z"ycL@l:Lcw
Dette udskriver følgende til STDOUT
:
_9876543210abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
Forklaring
"_"w Write "_" 9y Get the list [0:1:2:3:4:5:6:7:8:9] rcw Reverse it, concatenate into one number, write "A":"Z"y Get the list of all uppercase letters cL Concatenate into a single string L @l:Lcw Concatenate L to itself lowercased and write
Svar
Dyalog APL , 18 byte
∊"\w"⎕S"&"⎕UCS⍳255
udskrifter:
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
Kommentarer
- @bruger Indbyggede konstanter, der indeholder 9 eller flere af ovenstående tegn, er ikke tilladt.
Svar
Pyth, 13 12 byte
s:#"\w"0rk\|
Finder alle tegn i U + 0000 til U + 007B, der matcher regex /\w/
.
O udgiver 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
.
alternativ tilgang: 15 byte
ssrMc4"0:A[a{_`
genererer grundlæggende de krævede områder, der inkluderer halvdelen: 0-:, A-[, a-{, _-`
.
Svar
CJam , 15 14 11 byte
4 byte fra takket være @FryAmTheEggman og @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
Svar
Brainfuck, 89 byte
+++++++++[>+++++>+<<-]>+++.>[<+.>-]<+++++++>>+++++++++++++[<+<+.+.>>-]<<+++++.+>[<+.+.>-]
Detaljer:
+++++++++[>+++++>+<<-]>+++. Goes to "0" while remembering a 9 for the 9 other numbers [<+.>-] Simply prints for the next 9 characters <+++++++> Moves it 7 space to the letters >+++++++++++++ Saves a 13 [<+<+.+.>>-] Prints 2 char at a time while making a second "13" space <<+++++.+> Moves 5, prints "_" and moves to the lowercases [<+.+.>-] And again the double print
Hvis jeg kunne have kommenteret, skulle jeg forbedre andres svar. Men da jeg ikke kan t, kan jeg lige så godt sende min egen. Da jeg begyndte at skrive dette, var den laveste BF en 96 lang.
Svar
F #, 50 59 byte
Seq.iter(printf"%c"<<char)(95::[48..57]@[65..90]@[97..122])
Output:
_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Rediger: savnede cifrene første gang
Edit2, inspireret af denne Haskell-løsning , dette F # uddrag er 67 bytes.
Seq.zip"aA0_""zZ9_"|>Seq.iter(fun(x,y)->Seq.iter(printf"%c")[x..y])
Output:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_
Svar
Hexagony, 33
"A}_8_47<=">({a/[email protected]!\356);");
Udvidet:
" A } _ 8 _ 4 7 < = " > ( { a / _ x . @ . 9 ! \ 3 5 6 ) ; " ) ; . . . .
Output:
aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ1203568479_
Bemærk, at der er et tegn, der ikke kan udskrives 0x1A
som programmets første byte. Dette får også den første række i den udvidede sekskant til at ligne off. Mange tak til Martin for viser mig dette trick såvel som for at foreslå algoritmen til udskrivning af t han alfabet!
Dette udskriver alfabetet ved at gemme a
og A
på to kanter af en sekskant og tallet 26 på kanten af sekskanten, der berører leddet mellem bogstaverne. Dette ser sådan ud:
A \ / a | 26
Derefter indtaster det en sløjfe, der udskriver bogstaverne og derefter forøger dem og derefter reducerer antallet. Efter en iteration ville vi have:
B \ / b | 25
Og så videre. Den lineære kode til initialiseringen er: 0x1A " A } a
. Den lineære kode for sløjferne uden for ændringer i kontrolflowet er: ; ) " ; ) { ( " =
.
Når tælleren når nul, følger vi en anden sti for at udskrive tallene og en understreg. Linjært er dette: x 3 5 6 8 4 7 9 ! ; { @
. Dette erstatter den nuværende hukommelseskants værdi med tallet 1203568479 (bemærk, at x
“s ASCII-kode er 120), som indeholder alle decimalcifrene. Vi udskriver dette nummer, og derefter bruger vi et pænt træk ved Hexagony: vi udskriver nummeret mod 256 som et ASCII-tegn. Dette er bare tilfældet med 95 eller understreger.
Svar
Brainfuck, 114 103 98 90 76 71 byte
En anden triviel (nu ikke -trivial) løsning, men denne gang er BF!
Gemt 14 (!) bytes takket være @primo.
Gemt 4 bytes mere takket være @primos forslag om at generere rækkevidde baglæns, og jeg gemte en anden ved at øge, inden jeg udskriver til små bogstaver.
Ny (gentagelse 4, 71):
+[--[<+++++++>->+<]>-]<<+++<--<-<-----<++++.+>>>[-<<.+<+.>>>]>[-<<.+>>]
Gammel (værdier, 114):
-[----->+<]>--->++++++++++>--[----->+<]>-------.++>----[---->+<]>++>++++[->++++++<]>++[-<<.+<<.+>>>>]<<<<<<[-<.+>]
Gammel (gentagelse 1, 103):
++++++++++[[<+>->+<]>+++++++++++++++]<<[<]>>+>++++++++>>----->>-----.++<<<<<[->>>.+>>.+<<<<<]<[->>.+<<]
Gammel (gentagelse 2, 90):
+++++++[[<+>->+<]>>+++[-<+++++++>]<]<<[<]>+++>-->->----->++++.++<<<[->>.+>.+<<<]<[->>.+<<]
Gammel (gentagelse 3, 76):
+[[<+++++++>->+<]>+++]<<[<]>+++>-->->----->++++.++<<<[->>.+>.+<<<]<[->>.+<<]
Antager 8 bit indpakningsceller og indpakningshukommelse. Jeg brugte Prøv det online .
Alle udskrives _AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789
Først initialiserer denne del
+[--[<+++++++>->+<]>-]<<
båndet med disse værdier
[91, 70, 49, 21, 7] ^
Dette fungerer, fordi den gentagelsesrelation, jeg grundlæggende modellerede, er f(x) = 7 * (3 * x + 1)
, baglæns. Se @primo “s Hello, World! Answer for en forklaring på, hvad en gentagelsesrelation er.
Derefter er det ret simpelt at ændre disse værdier til nyttige. (og udskriv understregningen)
Code: +++<--<-<-----<++++.+ Tape: [96, 65, 48, 26, 10] ^
Derefter bruger de enkle sløjfer værdierne til at udskrive resten af tegn. Jeg gemmer 1 byte ved at have en forøgelse inden udskriften.
>>>[-<<.+<+.>>>]>[-<<.+>>]
Jeg er virkelig nødt til at finde en kortere sekvensgeneration.
Jeg fandt en gentagelsesforhold, der ser ud til at fungere godt, men der kan være en kortere med w / mindre jagt og hakke.
Jeg brugte en lineær regressionsberegner for at finde ud af, hvad der skal være den kortest mulige lineære gentagelsesrelation, så jeg burde sandsynligvis finde en anden formel, hvis jeg vil forbedre.
@primo forbedrede virkelig gentagelsesrelationen meget, tak.
Kommentarer
- Hvad med en bagudkonstruktion?
+[--[<+++++++>->+<]>-]
- @primo Wow! Hvordan fungerer det?
- 3 er ujævn, så det løber hele 256 gange. Ved at slutte med
>-]
, kan du være sikker på, at den sidste term bliver 1 (x7). Faktisk skal du sandsynligvis starte med-
, det slutter meget hurtigere.
Svar
Sesos , 17 byte
00000000: a854be 2cbc9e 71d597 14bc56 1ad99e 713b .T.,..q....V...q;
Output
0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz_
Prøv det online! Kontroller Fejlfinding for at se den genererede binære kode.
Sådan fungerer det
Den binære fil ovenfor er genereret ved at samle følgende SASM-kode.
add 48 ; Set cell 0 to 48 ("0"). fwd 1 ; Advance to cell 1. add 10 ; Set cell 1 to 10. jmp ; Set an entry marker and jump to the jnz instruction. rwd 1 ; Retrocede to cell 0. put ; Print its content (initially "0"). add 1 ; Increment cell 0 ("0" -> "1", etc.). fwd 1 ; Advance to cell 1. sub 1 ; Decrement cell 1. jnz ; While cell 1 in non-zero, jump to "rwd 1". ; This loop will print "0123456789". rwd 1 ; Retrocede to cell 0, which holds 48 + 10 = 58. add 7 ; Set cell 0 to 65 ("A"). fwd 1 ; Advance to cell 1. add 26 ; Set cell 1 to 26. jmp ; Set an entry marker and jump to the jnz instruction. rwd 1 ; Retrocede to cell 0. put ; Print its content (initially "A"). add 32 ; Add 32 to convert to lowercase ("A" -> "a", etc.). put ; Print the cell"s content. sub 31 ; Subtract 31 to switch to the next uppercase letter ("a" -> "B", etc.). fwd 1 ; Advance to cell 1. sub 1 ; Decrement cell 1. jnz ; While cell 1 in non-zero, jump to "rwd 1". ; This loop will print "AaBb...YyZz". rwd 1 ; Retrocede th cell 0, which holds 65 + 26 = 91. add 4 ; Set cell 0 to 95 ("_"). put ; Print its content.
Kommentarer
- Wow, jeg var ved at sende en løsning, der ligner din .
- Lige sind synes godt !
- @LeakyNun Hm, lidt sent, men det ser ud til, at din er 3 byte kortere …
- @EriktheOutgolfer Sesos blev tidligere kodet på en mindre effektiv måde. Begge programmer er 17 bytes lange nu.
- @Dennis Ah, ja, TIO-cachen kan til tider være forvirrende.
A,'[,_el^'_