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
- Komentáře nejsou určeny pro rozšířenou diskusi; tato konverzace byla přesunuta do chatu .
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ò
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,"[,_¬^"_
Vysvětlení:
A, 0-9 "[,_¬^ A-Za-z "_ _
Komentáře
Odpověď
Rubín, 26 bajtů
Znaky lze tisknout v libovolném pořadí? nevadí, pokud ano!
$><<(?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ů
+++[[<+>->++<]>]<<[-<->]<<-.+<<++[->>+.>+.<<<]<--[->>.+<<]
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@"Í×
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).
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
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ěď
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ístoman 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;
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_
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 nahraditw
nalevo znakemo
. uložit bajt pomocíEO
namístod
, 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
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\|
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{_`
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^"_
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ů
+++++++++[>+++++>+<<-]>+++.>[<+.>-]<+++++++>>+++++++++++++[<+<+.+.>>-]<<+++++.+>[<+.+.>-]
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_
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í.
A,'[,_el^'_