Skriv et program eller en funksjon som skriver ut eller returnerer en streng av de alfanumeriske tegnene pluss understrek, i hvilken som helst rekkefølge . For å være presis, må følgende tegn skrives ut, og ikke mer :
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_
Når du skriver ut til stdout, er en valgfri etterfølgende ny linje tillatt etter utgangen din.
Innebygde konstanter som inneholder 9 eller flere av de ovennevnte tegnene er ikke tillatt.
Den korteste koden i byte vinner.
Dette er en veldig enkel utfordring, som jeg tror vil generere noen interessante svar likevel.
Leaderboards
Her er en Stack Snippet for å generere både en vanlig leaderboard og en oversikt av vinnere etter språk.
For å sikre at svaret ditt vises, kan du starte svaret ditt med en overskrift ved å bruke følgende Markdown-mal:
# Language Name, N bytes
der N
er størrelsen på innsendingen din. Hvis du forbedrer poengsummen din, kan du beholde gamle poengsummer i overskriften, ved å slå dem gjennom. For eksempel:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Hvis du vil inkludere flere tall i overskriften (f.eks. Fordi poengsummen din er summen av to filer, eller du vil liste tolk flagg straffer hver for seg), sørg for at den faktiske poengsummen er siste tallet i overskriften:
# Perl, 43 + 2 (-p flag) = 45 bytes
Du kan også lage språk navngi en lenke som deretter vises i ledertavlen:
# [><>](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 for utvidet diskusjon; denne samtalen er flyttet til chat .
Svar
Konveks, 9 byte
Ny metode! Også skjønte jeg at det er ganske nøyaktig det samme som Luis «svar, men i konveks, men jeg kom på dette uavhengig.
"{,®\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
Rubin, 26 byte
Tegn kan skrives ut i hvilken som helst rekkefølge? Ikke t tankene hvis jeg gjør det!
$><<(?0..?z).grep(/\w/)*""
Svar
Perl, 20 byte
Krever -E
uten ekstra kostnad .
say+a.._,A.._,_..9,_
Så, det opprinnelige svaret mitt (nedenfor) var litt for kjedelig . Det eneste jeg har klart å komme på, er det ovennevnte, det er nøyaktig det samme, men ser litt mer forvirrende ut … Det tilsvarer omtrent nøyaktig det følgende:
say a..z,A..Z,0..9,_
Jeg liker @ msh210 «s forslag i kommentarene, men de «er bare litt for lange!
Kommentarer
- +1. Litt mer interessant, men lenger er noen av disse , alle 27 byte:
say grep/\w/,map chr,1..122
||say map{chr=~/\w/;$&}1..122
||say map{chr=~s/\W//r}1..122
- @ msh210 Fortsatt kan ' ikke krympe dette mer … Klarte en 25 skjønt:
say chr=~/\w/g for 1..255
…
Svar
Cheddar, 31 27 byte
->97@"123+65@"91+48@"58+"_"
Dette viser @"
operatøren godt
Ikke fullført fordi jeg endelig ble stolt av å fikse @"
operatør. Feilen var det det genererte et Cheddar-område, ikke et JS-område, så det kunne ikke fungere ordentlig
Forklaring
@"
-operatøren var designet av @ CᴏɴᴏʀO «Bʀɪᴇɴ, og hva den gjør er å generere et strengområde fra LHS til RHS.Når den brukes som en enhetlig operatør, returnerer den ruten ved det gitte kodepunktet (som python «s chr
)
Ungolfed
-> 97 @" 123 + 65 @" 91 + 48 @" 58 + "_"
Svar
brainfuck, 58 byte
+++[[<+>->++<]>]<<[-<->]<<-.+<<++[->>+.>+.<<<]<--[->>.+<<]
Initialiserer tape 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 byte
_=>String.fromCharCode(...Array(123).keys()).replace(/\W/g,"")
Returnerer 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
, så bare 6 byte kortere enn en funksjon som returnerer strengen bokstavelig. Ja, den suger.
Kommentarer
- Du kan prøve å finne en streng som returnerer ønsket utdata.
- @gcampbell 60! (60 faktoriale) strenger kan ta litt tid å søke …
- Du kan bare bruke
atob
. - @gcampbell Jeg må ekskluder ikke-representerbare strenger på en eller annen måte.
- @gcampbell Det viser seg at btoa-versjonen uansett tar 62 byte: 45 for å kode 60 alfanumerikk, 3 ukodede tegn (inkludert
_
) og 14 for_=>atob("")+""
.
Svar
Haskell, 38 byte
"_":["a".."z"]++["A".."Z"]++["0".."9"]
Ingenting å forklare her.
Kommentarer
- spørsmål: hva ' er forskjellen mellom
:
og++
? - @Downgoat:
++
tar to strenger og sammenkobler dem.:
tar en røye og en streng og setter røya foran strengen."_"++['a'..'z']...
fungerer også, men er en byte lenger.
Svar
PowerShell v3 +, 35 33 byte
-join([char[]](1..127)-match"\w")
Konstruerer en dynamisk matrise 1..127
, kaster den som en char
matrise. At «s mates til -match
operatøren som jobber med regex \w
, som vil returnere alle elementene som samsvarer (dvs. nøyaktig alfanumerisk og understrek Vi innkapsler disse matriseelementene i en -join
for å pakke den sammen som en streng. Det som er igjen på rørledningen og utdata er implisitt.
Kommentarer
- Hei, det ' er ikke rettferdig. Min egen løsning er identisk, bortsett fra at jeg startet på
0
… - @Joey Gotta go fort. : D
- Spesielt for de trivielle og åpenbare løsningene, antar jeg 😉
Svar
V, 27 byte
i1122ñYpñvHgJ|éidd@"Í×
Dette svaret er fryktelig innviklet. Jeg legger ut 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:
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.
Kommentarer
- : D: D: D Cheddar er bundet med en golf-lang!
Svar
J, 30 29 28 byte
Lagret en byte takket være randomra!
~.u:95,;48 65 97+i."*10,,~26
Utgang:
~.u:95,;48 65 97+i."*10,,~26 _0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Forklaring
Jeg vil ikke gi en forklaring per se , men vil gi mellomliggende 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]
Uttrykket zip "aA0_" "zZ9_"
gir listen over sluttpunkter [("a","z"),("A","Z"),("0","9"),("_","_")]
. div id = «77c0d2706f»>
notasjon tar hver (x,y)
til den inkluderende \(x,y)->[x..y]
og sammenkobler resultatet s. Takk 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
notasjon lagrer to byte:do(x,y)<-zip"aA0_""zZ9_";[x..y]
Svar
C, 50 byte
Ring f()
uten noen argumenter.
f(n){for(n=128;--n;)isalnum(n)|n==95&&putchar(n);}
Skriver
zyxwvutsrqponmlkjihgfedcba_ZYXWVUTSRQPONMLKJIHGFEDCBA9876543210
Kommentarer
-
isalnum(n)|n==95&&putchar(n)
- Der ' s UB der. Du klarte ikke ' ikke de nødvendige argumentene.
- @orlp – Du brukte
putc
i stedet forputchar
.putc
forventer en strøm å skrive til også, som du ikke ' ikke passerte.Selve funksjonen fungerer bra (prøv å fjerneputc
helt, og det fungerer). - @owacoder Beklager!
- @QPaysTaxes at ' er feil.
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 svaret? Ser ut som det ' bryter reglene.
- @nicael hvilken regel?
- " Innebygde konstanter som inneholder 9 eller flere av de ovennevnte tegnene er ikke tillatt. " … Mangler jeg noe tydelig, @Leaky?
- Ja, at dette ikke ' ikke brukte noen innebygde konstanter.
- Ok, men dette er i det minste rart. Definitivt ber OP ikke ' deg om å kopiere og lime inn sekvensen, så ' er ikke interessant.
Svar
Python 3, 58 byte
print("_",*filter(str.isalnum,map(chr,range(123))),sep="")
Et fullstendig program som skrives ut til STDOUT.
Resultatet er: _0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Slik 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 tillatt, ville følgende ha vært 45 byte:
from string import* print("_"+printable[:62])
Kommentarer
-
print('_'+*filter(str.isalnum,map(chr,range(123))))
- @LeakyNun Det gir en syntaksfeil. Jeg tenkte å gjøre noe lignende med
print('_',*filter(str.isalnum,map(chr,range(123))))
, men det skriver ut skille mellomrom; OP sa i kommentarene at ' … ingen mellomrom er tillatt i utgangen i det hele tatt '. - Python 2 kan lagre en byte med denne tilnærmingen:
print''.join(filter(str.isalnum,map(chr,range(123)))),'_'
Svar
Mitt første forsøk på codegolf!
C #, 168 152 150 147 130 127 117 116 115 109 106 byte
for(var a="0";a<"~";a++){Console.Write(System.Text.RegularExpressions.Regex.IsMatch(a+"","\\w")?a+"":"");}
Tusen takk til aloisdg, AstroDan, Leaky Nun og Kevin Lau – ikke Kenny for all hjelpen i kommentarene.
Kommentarer
- Velkommen til PPCG! Fjern gjerne all plassen! Sjekk også Tips for golf i C # for noen tips.
- Flott – sparte meg 2 byte mer. Jeg ' begynner virkelig å like denne kodegolfen 🙂
- AFAIK,
\w
regex-klassen dekker alfanumerikk og også_
, noe som skal gjøre"\\w"
gyldig nok for din regex-matchfunksjon. - Koden din skal være en funksjon eller et komplett program ikke en uttalelse. Bruk også .NetFiddle til å dele en demonstrasjon av koden din 🙂
- " C # isn ' t det beste å codegolf " Jeg synes C # er morsom nok til å kode golf. Jeg synes det er et flott ordinært språk å leke med. Hvis du er her for å vinne, vil du miste. Definer målet ditt som å lære og ha det bra, så vil du vinne hele tiden.
Svar
Svar
Objekt Pascal, 85 83 73 byte
Bare vanlig objektpascal ved hjelp av et sett med tegn. Å skrive et komplett program i stedet for en prosedyre barberer 2 byte. Når du fjerner programnøkkelordet, barberes det 10 byte til.
var c:char;begin for c in["a".."z","A".."Z","0".."9","_"]do write(c);end.
Kommentarer
- Jeg har alltid vært og vil sannsynligvis gjøre det forveksles alltid av den nøyaktige klassifiseringen av Object Pascal. Turbo / Borland Pascal og FreePascal er absolutt glade uten det ubrukelige
program
søkeordet. - @manatwork Jeg gjorde ikke ' t vet at. Merkelig nok gjør det nå pascal konkurransedyktig her …
- Språket jeg vokste opp med. Jeg vet at det ennå ikke er død …
- @rexkogitans Ja, jeg lærte det på skolen, men kan ikke ' huske noe fra den gang … Jeg ' spiller med litt programmering igjen nå
Svar
bash – 47 37 byte
man sh|egrep -o \\w|sort -u|tr -d \\n
Utdata på systemet mitt er:
_0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
Takk til Digital Trauma for nyttige forslag.
På noen systemer kan du kanskje bruke ascii
i stedet for man sh
for å lagre en byte.
Kommentarer
-
man sh|egrep -io _\|\\w|sort -u|tr -d \\n
- @DigitalTrauma Takk!Eksperimenterte og fant ut at
\w
samsvarer med_
og er allerede uten sak, så det kan forkorte enda mer. -
env
i stedet forman sh
skal fungere i de fleste miljøer. Det gjør det på meg.$ env|egrep -o \\w|sort -u|tr -d \\n
– >0123456789ABCDEFGHIKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
. - Der ' s no
J
. My bad.
Svar
PHP, 40 byte
_0<?for(;$a++^9?$a^q:$a=A;)echo" $a"|$a;
Kommentarer
- +1 for fremragende. Sideanmerkning: PHP 7.2 gir advarsler om at fremtidige versjoner vil kaste feil for udefinerte konstanter. 🙁
Svar
Retina , 30 19 16 15 12 byte
Jeg endret originalt alfabetforsøk for denne siste versjonen. Hvert tegn skrives ut i løkke.
Den første linjen er tom.
; +T\`;w`w_
Utgang:
_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Takk til Leaky Nun for golf 4 byte av mitt siste forsøk.
Kommentarer
- I ' d si at
w
teller som en konstant som inneholder 9 eller flere av de nødvendige tegnene. Du ' vil sannsynligvis måtte utvide høyre side og erstattew
til venstre medo
. Selv om du en lagre en byte ved å brukeEO
i stedet ford
siden de bare inneholder 5 tegn hver. - @ mbomb007
w
inne i translitterasjonstrinnet har ingenting å gjøre regex. Det ' er en forkortelse som utvides til en liste over de nødvendige 63 tegnene. I det minste spør jeg ' orlp om denne saken, siden den ' er ganske forskjellig fra å bruke\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 Takk! Men jeg tror ikke nye linjer er tillatt som separatorer. Utfordringen sier " en streng av de alfanumeriske tegnene pluss understrek … og ikke mer "
- Så hvorfor kunne ikke ' t du gjør
8W:'\w'XX!
som jeg prøvde, men ' t fungerer - @ DrGreenEggsandIronMan Veldig bra spørsmål! La meg svare deg i chatten slik at jeg kan bruke litt flere tegn
Svar
Brachylog , 25 byte
"_"w9yrcw"A":"Z"ycL@l:Lcw
Dette skriver ut 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
utskrifter:
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
Kommentarer
- @bruker Innebygde konstanter som inneholder 9 eller flere av de ovennevnte tegnene, er ikke tillatt.
Svar
Pyth, 13 12 byte
s:#"\w"0rk\|
Finner alle tegn i U + 0000 til U + 007B som samsvarer med regex /\w/
.
O gir ut 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
.
alternativ tilnærming: 15 byte
ssrMc4"0:A[a{_`
genererer i utgangspunktet de nødvendige halv-inkluderende områdene: 0-:, A-[, a-{, _-`
.
Svar
CJam , 15 14 11 byte
4 byte av 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 ha kommentert, måtte jeg forbedre andres svar. Men siden jeg ikke kan, kan jeg like godt legge ut min egen. Da jeg begynte å 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])
Utgang:
_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Rediger: savnet sifrene første gang
Edit2, inspirert av denne Haskell-løsningen , dette F # -utdraget er 67 byte.
Seq.zip"aA0_""zZ9_"|>Seq.iter(fun(x,y)->Seq.iter(printf"%c")[x..y])
Utgang:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_
Svar
Hexagony, 33
"A}_8_47<=">({a/[email protected]!\356);");
Utvidet:
" A } _ 8 _ 4 7 < = " > ( { a / _ x . @ . 9 ! \ 3 5 6 ) ; " ) ; . . . .
Utgang:
aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ1203568479_
Merk at det er et tegn som ikke kan skrives ut 0x1A
som første byte i programmet. Dette får også den første raden i den utvidede sekskanten til å se litt av. Tusen takk til Martin for viser meg dette trikset, samt for å foreslå algoritmen for utskrift t han alfabetet!
Dette skriver ut alfabetet ved å lagre a
og A
på to kanter av en sekskant og tallet 26 på kanten av sekskanten som berører skjøten mellom bokstavene. Dette ser omtrent slik ut:
A \ / a | 26
Deretter går det inn i sløyfer som skriver ut bokstavene og deretter øker dem, og deretter reduserer tallet. Etter en iterasjon ville vi ha:
B \ / b | 25
Og så videre. Den lineære koden for initialiseringen er: 0x1A " A } a
. Den lineære koden for løkkene utenfor endringene i kontrollflyten er: ; ) " ; ) { ( " =
.
Når telleren når null, følger vi en annen vei for å skrive ut tallene og en understrek. Skrevet lineært er dette: x 3 5 6 8 4 7 9 ! ; { @
. Dette erstatter den nåværende minnekantverdien med tallet 1203568479 (merk at x
«s ASCII-kode er 120), som inneholder alle desimaltegnene. Vi skriver ut dette nummeret, og deretter bruker vi en fin funksjon av Hexagony: vi skriver ut nummeret mod 256 som et ASCII-tegn. Dette er bare 95, eller understreker.
Svar
Brainfuck, 114 103 98 90 76 71 byte
Nok en triviell (nå ikke -trivial) løsning, men denne gangen er BF!
Lagret 14 (!) byte takket være @primo.
Lagret 4 byte til takket være @primos forslag om å generere rekkevidde bakover, og jeg lagret en annen ved å øke den før jeg skrev ut for små bokstaver.
Ny (gjentakelse 4, 71):
+[--[<+++++++>->+<]>-]<<+++<--<-<-----<++++.+>>>[-<<.+<+.>>>]>[-<<.+>>]
Gammelt (verdier, 114):
-[----->+<]>--->++++++++++>--[----->+<]>-------.++>----[---->+<]>++>++++[->++++++<]>++[-<<.+<<.+>>>>]<<<<<<[-<.+>]
Gammelt (gjentakelse 1, 103):
++++++++++[[<+>->+<]>+++++++++++++++]<<[<]>>+>++++++++>>----->>-----.++<<<<<[->>>.+>>.+<<<<<]<[->>.+<<]
Gammel (gjentakelse 2, 90):
+++++++[[<+>->+<]>>+++[-<+++++++>]<]<<[<]>+++>-->->----->++++.++<<<[->>.+>.+<<<]<[->>.+<<]
Gammel (gjentakelse 3, 76):
+[[<+++++++>->+<]>+++]<<[<]>+++>-->->----->++++.++<<<[->>.+>.+<<<]<[->>.+<<]
Forutsetter 8-biters innpakningsceller og innpakningsminne. Jeg brukte Prøv det online .
Alt skrives ut _AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789
Først initialiserer denne delen
+[--[<+++++++>->+<]>-]<<
båndet med disse verdier
[91, 70, 49, 21, 7] ^
Dette fungerer fordi gjentakelsesforholdet jeg modellerte i utgangspunktet er f(x) = 7 * (3 * x + 1)
, bakover. Se @primo «s Hello, World! Answer for en forklaring på hva en gjentakelsesrelasjon er.
Så er det ganske enkelt å endre disse verdiene til nyttige. (og skriv ut understrek)
Code: +++<--<-<-----<++++.+ Tape: [96, 65, 48, 26, 10] ^
Deretter bruker de enkle løkkene verdiene til å skrive ut resten av tegnene. Jeg sparer 1 byte ved å ha en økning før utskriften.
>>>[-<<.+<+.>>>]>[-<<.+>>]
Jeg trenger virkelig å finne en kortere sekvensgenerering.
Jeg fant et gjentakelsesforhold som ser ut til å fungere bra, men det kan være en kortere en med mindre jakt og hakke.
Jeg brukte en lineær regresjonskalkulator for å finne det som skal være kortest mulig lineær gjentakelsesrelasjon, så jeg burde nok finne en annen formel hvis jeg vil forbedre meg.
@primo forbedret virkelig gjentakelsesrelasjonen mye, takk.
Kommentarer
- Hva med en bakoverkonstruksjon?
+[--[<+++++++>->+<]>-]
- @primo Wow! Hvordan fungerer det?
- 3 er ujevn, så det går hele 256 ganger. Ved å avslutte med
>-]
, kan du være sikker på at den siste terminen blir 1 (x7). Egentlig bør du sannsynligvis starte med-
, det avsluttes mye raskere.
Svar
Sesos , 17 byte
00000000: a854be 2cbc9e 71d597 14bc56 1ad99e 713b .T.,..q....V...q;
Utgang
0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz_
Prøv det online! Sjekk Feilsøking for å se den genererte binære koden.
Slik fungerer den
Den binære filen ovenfor er generert ved å 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 i ferd med å legge ut en løsning som ligner veldig på din .
- Alike sinn synes bra !
- @LeakyNun Hm, ganske sent, men det ser ut til at din er 3 byte kortere …
- @EriktheOutgolfer Sesos pleide å være kodet på en mindre effektiv måte. Begge programmene er 17 byte lange nå.
- @Dennis Ah, vel, TIO-cachen kan til tider være forvirrende.
A,'[,_el^'_