Napište program nebo funkci, která vytiskne nebo vrátí řetězec alfanumerických znaků a podtržítka, v libovolném pořadí . Abychom byli přesní, je třeba zadat následující znaky, a ne více :

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_ 

Při tisku do standardního výstupu je povolen volitelný koncový nový řádek po výstupu.

Integrované konstanty, které obsahují 9 nebo více z výše uvedených znaků není povoleno.


Vyhrává nejkratší kód v bajtech.

Toto je velmi jednoduchá výzva, o které si myslím, že vygeneruje několik zajímavých odpovědí.


Výsledkové tabulky

Zde je Stack Snippet, který vygeneruje jak pravidelnou výsledkovou tabulku, tak přehled výherců podle jazyka.

Abyste se ujistili, že se vaše odpověď objeví, začněte svou odpověď nadpisem pomocí následující šablony Markdown:

# Language Name, N bytes 

kde N je velikost vašeho příspěvku. Pokud své skóre zlepšíte, můžete ponechat staré skóre v nadpisu přeškrtnutím. Například:

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

Pokud tam chcete do záhlaví zahrnout více čísel (např. Protože vaše skóre je součet dvou souborů nebo chcete vypsat tlumočníka) samostatně), ujistěte se, že skutečné skóre je poslední číslo v záhlaví:

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

Můžete také vytvořit název jazyka odkaz, který se poté zobrazí ve fragmentu výsledkové tabulky:

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

Komentáře

Odpovědět

Konvexní, 9 bajtů

Nová metoda! Také jsem si uvědomil, že je to do značné míry stejné jako odpověď Luise, ale v konvexní podobě, ale přišel jsem s tím samostatně.

"{,®\W"Oò 

Vyzkoušejte online!

Vysvětlení:

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

Staré řešení, 10 bajtů :

A,"[,_¬^"_ 

Vyzkoušejte online!

Vysvětlení:

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

Komentáře

  • @ mbomb007 Ano, je to ekvivalentní kódu CJam A,'[,_el^'_
  • O jaké kódování jde?
  • @ CᴏɴᴏʀO ‚ Bʀɪᴇɴ CP-1252 nebo Windows-1252

Odpověď

Rubín, 26 bajtů

Znaky lze tisknout v libovolném pořadí? nevadí, pokud ano!

Zkuste to online!

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

Odpověď

Perl, 20 bajtů

Vyžaduje -E bez dalších nákladů .

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

Takže moje původní odpověď (níže) byla trochu nudná . Jediná věc, se kterou se mi podařilo přijít, je výše uvedená, která je úplně stejná, ale vypadá trochu matoucí … Je to do značné míry přesně stejné jako níže:

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

Líbí se mi @ msh210 „s návrhy v komentářích, ale jsou příliš dlouhé!

Komentáře

  • +1. O něco zajímavější, ale delší je některý z nich , všech 27 bajtů: say grep/\w/,map chr,1..122 || say map{chr=~/\w/;$&}1..122 || say map{chr=~s/\W//r}1..122
  • @ msh210 Stále to ‚ nelze zmenšit … Spravoval jsem však 25: say chr=~/\w/g for 1..255

Odpověď

Cheddar, 31 27 bajtů

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

Toto dobře ukazuje operátor @"

Nedokončeno, protože jsem se konečně dostal k opravě @" operátor. To byla chyba generoval rozsah Cheddar, nikoli rozsah JS, takže nemohl správně fungovat


Vysvětlení

Operátor @" byl navržený @ CᴏɴᴏʀO „Bʀɪᴇɴ, a to, co dělá, je generování rozsahu řetězců od LHS po RHS.Je-li použit jako unární operátor, vrací znak v daném bodě kódu (například python „s chr)

Ungolfed

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

odpověď

brainfuck, 58 bajtů

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

Vyzkoušejte online .

Inicializuje pásku na 3 · 2 n a funguje odtud.

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

odpověď

JavaScript (ES6), 62 bytů

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

Vrátí 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz, takže pouze o 6 bajtů kratší než funkce, která vrací řetězcový literál. Ano, je naštve.

Komentáře

  • Můžete zkusit najít řetězec, pro který btoa vrací požadovaný výstup.
  • @gcampbell 60! Vyhledávání (60 faktoriálních) řetězců může nějakou dobu trvat …
  • Můžete použít atob.
  • @gcampbell musím nějakým způsobem vyloučit nereprezentovatelné řetězce.
  • @gcampbell Ukázalo se, že verze btoa stejně trvá 62 bytů: 45 pro kódování 60 alfanumerických znaků, 3 nekódované znaky (včetně _) a 14 pro _=>atob("")+"".

odpověď

Haskell, 38 let bajty

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

Zde není co vysvětlovat.

Komentáře

  • otázka: jaký je ‚ rozdíl mezi : a ++?
  • @Downgoat: ++ vezme dva řetězce a zřetězí je. : vezme znak a řetězec a umístí znak před řetězec. "_"++['a'..'z']... také funguje, ale je o jeden bajt delší.

Odpověď

PowerShell v3 +, 35 33 bajtů

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

Vytvoří dynamické pole 1..127 , vrhá to jako char pole. To je přiváděno do -match operátoru pracujícího na regex \w, který vrátí všechny prvky, které se shodují (tj. Přesně alfanumerické a podtržítko ). Tyto prvky pole zapouzdříme do -join, abychom je spojili do jednoho řetězce. To, co zbylo na kanálu a výstupu, je implicitní.

Komentáře

  • Hej, to ‚ není fér. Moje vlastní řešení je identické, až na to, že jsem začal v 0
  • @Joey Musím jít rychle. : D
  • Myslím, že zvláště pro triviální a zřejmá řešení 😉

Odpověď

V, 27 bajtů

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

Vyzkoušejte to online!

Tato odpověď je příšerně spletitá. Vysvětlení zveřejním později.

Hexdump:

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

Vysvětlení:

Čitelné:

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. 

Komentáře

  • : D: D: D Cheddar je svázán s golfovým jazykem!

Odpověď

J, 30 29 28 bajtů

Uložen bajt díky náhodě!

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

Výstup:

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

Vysvětlení

Nebudu poskytovat vysvětlení per se , ale poskytnu průběžné výsledky.

 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 

Odpověď

Haskell, 31 bajtů

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

Výraz zip "aA0_" "zZ9_" poskytuje seznam koncových bodů [("a","z"),("A","Z"),("0","9"),("_","_")]. div id = „77c0d2706f“>

notace vezme každou (x,y) do inkluzivního \(x,y)->[x..y] a spojí výsledek s. Děkujeme Andersovi Kaseorgovi za dva bajty s do místo >>=.

Porovnat s alternativami:

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

Komentáře

  • do zápis uloží dva bajty: do(x,y)<-zip"aA0_""zZ9_";[x..y]

odpověď

C, 50 bajtů

Volejte f() bez jakýchkoli argumentů.

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

Tisk

zyxwvutsrqponmlkjihgfedcba_ZYXWVUTSRQPONMLKJIHGFEDCBA9876543210 

Komentáře

  • isalnum(n)|n==95&&putchar(n)
  • Tam ‚ je zde UB. Nepředali jste ‚ požadované argumenty.
  • @orlp – místo iv id = jste použili putc „637c69bd7c“>

. putc očekává, že bude zapisovat také stream, který jste ‚ neprojeli.Samotná funkce funguje dobře (zkuste odstranit putc a funguje).

  • @owacoder Jejda!
  • @QPaysTaxes že ‚ se mýlí. If the number of arguments does not equal the number of parameters, the behavior is undefined. 6.5.2.2/6, viz N1570 .
  • Odpověď

    /// , 63 bajtů

    abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_ 

    Komentáře

    • Jaká je platná odpověď? Vypadá to, že ‚ porušuje pravidla.
    • @nicael které pravidlo?
    • “ Integrované konstanty, které obsahují 9 nebo více výše uvedených znaků, jsou zakázány. “ … Chybí mi něco zřejmého, @Leaky?
    • Ano, že to ‚ nepoužívá žádné integrované konstanty.
    • Dobře, ale to je přinejmenším divné. OP rozhodně nepožaduje ‚, abyste sekvenci zkopírovali a vložili, což ‚ není zajímavé.

    Odpověď

    Python 3, 58 bajtů

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

    Celý program který se vytiskne na STDOUT.

    Výstup je: _0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

    Jak to funguje

    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 

    Vyzkoušejte to na Ideone

    Pokud by byly povoleny konstantní řetězce, následující by byly 45 bajtů:

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

    Komentáře

    • print('_'+*filter(str.isalnum,map(chr,range(123))))
    • @LeakyNun To způsobí chybu syntaxe. Přemýšlel jsem o tom udělat něco podobného s print('_',*filter(str.isalnum,map(chr,range(123)))), ale to vytiskne oddělující mezery; OP uvedl v komentářích, že ‚ … ve výstupu nejsou povoleny žádné mezery ‚.
    • Python 2 může pomocí tohoto přístupu uložit jeden bajt: print''.join(filter(str.isalnum,map(chr,range(123)))),'_'

    Odpovědět

    Můj první pokus o 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+"":"");} 

    Mnohokrát děkujeme aloisdg, AstroDan, Leaky Nun a Kevinovi Lau – ne Kennymu za veškerou pomoc v komentářích.

    Komentáře

    • Vítejte v PPCG! Nebojte se odstranit celý prostor! Podívejte se také na Tipy pro golf v C # , kde najdete několik tipů.
    • Skvělé – ušetřil mi o 2 bajty více. ‚ Tento kódový hráč se mi opravdu líbí 🙂
    • AFAIK, třída \w regex pokrývá alfanumeriku a také _, díky čemuž by měl být "\\w" dostatečně platný pro funkci shody regexu.
    • Váš kód by měl být funkcí nebo celý program není prohlášení. Použijte také .NetFiddle ke sdílení ukázky svého kódu 🙂
    • “ C # isn ‚ není nejlepší codegolf “ C # mi připadá dost zábavný na kódování golfu. Myslím, že je to skvělý mainstreamový jazyk, se kterým se dá hrát. Pokud jste zde, abyste vyhráli, prohrajete. Definujte svůj cíl jako učení a zábavu a vždy vyhrajete.

    Odpověď

    Čistá bash, 32

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

    Ideone .

    Odpověď

    Object Pascal, 85 83 73 bajtů

    Prostý pascal prostého objektu pomocí sady znaků. Zápis celého programu místo procedury oholí 2 bajty. Odstranění programového klíčového slova oholí dalších 10 bajtů.

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

    Komentáře

    • Vždy jsem byl a pravděpodobně i budu být vždy zmateni přesnou klasifikací Object Pascal. Turbo / Borland Pascal a FreePascal jsou určitě šťastní bez zbytečného klíčového slova program.
    • @manatwork ‚ t vím, že. Kupodivu to teď dělá pascalu konkurenceschopným …
    • Jazyk, ve kterém jsem vyrostl. Vím, že ještě není mrtvý …
    • @rexkogitans Ano, naučil jsem se to ve škole, ale ‚ si z té doby nic nepamatuji … ‚ hraji znovu s nějakým programováním

    odpověď

    bash – 47 37 bajtů

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

    Výstup v mém systému je:

    _0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ 

    Díky Digital Trauma za užitečné návrhy.

    Na některých systémech můžete místo iv id = „použít ascii 885696af20 „>

    k uložení bajtu.

    Komentáře

    • man sh|egrep -io _\|\\w|sort -u|tr -d \\n
    • @DigitalTrauma Děkuji!Experimentováno a zjištěno, že \w odpovídá _ a již v něm nejsou velká a malá písmena, takže by se mohl ještě zkrátit.
    • env místo man sh by mělo fungovat ve většině prostředí. Dělá to na mém. $ env|egrep -o \\w|sort -u|tr -d \\n – > 0123456789ABCDEFGHIKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz.
    • Tam ‚ s ne J. Můj špatný.

    Odpověď

    PHP, 40 bajtů

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

    Online ukázka .

    Komentáře

    • +1 pro dokonalost. Boční poznámka: PHP 7.2 přináší varování, že budoucí verze budou házet chyby pro nedefinované konstanty. 🙁

    Odpověď

    Retina , 30 19 16 15 12 bajtů

    Upravil jsem svůj pokus o původní abecedu pro tuto nejnovější verzi. Každý znak je vytištěn ve smyčce.

    První řádek je prázdný.

     ; +T\`;w`w_

    Vyzkoušejte online

    Výstup:

    _0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 

    Díky Leaky Nun za golf o 4 bajty z mého posledního pokusu.

    Komentáře

    • I ‚ d řekněme, že w se počítá jako konstanta obsahující 9 nebo více požadovaných znaků. ‚ pravděpodobně budete muset rozbalit pravou stranu a nahradit w nalevo znakem o. uložit bajt pomocí EO namísto d, protože každý obsahuje pouze 5 znaků.
    • @ mbomb007 w uvnitř fáze přepisu nemá co dělat s regulárním výrazem. Je to ‚ zkratka, která se rozbalí na seznam požadovaných 63 znaků. Alespoň se ‚ d konkrétně zeptám orlp na tento případ, protože ‚ se zcela liší od použití \w v regexu.

    Odpověď

    MATL , 11 bytes

    7W:"\W"[]YX 

    Vyzkoušejte to online!

    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 

    Komentáře

    • o 2 bajty kratší: 8W:'\w'XX
    • @DrGreenEggsandIronMan Díky! Ale myslím, že nové řádky nejsou povoleny jako oddělovače. Výzva říká “ řetězec alfanumerických znaků plus podtržítko … a nic víc “
    • tak proč nemohl ‚ t 8W:'\w'XX! který jsem zkoušel, ale ‚ nefunguje
    • @DrGreenEggsandIronMan Velmi dobrá otázka! Dovolte mi odpovědět vám v chatu , abych mohl použít trochu více znaků

    Odpovědět

    Brachylog , 25 bajtů

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

    Tím se do STDOUT vytiskne následující:

    _9876543210abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 

    Vysvětlení

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

    Odpověď

    Dyalog APL , 18 bajtů

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

    tisk:

    0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz 

    Komentáře

    • @user Integrované konstanty, které obsahují 9 nebo více výše uvedených znaků, jsou zakázány.

    Odpověď

    Pyth, 13 12 bajtů

    s:#"\w"0rk\| 

    Zkuste to online!

    Vyhledá všechny znaky v U + 0000 až U + 007B, které odpovídají regulárnímu výrazu /\w/.

    O utputs 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz.

    alternativní přístup: 15 bajtů

    ssrMc4"0:A[a{_` 

    Vyzkoušejte online!

    v zásadě generuje požadované poloviční rozsahy: 0-:, A-[, a-{, _-`.

    Odpověď

    CJam , 15 14 11 bajtů

    4 bajty off díky @FryAmTheEggman a @Dennis!

    A,"[,_el^"_ 

    Vyzkoušejte to online!

    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 

    Odpověď

    Brainfuck, 89 bajtů

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

    Vyzkoušejte to zde

    Podrobnosti:

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

    Pokud bych mohl komentovat, musel bych vylepšit odpovědi ostatních. Ale protože nemůžu, mohl bych také zveřejnit svůj vlastní. Když jsem začal psát toto, nejnižší BF bylo 96 dlouhé.

    Odpovědět

    F #, 50 59 bajtů

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

    Výstup:

    _0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 

    Upravit: Poprvé zmeškané číslice.

    Edit2, inspirováno tímto řešením Haskell , tento fragment F # je 67 bajtů.

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

    Výstup:

    abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_ 

    Odpověď

    Hexagony, 33

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

    Rozšířeno:

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

    Výstup:

    aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ1203568479_ 

    Vyzkoušejte to online!

    Všimněte si, že jako první bajt programu existuje netisknutelný znak 0x1A. Díky tomu bude první řádek rozšířeného Hexagonu vypadat trochu jinak. Mnohokrát děkuji Martinovi za ukázat mi tento trik, stejně jako navrhnout algoritmus pro tisk t Abeceda!

    Toto vytiskne abecedu uložením a a A na dva okraje šestiúhelníku a číslo 26 na okraji šestiúhelníku, který se dotýká spoje mezi písmeny. Vypadá to asi takto:

    A \ / a | 26 

    Potom zadá smyčky, které vytisknou písmena a poté je zvýší a poté sníží číslo. Po jedné iteraci bychom měli:

    B \ / b | 25 

    A tak dále. Lineární kód pro inicializaci je: 0x1A " A } a. Lineární kód pro smyčky mimo změny toku řízení je: ; ) " ; ) { ( " =.

    Jakmile čítač dosáhne nuly, použijeme jinou cestu k vytištění čísel a podtržítko. Napsáno lineárně toto je: x 3 5 6 8 4 7 9 ! ; { @. Tím se nahradí aktuální hodnota okraje paměti číslem 1203568479 (kód ASCII x je 120), který obsahuje všechny desetinné číslice. Vytiskneme toto číslo a poté použijeme elegantní funkci Hexagony: vytiskneme číselný režim 256 jako znak ASCII. Stává se to jen 95 nebo podtržítko.

    Odpovědět

    Brainfuck, 114 103 98 90 76 71 bajtů

    Další triviální (nyní ne -triviální) řešení, ale tentokrát je to BF!

    Uloženo 14 (!) bytů díky @primo.

    Uloženo dalších 4 bytů díky návrhu @primo ke generování rozsah zpět a já jsem uložil další zvýšením před tiskem malých písmen.

    Nové (opakování 4, 71):

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

    Staré (hodnoty, 114):

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

    Staré (opakování 1, 103):

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

    Staré (opakování 2, 90):

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

    Staré (opakování 3, 76):

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

    Předpokládá 8bitové zalamovací buňky a zalamovací paměť. Použil jsem Vyzkoušet online .

    Všechny vytisknout _AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789

    Nejprve tato část

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

    inicializuje pásku s těmito hodnoty

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

    Funguje to, protože relace opakování, kterou jsem v podstatě modeloval, je f(x) = 7 * (3 * x + 1), vzad. Vysvětlení, co je to relace opakování, najdete v @primo „s Hello, World! Answer .

    Potom je to docela jednoduché změnit tyto hodnoty na užitečné. (a vytiskne podtržítko)

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

    Potom jednoduché smyčky použijí hodnoty k tisku zbývajících znaků. Ušetřím 1 bajt tím, že mám před tiskem přírůstek.

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

    Opravdu potřebuji najít kratší generaci sekvence.

    Našel jsem relaci opakování, která, jak se zdá, funguje dobře, ale může existovat kratší s méně lovem a pokukováním.

    Použil jsem kalkulačku lineární regrese najít, co by mělo být co nejkratší lineární relací opakování, tak bych asi měl najít nějaký jiný vzorec, pokud chci zlepšit.

    @primo opravdu hodně vylepšil relaci opakování, díky.

    Komentáře

    • Co takhle zpětná konstrukce? +[--[<+++++++>->+<]>-]
    • @primo Páni! Jak to funguje?
    • 3 je nerovnoměrný, takže se smyčka bude plnit 256krát. Koncovkou >-] si můžete být jisti, že konečný termín bude 1 (x7). Ve skutečnosti byste pravděpodobně měli začít s -, končí mnohem rychleji.

    Odpověď

    Sesos , 17 bajty

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

    výstup

    0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz_ 

    Vyzkoušejte to online! Zkontrolujte Debug a podívejte se na vygenerovaný binární kód.

    Jak to funguje

    Byl vygenerován výše uvedený binární soubor sestavením následujícího kódu SASM.

     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.  

    Komentáře

    • Páni, chystal jsem se zveřejnit řešení velmi podobné tomu vašemu .
    • Podobná mysl myslí skvěle !
    • @LeakyNun Hm, trochu pozdě, ale vypadá to, že ten váš je o 3 bajty kratší …
    • @EriktheOutgolfer Sesos býval kódován méně efektivním způsobem. Oba programy mají nyní 17 bajtů.
    • @ Dennis Ah, no, mezipaměť TIO může být občas matoucí.

    Napsat komentář

    Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *