Escreva um programa ou função que imprima ou retorne uma sequência de caracteres alfanuméricos mais o sublinhado em qualquer ordem . Para ser preciso, os seguintes caracteres precisam ser produzidos, e não mais :

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_ 

Ao imprimir em stdout, uma nova linha final opcional após sua saída é permitida.

Constantes integradas que contêm 9 ou mais dos caracteres acima não são permitidos.


O código mais curto em bytes ganha.

Este é um desafio muito simples, que acredito que irá gerar algumas respostas interessantes.


Placares

Aqui está um fragmento de pilha para gerar um placar regular e uma visão geral dos vencedores por idioma.

Para garantir que sua resposta seja exibida, inicie-a com um título, usando o seguinte modelo Markdown:

# Language Name, N bytes 

onde N é o tamanho do seu envio. Se você melhorar sua pontuação, pode manter as pontuações antigas no título, riscando-as. Por exemplo:

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

Se você quiser incluir vários números em seu cabeçalho (por exemplo, porque sua pontuação é a soma de dois arquivos ou você deseja listar o intérprete sinalizar penalidades separadamente), certifique-se de que a pontuação real seja o último número no cabeçalho:

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

Você também pode fazer o language name um link que aparecerá no snippet do placar:

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

Comentários

Resposta

Convexo, 9 bytes

Novo método! Além disso, percebi que é exatamente a mesma resposta do Luis “, mas no Convexo, mas eu vim com isso de forma independente.

"{,®\W"Oò 

Experimente online!

Explicação:

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

Solução antiga, 10 bytes :

A,"[,_¬^"_ 

Experimente online!

Explicação:

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

Comentários

  • @ mbomb007 Sim, é equivalente ao código CJam A,'[,_el^'_
  • Que codificação é essa?
  • @ CᴏɴᴏʀO ' Bʀɪᴇɴ CP-1252 ou Windows-1252

Resposta

Ruby, 26 bytes

Os caracteres podem ser impressos em qualquer ordem? Não importa se eu fizer isso!

Experimente online!

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

Resposta

Perl, 20 bytes

Requer -E sem custo extra .

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

Então, minha resposta original (abaixo) foi um pouco chata . A única coisa que consegui sugerir é o acima, que é exatamente o mesmo, mas parece um pouco mais confuso … É exatamente equivalente ao seguinte:

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

Eu gosto de @ msh210 “s sugestões nos comentários, mas eles são um pouco longos demais!

Comentários

  • +1. Um pouco mais interessante, mas mais longo é qualquer um desses , todos os 27 bytes: say grep/\w/,map chr,1..122 || say map{chr=~/\w/;$&}1..122 || say map{chr=~s/\W//r}1..122
  • @ msh210 Ainda pode ' encolher mais … Mas conseguiu 25: say chr=~/\w/g for 1..255

Resposta

Cheddar, 31 27 bytes

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

Isso mostra o @" operador bem

Não completando porque finalmente consegui consertar @". O bug era que estava gerando um intervalo de Cheddar, não um intervalo de JS, então não poderia funcionar corretamente


Explicação

O operador @" era projetado por @ CᴏɴᴏʀO “Bʀɪᴇɴ, e o que faz é gerar uma faixa de string de LHS a RHS.Quando usado como um operador unário, ele retorna o caractere no ponto de código fornecido (como python “s chr)

Ungolfed

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

Resposta

brainfuck, 58 bytes

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

Experimente online .

Inicializa o fita em 3 · 2 n e trabalha a partir daí.

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

Resposta

JavaScript (ES6), 62 bytes

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

Retorna 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz, portanto, apenas 6 bytes a menos do que uma função que retorna o literal de string. Sim, é uma merda.

Comentários

  • Você pode tentar encontrar uma string para a qual btoa retorna a saída necessária.
  • @gcampbell 60! (60 fatoriais) strings podem levar algum tempo para pesquisar …
  • Você poderia apenas usar atob.
  • @gcampbell eu tenho que exclua strings não representáveis de alguma forma.
  • @gcampbell Acontece que a versão btoa leva 62 bytes de qualquer maneira: 45 para codificar 60 alfanuméricos, 3 caracteres não codificados (incluindo _) e 14 para _=>atob("")+"".

Resposta

Haskell, 38 bytes

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

Nada a explicar aqui.

Comentários

  • pergunta: qual ' é a diferença entre : e ++?
  • @Downgoat: ++ pega duas strings e as concatena. : pega um caractere e uma string e coloca o caractere na frente da string. "_"++['a'..'z']... também funciona, mas é um byte a mais.

Resposta

PowerShell v3 +, 35 33 bytes

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

Constrói uma matriz dinâmica 1..127 , converte-o em uma matriz char. Isso é enviado ao operador -match trabalhando no regex \w, que retornará todos os elementos que correspondem (ou seja, exatamente alfanumérico e sublinhado ). Encapsulamos esses elementos da matriz em um -join para agrupá-los como uma string. Isso é deixado no pipeline e a saída é implícita.

Comentários

  • Ei, isso ' não é justo. Minha própria solução é idêntica, exceto que comecei em 0
  • @Joey Tenho que ir rápido. : D
  • Especialmente para as soluções triviais e óbvias, eu acho 😉

Resposta

V, 27 bytes

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

Experimente online!

Esta resposta é terrivelmente complicada. Postarei uma explicação mais tarde.

Hexdump:

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

Explicação:

Legível:

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. 

Comentários

  • : D: D: D Cheddar está empatado com uma língua de golfe!

Resposta

J, 30 29 28 bytes

Salvo um byte graças a randomra!

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

Resultado:

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

Explicação

Não vou fornecer uma explicação per se , mas fornecerei resultados intermediários.

 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 

Resposta

Haskell, 31 bytes

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

A expressão zip "aA0_" "zZ9_" fornece a lista de endpoints [("a","z"),("A","Z"),("0","9"),("_","_")]. div id = “77c0d2706f”>

a notação leva cada (x,y) ao \(x,y)->[x..y] inclusivo e concatena o resultado s. Agradecimentos a Anders Kaseorg pelos dois bytes com do em vez de >>=.

Compare com as alternativas:

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

Comentários

  • do a notação economiza dois bytes: do(x,y)<-zip"aA0_""zZ9_";[x..y]

Resposta

C, 50 bytes

Chame f() sem nenhum argumento.

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

Impressões

zyxwvutsrqponmlkjihgfedcba_ZYXWVUTSRQPONMLKJIHGFEDCBA9876543210 

Comentários

  • isalnum(n)|n==95&&putchar(n)
  • Há ' s UB lá. Você não ' passou os argumentos necessários.
  • @orlp – Você usou putc em vez de putchar. putc espera um fluxo para gravar também, o que você não ' passou.A função em si funciona bem (tente remover seus putc completamente e funciona).
  • @owacoder Oops!
  • @QPaysTaxes que ' está errado. If the number of arguments does not equal the number of parameters, the behavior is undefined. 6.5.2.2/6, consulte N1570 .

Resposta

/// , 63 bytes

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_ 

Comentários

  • Como é a resposta válida? Parece que ' está violando as regras.
  • @nicael, qual regra?
  • " Constantes incorporadas que contêm 9 ou mais dos caracteres acima não são permitidas. " … Estou perdendo algo óbvio, @Leaky?
  • Sim, que isto não ' usava nenhuma constante embutida.
  • Ok, mas isso é estranho, pelo menos. Definitivamente, o OP não ' pede que você copie e cole a sequência, isso ' não é interessante.

Resposta

Python 3, 58 bytes

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

Um programa completo que imprime em STDOUT.

O resultado é: _0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

Como funciona

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 

Experimente no Ideone

Se constantes de string fossem permitidas, o seguinte teria 45 bytes:

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

Comentários

  • print('_'+*filter(str.isalnum,map(chr,range(123))))
  • @LeakyNun Isso gera um erro de sintaxe. Pensei em fazer algo semelhante com print('_',*filter(str.isalnum,map(chr,range(123)))), mas isso imprime espaços separados; o OP disse nos comentários que ' … nenhum espaço é permitido na saída '.
  • Python 2 pode economizar um byte com esta abordagem: print''.join(filter(str.isalnum,map(chr,range(123)))),'_'

Resposta

Minha primeira tentativa de 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+"":"");} 

Muito obrigado a aloisdg, AstroDan, Leaky Nun e Kevin Lau – não Kenny por toda a ajuda nos comentários.

Comentários

  • Bem-vindo ao PPCG! Sinta-se à vontade para remover todo o espaço! Verifique também Dicas para jogar golfe em C # para obter algumas dicas.
  • Ótimo – economizei mais 2 bytes. Eu ' estou realmente começando a gostar deste codegolf 🙂
  • AFAIK, a \w classe regex cobre os alfanuméricos e também _, que deve tornar "\\w" válido o suficiente para a função de correspondência de regex.
  • Seu código deve ser uma função ou um programa completo, não uma declaração. Use também .NetFiddle para compartilhar uma demonstração de seu código 🙂
  • " C # isn ' o melhor para codegolf " Acho C # divertido o suficiente para codificar golfe. Eu acho que é uma ótima linguagem mainstream para brincar. Se você está aqui para vencer, você perderá. Defina seu objetivo como aprender e se divertir e você vai vencer todas as vezes.

Resposta

Pura bash, 32

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

Ideone .

Resposta

Object Pascal, 85 83 73 bytes

Apenas objeto simples pascal usando um conjunto de caracteres. Escrever um programa completo em vez de um procedimento corta 2 bytes. Remover a palavra-chave do programa corta mais 10 bytes.

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

Comentários

  • Eu sempre fui e provavelmente irei sempre ser confundido com a classificação exata de Object Pascal. Turbo / Borland Pascal e FreePascal certamente ficam felizes sem a palavra-chave program inútil.
  • @manatwork que eu não ' t sabe disso. Curiosamente, agora torna o pascal competitivo aqui …
  • A linguagem com a qual cresci. Eu sei que ainda não está morto …
  • @rexkogitans Sim, eu aprendi na escola, mas não consigo ' não me lembrar de nada daquela época … Eu ' estou brincando com alguma programação novamente

Resposta

bash – 47 37 bytes

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

A saída em meu sistema é:

_0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ 

Obrigado ao Digital Trauma pelas sugestões úteis.

Em alguns sistemas, você pode usar ascii em vez de man sh para salvar um byte.

Comentários

  • man sh|egrep -io _\|\\w|sort -u|tr -d \\n
  • @DigitalTrauma Obrigado!Experimentou e descobriu que \w corresponde a _ e já não faz distinção entre maiúsculas e minúsculas, então poderia reduzir ainda mais.
  • env em vez de man sh deve funcionar na maioria dos ambientes. Faz no meu. $ env|egrep -o \\w|sort -u|tr -d \\n – > 0123456789ABCDEFGHIKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz.
  • Lá ' s não J. Meu mal.

Resposta

PHP, 40 bytes

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

Demonstração online .

Comentários

  • +1 por excelência. Nota lateral: PHP 7.2 produz avisos mencionando que versões futuras irão lançar erros para constantes indefinidas. 🙁

Resposta

Retina , 30 19 16 15 12 bytes

Eu modifiquei meu tentativa de alfabeto original para esta versão mais recente. Cada caractere é impresso em um loop.

A primeira linha está vazia.

 ; +T\`;w`w_

Experimente online

Resultado:

_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 

Obrigado a Leaky Nun por jogar 4 bytes na minha última tentativa.

Comentários

  • I ' d dizer que w conta como uma constante contendo 9 ou mais dos caracteres obrigatórios. Você ' provavelmente terá que expandir o lado direito e substituir o w à esquerda por o. Embora você c salvar um byte usando EO em vez de d, pois eles contêm apenas 5 caracteres cada.
  • @ mbomb007 w dentro do estágio de transliteração não tem nada a ver com regex. É ' é uma abreviação que se expande para uma lista dos 63 caracteres necessários. Pelo menos eu ' d perguntaria ao orlp sobre este caso especificamente, já que ' é bastante diferente de usar \w em um regex.

Resposta

MATL , 11 bytes

7W:"\W"[]YX 

Experimente 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 

Comentários

  • 2 bytes mais curtos: 8W:'\w'XX
  • @DrGreenEggsandIronMan Obrigado! Mas acho que novas linhas não são permitidas como separadores. O desafio diz " uma string de caracteres alfanuméricos mais sublinhado … e não mais "
  • Então, por quê não poderia ' você fazer 8W:'\w'XX! o que eu tentei, mas não ' não funcionou
  • @DrGreenEggsandIronMan Muito boa pergunta! Deixe-me responder no bate-papo para que eu possa usar um pouco mais de caracteres

Resposta

Brachylog , 25 bytes

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

Isso imprime o seguinte em STDOUT:

_9876543210abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 

Explicação

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

Resposta

Dyalog APL , 18 bytes

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

impressões:

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz 

Comentários

  • @user Constantes integradas que contêm 9 ou mais dos caracteres acima não são permitidas.

Resposta

Pyth, 13 12 bytes

s:#"\w"0rk\| 

Experimente online!

Encontra todos os caracteres em U + 0000 a U + 007B que correspondem ao regex /\w/.

O utputs 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz.

abordagem alternativa: 15 bytes

ssrMc4"0:A[a{_` 

Experimente online!

basicamente gera os intervalos meio-inclusivos necessários: 0-:, A-[, a-{, _-`.

Resposta

CJam , 15 14 11 bytes

4 bytes de desconto graças a @FryAmTheEggman e @Dennis!

A,"[,_el^"_ 

Experimente 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 

Resposta

Brainfuck, 89 bytes

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

Experimente aqui

Detalhes:

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

Se eu pudesse comentar, teria que melhorar as respostas dos outros. Mas, como não posso, também posso postar meu próprio. Quando comecei a escrever este, o menor BF tinha 96 anos.

Resposta

F #, 50 59 bytes

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

Resultado:

_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 

Editar: errou os dígitos da primeira vez

Edit2, inspirado esta solução Haskell este fragmento F # é 67 bytes.

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

Resultado:

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_ 

Resposta

Hexagonia, 33

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

Expandido:

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

Resultado:

aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ1203568479_ 

Experimente online!

Observe que há um caractere não imprimível 0x1A como o primeiro byte do programa. Isso também faz com que a primeira linha do hexágono expandido pareça meio desligada. Muito obrigado a Martin por mostrando-me este truque, bem como sugerindo o algoritmo para imprimir t O alfabeto!

Isso imprime o alfabeto armazenando a e A nas duas arestas de um hexágono e o número 26 na borda do hexágono que toca a junta entre as letras. Isso se parece com isto:

A \ / a | 26 

Em seguida, ele entra em um loop que imprime as letras e as incrementa e, em seguida, diminui o número. Depois de uma iteração, teríamos:

B \ / b | 25 

E assim por diante. O código linear para a inicialização é: 0x1A " A } a. O código linear para os loops fora das mudanças de fluxo de controle é: ; ) " ; ) { ( " =.

Quando o contador chega a zero, seguimos um caminho diferente para imprimir os números e um sublinhado. Escrito linearmente é: x 3 5 6 8 4 7 9 ! ; { @. Isso substitui o valor atual da borda da memória “s pelo número 1203568479 (observe que o código ASCII de x” é 120), que contém todos os dígitos decimais. Imprimimos esse número e, em seguida, usamos um recurso bacana do Hexagony: imprimimos o número mod 256 como um caractere ASCII. Acontece que é 95 ou sublinhado.

Resposta

Brainfuck, 114 103 98 90 76 71 bytes

Outro trivial (agora não -trivial) solução, mas desta vez é BF!

Economizou 14 (!) bytes graças a @primo.

Economizou mais 4 bytes graças à sugestão de @primo para gerar o intervalo para trás, e salvei outro incrementando antes de imprimir para as letras minúsculas.

Novo (recorrência 4, 71):

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

Antigo (valores, 114):

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

Antigo (recorrência 1, 103):

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

Antigo (recorrência 2, 90):

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

Antigo (recorrência 3, 76):

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

Assume células de encapsulamento de 8 bits e memória de encapsulamento. Usei Experimente online .

Todos imprimem _AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789

Primeiro, esta parte

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

inicializa a fita com estes valores

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

Isso funciona porque a relação de recorrência que modelei basicamente é f(x) = 7 * (3 * x + 1), ao contrário. Veja @primo “s Olá, Mundo! Resposta para uma explicação do que é uma relação de recorrência.

Então, é bastante simples para alterar esses valores para valores úteis. (e imprimir o sublinhado)

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

Então, os loops simples usam os valores para imprimir o resto dos caracteres. Eu economizo 1 byte tendo um incremento antes da impressão.

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

Eu realmente preciso encontrar uma geração de sequência mais curta.

Encontrei uma relação de recorrência que parece funcionar bem, mas pode haver uma mais curta com menos caça e bicada.

Usei uma calculadora de regressão linear para descobrir qual deve ser a relação de recorrência linear mais curta possível, então provavelmente devo encontrar alguma outra fórmula se quiser melhorar.

@primo realmente melhorou muito a relação de recorrência, obrigado.

Comentários

  • Que tal uma construção ao contrário? +[--[<+++++++>->+<]>-]
  • @primo Uau! Como isso funciona?
  • 3 é irregular, por isso fará um loop total de 256 vezes. Ao terminar com >-], você pode ter certeza de que o termo final será 1 (x7). Na verdade, você provavelmente deve começar com -, ele termina muito mais rápido.

Resposta

Sesos , 17 bytes

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

Saída

0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz_ 

Experimente online! Verifique Debug para ver o código binário gerado.

Como funciona

O arquivo binário acima foi gerado montando o seguinte código 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.  

Comentários

  • Uau, eu estava prestes a postar uma solução muito semelhante à sua .
  • Mentes semelhantes pensam muito !
  • @LeakyNun Hm, meio tarde, mas parece que o seu é 3 bytes mais curto …
  • @EriktheOutgolfer Sesos costumava ser codificado de uma maneira menos eficiente. Os dois programas agora têm 17 bytes.
  • @Dennis Ah, bem, o cache TIO pode ser confuso às vezes.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *