Skriv ett program eller en funktion som skriver ut eller returnerar en sträng av de alfanumeriska tecknen plus understrykning, i valfri ordning . För att vara exakt måste följande tecken matas ut, och inte mer :
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_
När du skriver ut till stdout är en valfri efterföljande ny linje tillåten.
Inbyggda konstanter som innehåller 9 eller fler av ovanstående tecken tillåts inte.
Kortaste kod i byte vinner.
Detta är en väldigt enkel utmaning, vilket jag tror kommer att generera några intressanta svar ändå.
Leaderboards
Här är en Stack Snippet för att generera både en vanlig leaderboard och en översikt av vinnare efter språk.
För att säkerställa att ditt svar dyker upp, bör du svara med en rubrik med följande Markdown-mall:
# Language Name, N bytes
där N
är storleken på ditt bidrag. Om du förbättrar din poäng kan du behålla gamla poäng i rubriken genom att slå igenom dem. Till exempel:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Om du vill inkludera flera nummer i rubriken (t.ex. för att din poäng är summan av två filer eller om du vill lista tolk flagga straffar separat), se till att den faktiska poängen är sista numret i rubriken:
# Perl, 43 + 2 (-p flag) = 45 bytes
Du kan också göra språknamn en länk som sedan kommer att visas i leaderboard-kodavsnittet:
# [><>](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 är inte för längre diskussion; den här konversationen har flyttats till chatt .
Svar
Konvex, 9 byte
Ny metod! Jag insåg också att det är ganska mycket exakt samma som Luis ”svar men i konvex, men jag kom fram till detta självständigt.
"{,®\W"Oò
Förklaring:
"{, Array of chars from NUL to "z ®\W" Regex to match non-word characters Oò Replace all matches with emtpy string
Gammal lösning, 10 byte :
A,"[,_¬^"_
Förklaring:
A, 0-9 "[,_¬^ A-Za-z "_ _
Kommentarer
Svar
Ruby, 26 byte
Tecken kan skrivas ut i valfri ordning? tänk om jag gör det!
$><<(?0..?z).grep(/\w/)*""
Svar
Perl, 20 byte
Kräver -E
utan extra kostnad .
say+a.._,A.._,_..9,_
Så mitt ursprungliga svar (nedan) var lite för tråkigt . Det enda jag har lyckats komma med är ovanstående, det är exakt detsamma, men ser lite mer förvirrande ut … Det motsvarar ungefär exakt följande:
say a..z,A..Z,0..9,_
Jag gillar @ msh210 ”s förslag i kommentarerna, men de ”är bara lite för långa!
Kommentarer
- +1. Något mer intressant men längre är något av dessa , alla 27 byte:
say grep/\w/,map chr,1..122
||say map{chr=~/\w/;$&}1..122
||say map{chr=~s/\W//r}1..122
- @ msh210 Fortfarande kan ’ inte krympa detta mer … Hanterade en 25 men:
say chr=~/\w/g for 1..255
…
Svar
Cheddar, 31 27 byte
->97@"123+65@"91+48@"58+"_"
Detta visar @"
väl
Avslutar inte eftersom jag äntligen blev stolt över att fixa @"
operatör. Felet var det det genererade ett Cheddar-intervall, inte ett JS-intervall, så det kunde inte fungera ordentligt
Förklaring
@"
designad av @ CᴏɴᴏʀO ”Bʀɪᴇɴ, och vad den gör är att generera ett strängområde från LHS till RHS.När den används som en enhetlig operatör returnerar den char vid den angivna kodpunkten (som python ”s chr
)
Ungolfed
-> 97 @" 123 + 65 @" 91 + 48 @" 58 + "_"
Svar
brainfuck, 58 bytes
+++[[<+>->++<]>]<<[-<->]<<-.+<<++[->>+.>+.<<<]<--[->>.+<<]
Initierar tejpa till 3 · 2 n och fungerar därifrån.
+++[[<+>->++<]>] 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,"")
Returnerar 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
, så bara 6 byte kortare än en funktion som returnerar strängen bokstavligt. Ja, det suger.
Kommentarer
- Du kan försöka hitta en sträng för vilken
btoa
returnerar den önskade utgången. - @gcampbell 60! (60 faktiska) strängar kan ta lite tid att söka …
- Du kan bara använda
atob
. - @gcampbell Jag måste utesluter på något sätt orepresenterbara strängar.
- @gcampbell Det visar sig att btoa-versionen ändå tar 62 byte: 45 för att koda 60 alfanumeriker, 3 okodade tecken (inklusive
_
) och 14 för_=>atob("")+""
.
Svar
Haskell, 38 byte
"_":["a".."z"]++["A".."Z"]++["0".."9"]
Inget att förklara här.
Kommentarer
- fråga: vad ’ är skillnaden mellan
:
och++
? - @Downgoat:
++
tar två strängar och sammanfogar dem.:
tar en karaktär och en sträng och sätter karaktären framför strängen."_"++['a'..'z']...
fungerar också men är en byte längre.
Svar
PowerShell v3 +, 35 33 byte
-join([char[]](1..127)-match"\w")
Konstruerar en dynamisk matris 1..127
, kastar den som en char
-matris. Det ”matas till -match
-operatören som arbetar på regex \w
, vilket returnerar alla element som matchar (dvs. exakt alfanumeriskt och understryker ). Vi kapslar in dessa arrayelement i en -join
för att buntas upp som en sträng. Det som är kvar på pipeline och output är implicit.
Kommentarer
- Hej, det ’ är inte rättvist. Min egen lösning är identisk förutom att jag började på
0
… - @Joey Gotta go fast. : D
- Speciellt för de triviala och uppenbara lösningarna antar jag 😉
Svar
V, 27 byte
i1122ñYpñvHgJ|éidd@"Í×
Detta svar är hemskt invecklat. Jag lägger upp en förklaring senare.
Hexdump:
00000000: 6916 1631 1b31 3232 f159 7001 f176 4867 i..1.122.Yp..vHg 00000010: 4a7c e969 6464 4022 1bcd d7 J|.idd@"...
Förklaring:
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 är knuten till en golfspel!
Svar
J, 30 29 28 byte
Sparade en byte tack vare randomra!
~.u:95,;48 65 97+i."*10,,~26
Output:
~.u:95,;48 65 97+i."*10,,~26 _0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Förklaring
Jag ger inte en förklaring i sig men kommer att ge mellanresultat.
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]
Uttrycket zip "aA0_" "zZ9_"
ger en lista över slutpunkter [("a","z"),("A","Z"),("0","9"),("_","_")]
. div id = ”77c0d2706f”>
notation tar varje (x,y)
till det inkluderande \(x,y)->[x..y]
och sammanfogar resultatet s. Tack till Anders Kaseorg för två byte med do
istället för >>=
.
Jämför med alternativ:
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 sparar två byte:do(x,y)<-zip"aA0_""zZ9_";[x..y]
Svar
C, 50 byte
Ring f()
utan några argument.
f(n){for(n=128;--n;)isalnum(n)|n==95&&putchar(n);}
Skriver ut
zyxwvutsrqponmlkjihgfedcba_ZYXWVUTSRQPONMLKJIHGFEDCBA9876543210
Kommentarer
-
isalnum(n)|n==95&&putchar(n)
- Där ’ s UB där. Du
skickade inte de nödvändiga argumenten.
putc
istället för putchar
. putc
förväntar sig också att en ström ska skrivas till, vilket du inte ’ passerade.Funktionen i sig fungerar bra (försök ta bort din putc
helt och det fungerar). 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
- Hur är det giltiga svaret? Ser ut som att det ’ bryter mot reglerna.
- @nicael vilken regel?
- ” Inbyggda konstanter som innehåller 9 eller fler av ovanstående tecken tillåts inte. ” … Saknar jag något uppenbart, @Leaky?
- Ja, att detta ’ inte använde några inbyggda konstanter.
- Okej, men det här är åtminstone konstigt. Definitivt OP frågar inte ’ dig att kopiera och klistra in sekvensen så att ’ inte är intressant.
Svar
Python 3, 58 byte
print("_",*filter(str.isalnum,map(chr,range(123))),sep="")
Ett fullständigt program som skrivs ut till STDOUT.
Utgången är: _0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Så fungerar 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
Om strängkonstanter tillåts, skulle följande ha varit 45 byte:
from string import* print("_"+printable[:62])
Kommentarer
-
print('_'+*filter(str.isalnum,map(chr,range(123))))
- @LeakyNun Det ger ett syntaxfel. Jag tänkte göra något liknande med
print('_',*filter(str.isalnum,map(chr,range(123))))
, men det skriver ut separata mellanslag; OP sa i kommentarerna att ’ … inga mellanslag är tillåtna i utgången alls ’. - Python 2 kan spara en byte med denna metod:
print''.join(filter(str.isalnum,map(chr,range(123)))),'_'
Svar
Mitt första försö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+"":"");}
Tack så mycket till aloisdg, AstroDan, Leaky Nun och Kevin Lau – inte Kenny för all hjälp i kommentarer.
Kommentarer
- Välkommen till PPCG! Ta gärna bort allt utrymme! Kolla även Tips för golf i C # för några tips.
- Bra – sparade mig 2 byte mer. Jag ’ börjar verkligen gilla den här kodegolfen 🙂
- AFAIK,
\w
regex-klassen täcker alfanumeriken och även_
, vilket skulle göra"\\w"
tillräckligt giltigt för din regex-matchningsfunktion. - Din kod ska vara en funktion eller ett fullständigt program inte ett uttalande. Använd också .NetFiddle för att dela en demonstration av din kod 🙂
- ” C # isn ’ t det bästa att codegolf ” Jag tycker att C # är tillräckligt kul för att koda golf. Jag tycker att det är ett fantastiskt vanligt språk att leka med. Om du är här för att vinna kommer du att förlora. Definiera ditt mål som att lära dig och ha en bra tid så vinner du alla gånger.
Svar
Svar
Objekt Pascal, 85 83 73 byte
Enkelt objekt pascal med en uppsättning tecken. Att skriva ett fullständigt program istället för en procedur rakar två byte. Att ta bort programnyckelordet rakar ytterligare 10 byte.
var c:char;begin for c in["a".."z","A".."Z","0".."9","_"]do write(c);end.
Kommentarer
- Jag har alltid varit och kommer förmodligen att göra det alltid förväxlas av den exakta klassificeringen av Object Pascal. Turbo / Borland Pascal och FreePascal är verkligen glada utan det värdelösa
program
nyckelordet. - @manatwork Jag ’ t vet att. Konstigt nog gör det nu pascal konkurrenskraftigt här …
- Språket jag växte upp med. Jag vet att det ännu inte är dött …
- @rexkogitans Ja, jag lärde mig det i skolan, men kan ’ inte komma ihåg någonting från den tiden … Jag ’ spelar med lite programmering igen nu
Svar
bash – 47 37 byte
man sh|egrep -o \\w|sort -u|tr -d \\n
Utdata på mitt system är:
_0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
Tack till Digital Trauma för hjälpsamma förslag.
På vissa system kan du kanske använda ascii
istället för man sh
för att spara en byte.
Kommentarer
-
man sh|egrep -io _\|\\w|sort -u|tr -d \\n
- @DigitalTrauma Tack!Experimenterade och fick reda på att
\w
matchar_
och är redan skiftlägeskänslig, så det kan förkortas ännu mer. -
env
istället förman sh
borde fungera i de flesta miljöer. Det gör det på mitt.$ env|egrep -o \\w|sort -u|tr -d \\n
– >0123456789ABCDEFGHIKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
. - Där ’ s no
J
. My bad.
Svar
PHP, 40 byte
_0<?for(;$a++^9?$a^q:$a=A;)echo" $a"|$a;
Kommentarer
- +1 för excellens. Sidanot: PHP 7.2 ger varningar som nämner att framtida versioner kommer att kasta fel för odefinierade konstanter. 🙁
Svar
Retina , 30 19 16 15 12 byte
Jag ändrade min originalalfabetförsök för den senaste versionen. Varje tecken skrivs ut i en slinga.
Den första raden är tom.
; +T\`;w`w_
Utgång:
_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Tack till Leaky Nun för att ha spelat 4 byte i mitt senaste försök.
Kommentarer
- I ’ d säger att
w
räknas som en konstant som innehåller 9 eller fler av de tecken som krävs. Du ’ kommer förmodligen att expandera höger sida och ersättaw
till vänster moto
. Även om du en spara en byte genom att användaEO
istället förd
eftersom de bara innehåller 5 tecken vardera. - @ mbomb007
w
inuti transliterationsfasen har inget att göra regex. Det ’ är en stenografi som expanderar till en lista över de 63 tecken som krävs. Åtminstone frågar jag ’ orlp om detta fall specifikt, eftersom det ’ skiljer sig ganska från att använda\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 kortare:
8W:'\w'XX
- @DrGreenEggsandIronMan Tack! Men jag tror att nya rader inte är tillåtna som separatorer. Utmaningen säger ” en sträng av de alfanumeriska tecknen plus understrykning … och inte mer ”
- Så varför kunde inte ’ du gör
8W:'\w'XX!
som jag försökte men fungerar inte ’ t - @ DrGreenEggsandIronMan Mycket bra fråga! Låt mig svara dig i chatten så att jag kan använda lite fler tecken
Svara
Brachylog , 25 byte
"_"w9yrcw"A":"Z"ycL@l:Lcw
Detta skriver ut följande till STDOUT
:
_9876543210abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
Förklaring
"_"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
- @user Inbyggda konstanter som innehåller 9 eller fler av ovanstående tecken tillåts inte.
Svar
Pyth, 13 12 byte
s:#"\w"0rk\|
Hitta alla tecken i U + 0000 till U + 007B som matchar regex /\w/
.
O matar ut 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
.
alternativ strategi: 15 byte
ssrMc4"0:A[a{_`
genererar i princip de halva inkluderande områden som krävs: 0-:, A-[, a-{, _-`
.
Svar
CJam , 15 14 11 byte
4 byte av tack vare @FryAmTheEggman och @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
Om jag kunde ha kommenterat måste jag förbättra andras svar. Men eftersom jag inte kan, kan jag lika gärna lägga upp min egen. När jag började skriva var den lägsta BF en 96 lång.
Svar
F #, 50 59 byte
Seq.iter(printf"%c"<<char)(95::[48..57]@[65..90]@[97..122])
Utdata:
_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Redigera: missade siffrorna första gången
Edit2, inspirerad av denna Haskell-lösning , detta F # utdrag är 67 byte.
Seq.zip"aA0_""zZ9_"|>Seq.iter(fun(x,y)->Seq.iter(printf"%c")[x..y])
Utdata:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_
Svar
Hexagony, 33
"A}_8_47<=">({a/[email protected]!\356);");
Utökat:
" A } _ 8 _ 4 7 < = " > ( { a / _ x . @ . 9 ! \ 3 5 6 ) ; " ) ; . . . .
Output:
aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ1203568479_
Observera att det finns ett otryckbart tecken 0x1A
som första byte i programmet. Detta gör också att den första raden i den utökade Hexagon ser lite av. Stort tack till Martin för visar mig detta trick, liksom för att föreslå algoritmen för utskrift t alfabetet!
Detta skriver ut alfabetet genom att lagra a
och A
på två kanter av en sexkant och siffran 26 på kanten av hexagonen som berör fogen mellan bokstäverna. Detta ser ungefär så här ut:
A \ / a | 26
Sedan går det in i öglor som skriver ut bokstäverna och sedan ökar dem och sedan minskar antalet. Efter en iteration skulle vi ha:
B \ / b | 25
Och så vidare. Den linjära koden för initialiseringen är: 0x1A " A } a
. Linjärkoden för slingorna utanför kontrollflödesändringarna är: ; ) " ; ) { ( " =
.
När räknaren når noll följer vi en annan väg för att skriva ut siffrorna och en understryka. Linjärt skrivs ut är detta: x 3 5 6 8 4 7 9 ! ; { @
. Detta ersätter det aktuella minneskantens värde med siffran 1203568479 (notera att x
”s ASCII-kod är 120), som innehåller alla decimalsiffrorna. Vi skriver ut detta nummer och sedan använder vi en snygg funktion i Hexagony: vi skriver ut numret mod 256 som ett ASCII-tecken. Det här är bara 95 eller understryker.
Svar
Brainfuck, 114 103 98 90 76 71 byte
Ytterligare en trivial (nu ej -trivial) -lösning, men den här gången är BF!
Sparade 14 (!) byte tack vare @primo.
Sparade ytterligare 4 byte tack vare @primos förslag att generera räckvidd bakåt, och jag sparade ytterligare en genom att öka innan jag skrev ut för små bokstäver.
Ny (upprepning 4, 71):
+[--[<+++++++>->+<]>-]<<+++<--<-<-----<++++.+>>>[-<<.+<+.>>>]>[-<<.+>>]
Gammal (värden, 114):
-[----->+<]>--->++++++++++>--[----->+<]>-------.++>----[---->+<]>++>++++[->++++++<]>++[-<<.+<<.+>>>>]<<<<<<[-<.+>]
Gammal (upprepning 1, 103):
++++++++++[[<+>->+<]>+++++++++++++++]<<[<]>>+>++++++++>>----->>-----.++<<<<<[->>>.+>>.+<<<<<]<[->>.+<<]
Gammal (upprepning 2, 90):
+++++++[[<+>->+<]>>+++[-<+++++++>]<]<<[<]>+++>-->->----->++++.++<<<[->>.+>.+<<<]<[->>.+<<]
Gammal (upprepning 3, 76):
+[[<+++++++>->+<]>+++]<<[<]>+++>-->->----->++++.++<<<[->>.+>.+<<<]<[->>.+<<]
Antar 8-bitars omslagsceller och omslagsminne. Jag använde Prova online .
Alla skriv ut _AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789
Först initialiserar denna del
+[--[<+++++++>->+<]>-]<<
bandet med dessa värden
[91, 70, 49, 21, 7] ^
Detta fungerar eftersom den återkommande relation som jag modellerade i grund och botten är f(x) = 7 * (3 * x + 1)
, bakåt. Se @primo ”s Hello, World! Answer för en förklaring av vad en återkommande relation är.
Då är det ganska enkelt för att ändra dessa värden till användbara. (och skriv ut understrykningen)
Code: +++<--<-<-----<++++.+ Tape: [96, 65, 48, 26, 10] ^
De enkla slingorna använder sedan värdena för att skriva ut resten av tecknen. Jag sparar 1 byte genom att ha ett steg innan utskriften.
>>>[-<<.+<+.>>>]>[-<<.+>>]
Jag måste verkligen hitta en kortare sekvensgeneration.
Jag hittade en återkommande relation som verkar fungera bra, men det kan finnas en kortare w / mindre jakt och plockning.
Jag använde en linjär regressionsräknare för att hitta vad som borde vara den kortast möjliga linjära upprepningsrelationen, så jag borde antagligen hitta någon annan formel om jag vill förbättra.
@primo förbättrade verkligen upprepningsrelationen mycket, tack.
Kommentarer
- Vad sägs om en bakåtkonstruktion?
+[--[<+++++++>->+<]>-]
- @primo Wow! Hur fungerar det?
- 3 är ojämn så det går hela 256 gånger. Genom att sluta med
>-]
kan du vara säker på att den sista termen blir 1 (x7). Egentligen bör du förmodligen börja med-
, det slutar mycket snabbare.
Svar
Sesos , 17 byte
00000000: a854be 2cbc9e 71d597 14bc56 1ad99e 713b .T.,..q....V...q;
Utdata
0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz_
Prova online! Kontrollera Felsök för att se den genererade binära koden.
Hur det fungerar
Den binära filen ovan har genererats genom att samla följande SASM-kod.
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, jag var på väg att lägga upp en lösning som liknar din .
- Både sinnen tycker bra !!! Båda programmen är 17 byte långa nu.
- @Dennis Ah, TIO-cachen kan ibland vara förvirrande ibland.
A,'[,_el^'_